3. PRO Объектно-ориентированный дизайн
Работа с требованиями
Определение ассоциации между классами
Кратность ассоциации
Варианты видимости классов А и B
Композиция (Composition)
Часть создается в конструкторе или в момент использования (just-in-time):
Агрегация
Has-a или Holds-a?
Наследование
Наследник – расширяет родителя
Доступ к данным родителя
UML обозначения ассоциации
453.65K

3_PRO_Объектно_ориентированный_дизайн

1. 3. PRO Объектно-ориентированный дизайн

3. PRO Объектноориентированный дизайн

2. Работа с требованиями

Существительные
помогают
формировать
классы: Flight,
Reservation,
Customer, Plane…
Глаголы –
отношения между
ними: Contains,
Manages, Makes-a

3. Определение ассоциации между классами

Временная или постоянная связь (uses-a) между классами называется
ассоциацией
Название
Название описывается
глаголом
Множественность
Рекурсия

4. Кратность ассоциации

Сколько объектов одного класса
связаны с объектами другого класса в
конкретный момент времени

5. Варианты видимости классов А и B

6.

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

7. Композиция (Composition)

• Отношение часть-целое (has-a): целое
и часть не живут по отдельности
• Связь – стабильная и долгосрочная

8. Часть создается в конструкторе или в момент использования (just-in-time):

9. Агрегация

• Обладатель и предмет
могут существовать друг
без друга
• Предмет создается вне
обладателя и передается
параметром конструктора,
свойства или метода
• Может быть заменен на
другой => Больше гибкости
• Студент владеет
калькулятором и передает
ему какие-то задачи.

10. Has-a или Holds-a?

• Has-a, если целое не существует без
своей части и наоборот
• Has-a, если состояние целого зависит
от состояния своей части
• Has-a, если целое ответственно за
создание своей части
• Чем связь слабее и краткосрочнее,
тем вероятнее holds-a

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

12. Наследник – расширяет родителя

Может применяться вместо него (но не наоборот)

13. Доступ к данным родителя

• Полный доступ, кроме закрытых (private) полей и методов
• Родитель может открыть свою часть только наследникам, через
защищенность (protected) своих данных
• Родитель может приказать детям менять переопределять детям
свои методы (virtual)
• Дети должны переопределять виртуальные методы (override),
таким образом меняя
изначальное поведение родителя
• Можно отказаться от
виртуального метода родителя,
но только “итальянской забастовкой”

14. UML обозначения ассоциации

15.

• Новые клиенты, которые
хотят забронировать
авиабилеты, должны
заполнить регистрационную
форму, указав свое имя,
адрес, название компании,
номер телефона и адрес
электронной почты.
• Клиент классифицируется
либо как корпоративный
клиент, либо как розничный
клиент.
• Клиенты могут искать рейсы
на основе места назначения
и времени вылета.
• Клиенты могут
забронировать авиабилеты,
указав номер рейса и
количество запрашиваемых
мест.
English     Русский Правила