1. 1
2. Классы и объекты в C#
Объектно-ориентированное программирование
() Владислав Лавров, vlavrov.com
2. 2
Технологическое определение
Класс – описание структуры объекта и методов работы с ним.
Объект – структура данных, содержащая описание свойств внешнего
объекта программирования.
Метод – функция, работающая с объектом.
2.1. Классы и их экземпляры как основа объектной модели
() Владислав Лавров, vlavrov.com
3. 3
Синтаксическое определение на языке программирования
Класс – это тип данных, определяемый программистом.
Тип данных – форма представления данных с набором операций.
Объект – переменная класса.
() Владислав Лавров, vlavrov.com
4. 4
Классы позволяют группировать в единое целое данные и функциональность,
моделируя объекты реального мира.
Класс может содержать в своем теле:
• поля,
• методы,
• свойства
• события.
Поля определяют состояние, а методы – поведение будущего объекта.
() Владислав Лавров, vlavrov.com
5. 5
Пример.
Класс, который должен хранить данные об имени сотрудника, его
идентификационном номере и текущей заработной плате.
Помимо этого в классе определены два метода – GiveBonus() для увеличения
заработной платы сотрудника и DisplayStats() для вывода всех имеющихся
данных об этом сотруднике.
2.2. Реализация класса в C#. Конструкторы класса
() Владислав Лавров, vlavrov.com
7. 7
Конструктор по умолчанию
Конструктор класса
— специальный метод, который вызывается во время построения класса
Пользовательский конструктор
() Владислав Лавров, vlavrov.com
8. 8
Бывают двух видов:
• Конструкторы по умолчанию. Задача – инициализация полей
значениями по умолчанию.
• Пользовательские конструкторы. Задача – инициализация полей
предопределенными пользователем значениями.
Конструкторы в C#
() Владислав Лавров, vlavrov.com
9. 9
• Если в теле класса не определен явно ни один конструктор, то всегда используется
«невидимый» конструктор по умолчанию.
• Имя конструктора всегда совпадает с именем класса. Конструкторы не имеют
возвращаемых значений.
• Если в классе имеется пользовательский конструктор, и при этом требуется
создавать экземпляры класса с использованием конструктора по умолчанию, то
конструктор по умолчанию должен быть определен в теле класса явно, иначе
возникнет ошибка на уровне компиляции.
Замечания по реализации конструкторов в C#
() Владислав Лавров, vlavrov.com
10. 10
2.3. Ключевое слово this
Основное применение ключевого слова this состоит в том, чтобы
разрешать неоднозначность контекста, которая может возникнуть, когда
входящий принимаемый параметр назван так же, как поле данных
внутренней переменной-члена класса.
Принимаемые параметры
Внутренние переменные-члены класса
() Владислав Лавров, vlavrov.com
11. 11
Ключевое слово this (продолжение)
Чтобы избежать конфликта, можно определить для принимаемых
переменных имена, отличные от имен переменных-членов класса.
Пример возможной дисциплины именования
переменных-членов класса
() Владислав Лавров, vlavrov.com
12. 12
Еще одно применение ключевого слова this
Техника под названием сцепление конструкторов или
цепочка конструкторов (constructor chaining)
Второй конструктор принимает один параметр
и перенаправляет вызов главному
конструктору с тремя параметрами
Главный конструктор принимает три параметра
() Владислав Лавров, vlavrov.com
13. 13
Модификаторы доступа:
• Public – член объекта (метод или свойство) доступен всем;
• Protected – член объекта доступен только самому объекту и его потомкам;
• Private – член объекта является закрытым и не доступен за его пределами;
• Internal – член объекта доступен только в пределах текущей сборки;
Внимание (!) Никогда не следует делать поля открытыми, это плохой стиль.
Для обращения к полю, рекомендуется использовать методы доступа set и get.
2.4. Видимость членов класса в C#
Неправильно Правильно
() Владислав Лавров, vlavrov.com
14. 14
Свойства – отдельные структуры данных. Заменяет использование методов.
Методы доступа set и get могут иметь модификаторы доступа.
По умолчанию методы доступа создаются открытыми (public) для общего
использования.
Если нужно сделать так, чтобы свойство нельзя было изменить, то set можно объявить
как private
В этом случае свойство EmpID не может быть изменено извне класса, потому что к
нему нет доступа.
Однако к нему можно получить доступ на запись внутри текущего класса.
Запрет только на внешний доступ.
2.5. Определение свойств в C#
() Владислав Лавров, vlavrov.com
16. 16
Метод – это набор действий, который рассматриваются как единое целое и может быть
выполнен в ходе работы программы.
Модификаторы доступа:
• Public – модификатор общедоступности метода (метод доступен всем);
• Private – метод будет доступен только из класса, в котором определен данный
метод (действует по умолчанию);
• Protected – метод будет доступен как из класса, в котором он определен, так и из
любого производного класса;
• Internal – метод будет доступен из всех классов внутри сборки, в которой он
определен. Из-за пределов этой сборки обратиться к нему будет нельзя;
• Protected internal – действует как protected или как internal
2.6. Определение методов в C#
() Владислав Лавров, vlavrov.com
18. 18
2.7. Статические методы и методы экземпляров
Статический метод может быть вызван напрямую через уровень класса, без
необходимости создавать хотя бы один экземпляр объекта данного класса.
Если член класса объявляется как static, то он становится доступным до
создания любых объектов своего класса и без ссылки на какой-нибудь
объект. С помощью ключевого слова static можно объявлять как переменные,
так и методы.
() Владислав Лавров, vlavrov.com
20. 20
Вызов метода экземпляра в C#
Для вызова метода экземпляра необходимо сначала создать объект класса,
в котором определен данный метод. Затем метод вызывается чрез объект
другого класса.
() Владислав Лавров, vlavrov.com