- •Основные положения объектно-ориентированного программирования. Технология объектно-ориентированного программирования: назначение и применение.
- •Основные парадигмы объектно-ориентированного программирования: абстракция.
- •Основные парадигмы объектно-ориентированного программирования: инкапсуляция. Доступ к элементам класса (public, protected, private).
- •Основные парадигмы объектно-ориентированного программирования: полиморфизм.
- •Пространство имен: назначение и применение.
- •Структура класса: члены класса, свойства (элементы), методы, конструкторы и деструкторы, ссылка на себя (this).
- •Управление доступом к членам класса.
- •Конструкторы класса: по умолчанию, с аргументами, копирующие.
- •Перегружаемые методы класса.
- •Статические члены класса: назначение и применение.
- •Константные члены класса: константные свойства, константные методы.
- •Обработка исключений (try/catch/throw-конструкция).
- •Вложенные объекты.
- •Вложенные классы.
- •Принципы преобразования типов.
- •Виртуальные функции.
- •Абстрактные классы.
- •Перегружаемые операторы: бинарные, унарные, префиксные, постфиксные.
- •Спецификация cli. Структура .Net Framework.
- •С#: пространства имен, структура класса, свойства.
Управление доступом к членам класса.
Хотя в действительности дело обстоит несколько сложнее, но по сути существуют
два базовых типа членов класса: открытые и закрытые. К открытому члену класса мо-
жет свободно получить доступ код, определенный вне этого класса. К закрытому же члену класса доступ могут
получить методы, определенные только в этом классе. Благодаря использованию за-
крытых членов класса мы и имеем возможность управлять доступом.
Ограничение доступа к членам класса — это фундаментальная часть объектно-
ориентированного программирования, поскольку она предотвращает неверное ис-
пользование объекта. Управление доступом к членам класса достигается за счет использования четырех
спецификаторов доступа: public, private, protected и internal .
Модификатор protected применяется только при включении интерфейсов и описан в главе 9. Модификатор i n t e r n a l применяется в основном при использовании компоновочных
файлов (assembly) Спецификатор public разрешает доступ к соответствующему члену класса со сто-
роны другого кода программы, включая методы, определенные внутри других классов.
Спецификатор p r i v a t e разрешает доступ к соответствующему члену класса только
для методов, определенных внутри того же класса. Таким образом, методы других
классов не могут получить доступ к private-члену не их класса. Члены, которые используются только внутри класса, следует определить как
закрытые.
2. Данные экземпляров, которые должны находиться в пределах заданного диапа-
зона, следует определить как закрытые, а доступ к ним обеспечить через от-
крытые методы, выполняющие проверку вхождения в диапазон.
3. Если изменение члена может вызвать эффект, распространяющийся за преде-
лы самого члена (т.е. действует на другие аспекты объекта), этот член следует
определить как закрытый и обеспечить к нему контролируемый доступ.
4. Члены, при некорректном использовании которых на объект может быть ока-
зано негативное воздействие, следует определить как закрытые, а доступ к ним
обеспечить через открытые методы, предохраняющие эти члены от некоррект-
ного использования.
5. Методы, которые получают или устанавливают значения закрытых данных,
должны быть открытыми.
6. Объявление переменных экземпляров открытыми допустимо, если нет причин
делать их закрытыми.
Конструкторы класса: по умолчанию, с аргументами, копирующие.
Конструктор инициализирует объект при его создании. Он имеет такое же имя,
что и сам класс, а синтаксически подобен методу. Однако в определении конструкто-
ров не указывается тип возвращаемого значения. Формат записи конструктора такой:
доступ имя_класса{) {
// тело конструктора}
Все классы имеют конструкторы независимо от того, определите вы их или нет,
поскольку С# автоматически предоставляет конструктор по умолчанию, который
инициализирует все переменные-члены, имеющие тип значений, нулями, а перемен-
ные-члены ссылочного типа — пи 11-значениями. Но если вы определите собствен-
ный конструктор, конструктор по умолчанию больше не используется.
В предыдущем примере использовался конструктор без параметров. Но чаще при-
ходится иметь дело с конструкторами, которые принимают один или несколько пара-
метров. Параметры вносятся в конструктор точно так же, как в метод: для этого дос-
таточно объявить их внутри круглых скобок после имени конструктора.
Часто при разработке класса используют специальный вид конструктора, который называется копирующий конструктор. Копирующий конструктор применяется для создания клона объекта.