Основы объектно-ориентированного программирования

Содержание

Слайд 2

Cвязи (отношения, ассоциации)

Cвязи (отношения, ассоциации)

Слайд 3

Связь это физическое или концептуальное соединение между объектами

Связь это физическое или концептуальное соединение между объектами

Слайд 4

Пример: Составная фигура объединяет множество других фигур в одну

Пример: Составная фигура объединяет
множество других фигур в одну

Слайд 5

Составная фигура объединяет множество других фигур в одну

Составная фигура объединяет
множество других фигур в одну

Слайд 6

Ассоциация

Ассоциация

Слайд 7

Стереотип

Стереотип

Слайд 8

Направленность

Направленность

Слайд 9

Видимость Глобальная: один из объектов глобален по отношению к другому (глобальная

Видимость

Глобальная: один из объектов глобален по отношению к другому (глобальная переменная

или статические методы)
Параметр: один из объектов (или ссылка на него) передан другому в качестве параметра операции.
Поле класса: один из объектов (или ссылка на него) является частью другого.
Локальная: один из объектов локально порождается другим в ходе выполнения какой-либо операции.
Слайд 10

Видимость

Видимость

Слайд 11

Видимость

Видимость

Слайд 12

Видимость

Видимость

Слайд 13

Видимость

Видимость

Слайд 14

Кратность (мощность) 1 – в точности один объект 0..1 – ни

Кратность (мощность)

1 – в точности один объект 0..1 – ни одного либо

один объект * – множество объектов 0..* – множество объектов, возможно 0 1..* – множество объектов, но хотя бы один
Слайд 15

Имена участников

Имена участников

Слайд 16

Атрибуты связей Стереотип – устойчивый характер (смысл, семантика) связи Мощность –

Атрибуты связей

Стереотип – устойчивый характер (смысл, семантика) связи
Мощность – сколько объектов

может участвовать в связи с обеих сторон
Направленность – определяет кто из двух участников «знает» о другом
Видимость – каким образом один объект «видит» другой
Имена участников
Слайд 17

Ещё кое-что

Ещё кое-что

Слайд 18

Типы отношений Ассоциация Зависимость Использование Наследование Реализация Агрегация Конкретизация Класс-ассоциация

Типы отношений

Ассоциация
Зависимость
Использование
Наследование
Реализация
Агрегация
Конкретизация
Класс-ассоциация

Слайд 19

Зависимость

Зависимость

Слайд 20

Зависимость Мощность: определяется контекстом Направленность: от зависимого к независимому Стереотип связи:

Зависимость

Мощность: определяется контекстом
Направленность: от зависимого к независимому
Стереотип связи: зависимость, поменял «независимого»

— нужно менять «зависимого»
Видимость: определяется конкретикой реализации
Слайд 21

Использование

Использование

Слайд 22

Использование Мощность: определяется реализацией Направленность: от пользователя к используемому (от клиента

Использование

Мощность: определяется реализацией
Направленность: от пользователя к используемому (от клиента к серверу)


Стереотип связи: использование
Видимость: определяется конкретикой реализации, часто локальная
Имена участников: пользователь, используемый (клиент, сервер)
Слайд 23

Наследование

Наследование

Слайд 24

Наследование Мощность — 1:1 Имена участников — базовый класс, производный класс

Наследование

Мощность — 1:1
Имена участников — базовый класс, производный класс
Направленность — от

потомка к предку
Стереотип связи – являться (is-a)
Видимость: неприменимо, т.к. наследование — отношение между классами, в отношении участвует «один и тот же» объект
Слайд 25

Реализация Классы Circle, Line и Point реализуют интерфейс IShape

Реализация

Классы Circle, Line и Point реализуют интерфейс IShape

Слайд 26

Реализация Связь между классами и интерфейсами Мощность — 1:1 Имена участников

Реализация

Связь между классами и интерфейсами
Мощность — 1:1
Имена участников — реализующий класс,

интерфейс
Направленность — от реализующего класса к интерфейсу
Стереотип связи — реализация (is-a, реализуем поведение)
Слайд 27

Агрегация

Агрегация

Слайд 28

Агрегация Агрегация — связь между объектами Мощность, Имена участников, Направленность —

Агрегация

Агрегация — связь между объектами
Мощность, Имена участников, Направленность — определяются контекстом
Стереотип

связи — также определяется контекстом, например, «владение», «быть частью»
Видимость: поля класса
Слайд 29

Композиция

Композиция

Слайд 30

Композиция Композиция – связь между объектами Мощность, Имена участников, Направленность -

Композиция

Композиция – связь между объектами
Мощность, Имена участников, Направленность - определяются контекстом
Стереотип

связи – «быть частью», «part-of»
Видимость: поля класса
Слайд 31

Класс- ассоциация

Класс-
ассоциация

Слайд 32

Класс-ассоциация

Класс-ассоциация

Слайд 33

Класс-ассоциация: альтернативная интерпретация

Класс-ассоциация: альтернативная интерпретация

Слайд 34

Класс-ассоциация Имена участников, направленность, мощность: определяется конкретикой задачи Стереотип связи: «класс-ассоциация»

Класс-ассоциация

Имена участников, направленность, мощность: определяется конкретикой задачи
Стереотип связи: «класс-ассоциация» - дополнительная

информация, которая характеризует связь
Видимость: поля класса
Слайд 35

Конкретизация

Конкретизация

Слайд 36

Конкретизация Отношение между классами Мощность 1:1 Имена участников: клас-щаблон (параметризованный класс),

Конкретизация

Отношение между классами
Мощность 1:1
Имена участников: клас-щаблон (параметризованный класс), конкретный (конкретизованный) класс
Стереотип

связи: «конкретизация» -
конкретизируем класс подставляя вместо классов-параметров конкретные классы
Видимость: неприменимо
Слайд 37

Задача: для всех объектов внутри контейнера проделать некую операцию. Варианты: Сделать

Задача: для всех объектов внутри контейнера проделать некую операцию.
Варианты:
Сделать реализацию публичной
Предоставить

обратный вызов для обработки

Перебор объектов

Слайд 38

Перебор объектов в контейнере Довольно просто, но Немного, хм…, необычно

Перебор объектов в контейнере

Довольно просто, но
Немного, хм…, необычно

Слайд 39

Итераторы — объекты для перебора объектов

Итераторы — объекты для перебора объектов

Слайд 40

Итераторы

Итераторы

Слайд 41

Итератор для стека

Итератор для стека

Слайд 42

Итератор для стека Обычный цикл, но - … Странноватая инициализация Нужно писать итератор

Итератор для стека

Обычный цикл, но
- …
Странноватая инициализация
Нужно писать итератор

Слайд 43

Итератор для стека

Итератор для стека

Слайд 44

Больше магии! yield break yield return Единственный минус — необходимость писать итератор

Больше магии!

yield break yield return

Единственный минус — необходимость писать итератор

Слайд 45

yield

yield

Слайд 46

foreach и IEnumerable Для того, чтобы использовать Ваш класс в конструкции

foreach и IEnumerable

Для того, чтобы использовать Ваш класс в конструкции foreach

необходимо реализовать интерфейс IEnumerable
Конструкция yield return позволяет синхронизировать цикл обработки и перебор элементов, не нарушая инкапсуляции и не усложняя код
Конструкция yield break заканчивает перебор
Метод, в котором используются эти конструкции должен возвращать IEnumerable или IEnumerator