
- •Основные парадигмы программирования
- •Основные парадигмы программирования и языки их реализующие
- •Алгоритмическая декомпозиция
- •Значение функций
- •Виды функций
- •Алгоритмическая декомпозиция. Пример
- •Работа с функциями
- •Процедуры и функции – методы
- •Методы как процедуры и функции
- •Методы как процедуры и функции
- •Рекомендации по использованию функций
- •Передача параметров
- •Передача параметров
- •Объектно-ориентированное программирование
- •Объектная модель
- •Объектно-ориентированный подход
- •Объектно-ориентированная декомпозиция
- •Классы и объекты
- •Класс
- •Главные элементы объектной модели
- •Абстрагирование
- •Инкапсуляция
- •Модульность
- •Иерархия
- •Наследование
- •Расширение базовых классов
- •Роль наследования
- •Наследование и инкапсуляция
- •Спецификаторы доступа
- •Спецификаторы доступа
- •Обобщение в диаграммах классов в UML
- •Многоуровневая иерархия. Пример
- •Модель включения/делегации
- •Агрегация (aggregation)
- •Пример отношения агрегации
- •Композиция (composition)
- •Пример отношения композиции
- •Пример Car_Radio.
- •Полиморфизм
- •Доступ к виртуальным методам
- •Практическое

Обобщение в диаграммах классов в UML
В UML наследование
называют
обобщением, так как базовый класс это более общая форма его
производных классов.

Многоуровневая иерархия. Пример

Модель включения/делегации
Реализует отношение “имеет” (“has-а”) или агрегация.
Эта форма повторного использования не применяется для установки отношений “родительский-дочерний”.
Это отношение позволяет одному классу определять переменную-член другого класса и опосредованно представлять его функциональность (при необходимости) пользователю объекта.

Агрегация (aggregation)
направленное отношение между двумя классами, предназначенное для представления ситуации, когда один из классов представляет собой некоторую сущность, которая включает в себя в качестве составных частей другие сущности
Класс-контейнер |
|
Класс-часть |
|
||
|
|
|

Пример отношения агрегации
Персональный
компьютер
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Системный |
|
Монитор |
|
|
Клавиатура |
|
Мышь |
||||||
блок |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Композиция (composition)
композитная агрегация предназначена для спецификации более сильной формы отношения "часть-целое", при которой с уничтожением объекта класса-контейнера уничтожаются и все объекты, являющимися его составными частями.
Класс-композит |
|
|
Класс-часть |
|
|
||
|
|
|
|

Пример отношения композиции
Окно программы
1 1
1
1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
1 |
|
1 |
|
|||||
Заголовок |
|
Полоса |
|
|
Рабочая |
|
Главное |
||||||
|
прокрутки |
|
|
область |
|
меню |
|||||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Пример Car_Radio.
Автомобиль “имеет” радиоприемник.
Было бы нелогично пытаться наследовать класс Car от Radio или наоборот (ведь Car не “является” Radio).
Взамен имеются два независимых класса, работающих совместно, причем класс Car создает и представляет функциональность Radio:
class Radio
{public void Power(bool turnOn)
} Console.WriteLine("Radio on: {0}", turnOn); class Car
//{Car 'имеет' Radio.
…
private Radio myRadio = new Radio(); public void TurnOnRadio(bool onOff)
// Делегированный вызов внутреннего объекта }myRadio.Power(onOff);

Полиморфизм
Полиморфизм - множественность форм, которые может принимать правило с одним и тем же именем
мощный метод обобщения однотипных задач для многих разных объектов
повышает степень абстрагирования при создании ПО
возможен благодаря позднему связыванию
в случае раннего связывания адреса всех функций и процедур известны в момент компиляции и компоновки программы
в случае позднего связывания адрес процедуры не связывается с обращением к ней до момента, пока обращение не произойдет фактически, т. е. во время выполнения программы.

Доступ к виртуальным методам
Ключевое слово virtual перед объявлением метода в базовом классе.