- •Ооп, как идеология программирования. Отличия от предшествующих подходов, применяемых в программировании ранее. Полный.
- •Основные понятия ооп: класс, объект, поле, свойство, метод, событие. Реализация событий с помощью модели делегатов. Полный.
- •Понятие класса в ооп. Синтаксис объявления класса. Члены класса. Полный.
- •Объекты в ооп. Принадлежность объекта типу (связь между типом и объектом). Жизненный цикл объектов: создание и разрушение объектов. Garbage Collector и разрушение объектов. Полный.
- •Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы. Полный.
- •Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal). Полный.
- •Инкапсуляция. Реализация механизма инкапсуляции через свойства. Функции-аксессоры (set, get). Отсутствие или ограничение области видимости одного из аксессоров. Почти ничего.
- •Наследование: понятие, назначение, примеры применения. Поведение различных членов класса при наследовании. Совпадения сигнатур методов при наследовании. Неполный.
- •Агрегация: понятие, назначение, примеры применения. Отличия от наследования. Жизненный цикл агрегируемых объектов. Полный (?).
- •Методы класса. Сигнатура метода. Абстрактные (abstract), виртуальные (virtual) и перезаписанные (override) методы. Статические (static) методы классов и особенности их применения. Полный.
- •Функциональный тип – делегаты: понятие, назначение, примеры применения. Функция, как экземпляр делегата. Делегат, как свойство класса. Неполный.
- •Программный проект: консольный, оконный. Файлы, составляющие проект. Исполняемые файлы (*.Ехе). Понятие «сборки» в .Net. Ничего.
- •Переменные и выражения. Области видимости и жизни переменных. Глобальные и локальные переменные. Константы. Полный.
- •Структуры (struct) и перечисления (enum). Отличия структур от классов. Полный.
Понятие класса в ооп. Синтаксис объявления класса. Члены класса. Полный.
Член класса — данные об объекте или действиях с ним, описанные в классе.
Члены класса: поля (переменные), методы, свойства, события (?).
Синтаксис:
<атрибуты> <модификаторы> class <имя_класса>: <родители класса>
{
<тело_класса>
}
Атрибут — некоторая дополнительная информация, которая может быть приписана к конструкциям языка (тип, поле, метод, свойство).
Все атрибуты являются классами (потомками класса System.Attribute). Возможно создание своих атрибутов и применение их к коду.
Модификатор — средство ограничения доступа к членам класса.
Синтаксис некоторых членов класса (“внутренностей” класса):
public class A
{
public A()
{
// Определение конструктора без параметров
}
// ↓ Перегруз коснтруктора
public A(int a, int b)
{
// Определение конструктора с параметрами
}
public int k;
// Член, доступный любому классу программы.
internal int l;
// Член, доступный любому классу в том же модуле программы.
protected internal int m;
// Член, доступный любому классу в том же модуле программы либо только текущему классу и всем его подклассам в другом модуле.
protected int n;
// Член, доступный только текущему классу и всем его подклассам.
private int p;
// Член, доступный только из текущего класса (по умолчанию).
}
Виды классов:
Базовый класс (суперкласс / родитель) — класс, на основе которого создаются другие классы.
Производный класс (дочерний / потомок) — класс, наследуюший поля и методы другого класса.
Абстрактный класс — класс, не предполагающий создания экземпляров (объектов класса).
Интерфейс — семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.
Объекты в ооп. Принадлежность объекта типу (связь между типом и объектом). Жизненный цикл объектов: создание и разрушение объектов. Garbage Collector и разрушение объектов. Полный.
Объект — это специфическая компьютерная сущность, которая существует в компьютерной памяти и может описывать реальный объект (из реального мира).
Класс можно назвать (абстрактным) типом данных, который создает программист. С этой точки зрения объекты являются значениями (переменными) этого типа. Определение класса задаёт внутреннюю структуру значений и набор операций, которые над этими значениями могут быть выполнены.
Конструктор — метод, вызываемый при создании объекта.
Чтобы создать конструктор для класса, нужно создать метод, название которого совпадает с названием класса, в любом месте в определении класса.
Деструктор — метод, служащий для деинициализации (удалении) объекта (например, освобождение памяти).
Деструктор отличается от конструктора тем, что имеет символ ~ перед именем деструктора, которое также совпадает с именем класса.
Сборщик мусора (Garbage Collector).
В программировании сборка мусора — одна из форм автоматического управления памятью. Специальный код, называемый сборщиком мусора (garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложением — то есть производит сборку мусора.
Сборка мусора — технология, позволяющая, с одной стороны, упростить программирование, избавив программиста от необходимости вручную удалять объекты, созданные в динамической памяти, с другой — устранить вызванные неправильным ручным управлением памятью ошибки.
Периодичность запуска сборщика мусора определяется особенностями системы. Сборщик может работать в фоновом режиме, запускаясь при неактивности программы (например, когда программа простаивает, ожидая ввода данных пользователем).
Сборщик мусора запускается безусловно, прерывая на время своей работы выполнение программы, когда очередную операцию выделения памяти оказывается невозможно выполнить из-за того, что вся доступная память исчерпана.
После освобождения памяти прерванная операция выделения памяти возобновляется и программа продолжает исполняться дальше. Если же оказывается, что освободить память невозможно, среда исполнения останавливает программу с сообщением об ошибке «Недостаточно памяти».