Similar presentations:
ООП 3
1.
СВОЙСТВА В СИ-ШАРП.АКСЕССОРЫ GET И SET.
АВТОМАТИЧЕСКИЕ СВОЙСТВА
2.
Свойство в Си-шарп – это член класса,который предоставляет удобный механизм
доступа к полю класса (чтение поля и запись).
Свойство представляет собой что-то среднее
между полем и методом класса. При
использовании свойства, мы обращаемся к
нему, как к полю класса, но на самом деле
компилятор преобразовывает это обращение к
вызову соответствующего неявного метода.
Такой метод называется аксессор (accessor).
Существует два таких метода: get (для
получения данных) и set (для записи).
3.
Объявление простого свойства имеетследующую структуру:
4.
ПРИМЕР:Имеется класс Студент, и в нем есть закрытое
поле курс, которое не может быть ниже
единицы и больше пяти. Для управления
доступом к этому полю будет использовано
свойство Year:
5.
6.
Проще говоря, в свойстве реализуются дваметода.
В теле аксессора get может быть более сложная
логика доступа, но в итоге должно
возвращаться значение поля, либо другое
значение с помощью оператора return.
В аксессоре set же присутствует неявный
параметр value, который содержит значение,
присваиваемое свойству (в примере выше, при
записи, значение value равно «0»).
7.
Если, например, мы бы просто сделалиполе year открытым и не использовали ни
методы, ни свойство для доступа, мы могли бы
записать в это поле любое значение, в том числе
и некорректное, а так мы можем
контролировать чтение и запись.
Для контроля доступа мы могли бы здесь
использовать простые методы, но для этого нам
бы пришлось реализовать два отдельных
метода, с разными именами, и при обращении к
ним необходимо использовать скобки, что
добавляет лишние неудобства. Вот как бы
выглядела та же программа с использованием
методов (на практике используйте свойства):
8.
9.
СВОЙСТВО ТАКЖЕ МОЖЕТ ПРЕДОСТАВЛЯТЬ ДОСТУП ТОЛЬКО НАЧТЕНИЕ ПОЛЯ ИЛИ ТОЛЬКО НА ЗАПИСЬ. ЕСЛИ, НАПРИМЕР, НАМ
НЕОБХОДИМО ЗАКРЫТЬ ДОСТУП НА ЗАПИСЬ, МЫ ПРОСТО НЕ
УКАЗЫВАЕМ АКСЕССОР SET. ПРИМЕР:
10.
Стоит помнить, что само свойство неопределяет место в памяти для хранения поля,
и, соответственно, необходимо отдельно
объявить поле, доступом к которому будет
управлять свойство.
11.
АВТОМАТИЧЕСКОЕ СВОЙСТВО– это очень простое свойство, которое, в
отличии от обычного свойства, уже определяет
место в памяти (создает неявное поле), но при
этом не позволяет создавать логику доступа.
Структура объявления Автоматического
свойства:
12.
У ТАКИХ СВОЙСТВ, У ИХ АКСЕССОРОВОТСУТСТВУЕТ ТЕЛО. ПРИМЕР
ИСПОЛЬЗОВАНИЯ:
13.
Автоматически реализуемые свойства естьсмысл использовать тогда, когда нет
необходимости накладывать какие-либо
ограничения на возможные значения неявного
поля свойства.
И тут у вас может возникнуть вопрос, а в чем
тогда разница между простыми открытыми
полями и автоматическими свойствами. У таких
свойств остается возможность делать их только
на чтение или только на запись. Для этого уже
используется модификатор доступа private
перед именем аксессора:
14.
ЗАДАНИЕСоздайте класс Телевизор, объявите в нем
поле громкость звука, для доступа к этому
полю реализуйте свойство. Громкость может
быть в диапазоне от 0 до 100.
15.
Создайте класс Здоровье, объявите в немполе температура, для доступа к этому полю
реализуйте свойство. Температура может быть
в диапазоне от 34 до 41.
Создайте класс Книга, объявите в нем поле год
выпуска, для доступа к этому полю реализуйте
свойство. Год выпуска может быть в диапазоне
от 1940 до 2020.