
- •Ооп, как идеология программирования. Отличия от предшествующих подходов, применяемых в программировании ранее. Полный.
- •Основные понятия ооп: класс, объект, поле, свойство, метод, событие. Реализация событий с помощью модели делегатов. Полный.
- •Понятие класса в ооп. Синтаксис объявления класса. Члены класса. Полный.
- •Объекты в ооп. Принадлежность объекта типу (связь между типом и объектом). Жизненный цикл объектов: создание и разрушение объектов. Garbage Collector и разрушение объектов. Полный.
- •Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы. Полный.
- •Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal). Полный.
- •Инкапсуляция. Реализация механизма инкапсуляции через свойства. Функции-аксессоры (set, get). Отсутствие или ограничение области видимости одного из аксессоров. Неполный (?).
- •Наследование: понятие, назначение, примеры применения. Поведение различных членов класса при наследовании. Совпадения сигнатур методов при наследовании. Полный.
- •Агрегация: понятие, назначение, примеры применения. Отличия от наследования. Жизненный цикл агрегируемых объектов. Полный (?).
- •Методы класса. Сигнатура метода. Абстрактные (abstract), виртуальные (virtual) и перезаписанные (override) методы. Статические (static) методы классов и особенности их применения. Полный.
- •Полиморфизм: понятие, назначение, примеры применения. Суть принципа «один интерфейс – множество методов». Полный (?).
- •Функциональный тип – делегаты: понятие, назначение, примеры применения. Функция, как экземпляр делегата. Делегат, как свойство класса. Неполный.
- •Программный проект: консольный, оконный. Файлы, составляющие проект. Исполняемые файлы (*.Ехе). Понятие «сборки» в .Net. Ничего.
- •Соглашение о совместимости и преобразование типов. Явные и неявные преобразования. Класс Convert.
- •Переменные и выражения. Области видимости и жизни переменных. Глобальные и локальные переменные. Константы. Полный.
- •Логические операции, условные выражения. Операции проверки типа и приведения к типу. Полный.
- •Структуры (struct) и перечисления (enum). Отличия структур от классов. Полный.
Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы. Полный.
Конструктор — метод, вызываемый при создании объекта.
Чтобы создать конструктор для класса, нужно создать метод, название которого совпадает с названием класса, в любом месте в определении класса.
Конструктор не имеет явным образом определенного типа возвращаемых данных.
Конструктор, как и любой метод, может быть перегружен, то есть один класс может иметь несколько конструкторов с разными параметрами.
Конструктор может быть определен и без параметров (или определен с необязательными параметрами). Такой называется конструктором по умолчанию. Используется при создании массивов объектов, вызываясь для создания каждого экземпляра. В отсутствие явно заданного конструктора по умолчанию его код генерируется компилятором (что на исходном тексте, естественно, не отражается).
Конструктор без параметров обычно переопределяется в классе-потомке.
Для создания конструктора с параметрами нужно задать имена и типы данных аргументов.
Если конструктор не определен вообще, он автоматически наследует конструктор от класса “Object” (в C#).
Деструктор — метод, служащий для деинициализации (удалении) объекта (например, освобождение памяти).
Деструктор отличается от конструктора тем, что имеет символ ~ перед именем деструктора, которое также совпадает с именем класса.
Закрытый конструктор. Особый конструктор экземпляров.
Обычно он используется в классах, содержащих только статические элементы. Если в классе один или несколько закрытых конструкторов и ни одного открытого конструктора, то прочие классы (за исключением вложенных классов) не смогут создавать экземпляры этого класса.
Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal). Полный.
Инкапсуля́ция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (то, что у него внутри), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только спецификация (интерфейс) объекта.
Пользователь может взаимодействовать с объектом только через этот интерфейс. Внутренние поля объекта напрямую недоступны, и пользователь может работать с объектом только как с единым целым. Реализуется с помощью ключевого слова: public.
Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов (модификаторов): private, protected, internal.
Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).
Сокрытие реализации целесообразно применять в следующих случаях:
предельная локализация изменений при необходимости таких изменений,
прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.
Целью инкапсуляции является обеспечение согласованности внутреннего состояния объекта. В C# для инкапсуляции используются публичные свойства и методы объекта. Переменные, за редким исключением, не должны быть публично доступными.
Модификатор — средство ограничения доступа к членам класса.
В зависимости от того, какой уровень доступа нужно предоставляеть члену класса, выделяют:
public — обеспечение доступа из любого места программы.
internal — ограничение видимости внутри сборки (сборка — код программы после компиляции). // в C#
protected — обеспечение доступа наследникам, но запрет доступа пользователю.
private — обеспечение доступа только внутри класса.