Please enable JavaScript.
Coggle requires JavaScript to display documents.
ООП - Coggle Diagram
ООП
Обслуживающий класс - тип класса, который не поддерживает какое-либо состояние на уровне объекта, а взамен этого предлагает использование static членов уровня класса.
Статические поля - создаются на уровне класса и память под них выделяется единожды. Если изменить значение поля, то это увидят все экземпляры класса.
-
Статический конструктор необходим для установки статических данных.
- Выполняется один раз перед всем конструкторами уровня экземпляра
-
Оператор using static позволяет избавится от написания
using static System.Console
Console.WriteLine() -> WriteLine()
Три принципа:
- Инкапсуляция Как скрывается детали внутренней реализации объектов и предохранение целостности данных?
- Наследование Как стимулируется многократное использование кода?
- Полиморфизм Каким образом язык позволяет трактовать связанные объекты в сходной манере?
Инкапсуляция - механизм связывающий код с обрабатываемыми данными, выступающий защитной оболочкой для данных от повреждения.
- public (типы и члены типов) доступен везде
- private (члены типов и вложенные типы) доступен только там где определен
- protected (влож .типы и челены типов) доступен у наследников
- internal (типы и члены типа) доступен только в рамках сборки
-protected iternal (члены типа и вложенные типы) доступен внутри сборки и наследнков
По умолчанию типы неявно internal, а члены типов неявно protected
- Ключевое слово const является неявно статическим и служит для оперделения констант, им присваивают значения на этапе определения.
- ключевое слово readonly поозволяет присваивать значение на этапе выполнения, но не может быть изменено после первого присваивания
- ключевое слово partial позволяет классу быть определенным в нескольких файлах (поля в одном фаиле, методы в другом)
Автоматические свойства:
public string Name {get; set;} = "DefaultValue"
среда сама создаст необходимые поля. Быстро создать prop + tab*2
Три способа инициализации:
- вызов конструктора и поочередная установка свойств
- вызов специального конструктора
- неявный вызов конструктора и установка свойств в одну строку:
Class newClass = new Calss {prop1 = 1, prop2 = 2}
явно указать конструктор
Class newClass = new Calss() {prop1 = 1, prop2 = 2}
Наследование - отражает возможность построения новых классов на основе существующих классов. Отношение является (класс гексагон является дочерним классом фигура)
Конструкторы не наследуются производным классом, но к ним можно обращаться через построение цепочки вызовов конструктора.
sealed - ключевое слово, запечатывает класс и не дает от него наследовать, имеет наибольший смысл для обслуживающих классов, запечатывание классов
-
Полиморфизм - позволяет определять полиморфный интерфейс состоящий из виртуальных или абстрактных методов.
- Виртуальный (virtual) - реализация в базовом классе, может переопределение (override) в дочерних.
- Абстракция(abstract) - не реализуется в базовом классе, обязан реализовываться в дочерних
Переопределенные методы могут задействовать стандартное поведение ключевым словом base
Виртуальные методы можно запечатывать ключевым словом sealed
Абстрактный базовый класс не допускает создания экземпляров. Но в абстрактной переменной можно хранить ссылки на объекты производного класса
-
Класс - тип, состоящий из полей данных и членов, которые оперируют полями
-
Цепочка конструкторов через ключевое слово this:
constr(string st, int i) { name = st; i = 0}; - ГЛАВНЫЙ КОНСТРУКТОР
constr(string st) : this(st, 10);
Всю работу делает главный конструктор, позволяет избавится от избыточности, аналогично можно использовать необязательные параметры.
Создается объект с помощью дополнительного конструктора ->он предает значения главному конструктору->главный конструктор подставляет значения полям->потом управление возвращается доп. конструктору и он выполняет свое тело
-