Анализ требований и выделение классов. Разделение ответственностей

1.

Course: Software Engineering
Faculty of Mathematics & Informatics
Department of Advanced
Programming Technologies
Анализ требований и
выделение классов.
Разделение
ответственностей.
Yanka Kupala State University of Grodno
Grodno, 2022

2.

Словарь
English
Russian
separation of concerns
разделение ответственностей
establishing relationships
установление отношений
leveraging reuse
повторное использование
extracting commonality
выделение общего (общности)
layered structure
уровневая структура
low coupling
минимальная связность
English
Russian

3.

Словарь
English
Russian
high cohesion
высокая степень зацепления
data access layer
уровень доступа к данным
implicit
неявный
explicit
явный
log able
объект, который логируется
layering
распределение по уровням
English
Russian

4.

Содержание лекции

5.

Система управления клиентами и заказами

6.

Этапы проектирования

7.

Этапы проектирования

8.

Анализируем требования и постановку
задачи. Начинаем с существительных.
Customer Management System
Заказчик
Товар
Заказ

9.

Определяем состав классов

10.

Определяем состав классов

11.

Определяем поведение

12.

Определяем состав классов

13.

Думаем об абстракции

14.

Думаем об абстракции

15.

Соблюдаем принцип инкапсуляции

16.

Соблюдаем принцип инкапсуляции
Demo_1

17.

Разделение ответственностей

18.

Сложность ОО-модели (Complexity)

19.

Сложность ОО-модели (Complexity)

20.

Сложность ОО-модели (Complexity)
При написании кода,
оставляйте классы простыми, не раздутыми
simple is critical

21.

Связность и сцепление (Coupling and Cohesion)
Coupling (связность) - степень, в которой задачи, выполняемые
некоторым программным модулем, связаны друг с другом.

22.

Coupling and Cohesion
Cohesion (сцепление) - степень взаимозависимости между
программными модулями

23.

Coupling (связность)
Плохой дизайн.
Сильная связность.
Хороший дизайн.
Слабая связность.

24.

Coupling (связность)
Tightly coupled
Loosely Coupled

25.

Coupling (связность)
Проектируя свою систему, старайтесь проектировать ее модули (классы),
как блоки Lego: их легко соединить и переиспользовать повторно.

26.

Cohesion. Высокое и низкое сцепление.
High Cohesion
Если модуль (класс) выполняет одну задачу, имеет
понятное назначение, то этот модуль - high cohesion
Low Cohesion
Если модуль (класс) пытается инкапсулировать больше
одной ответственности или имеет неясное назначение,
то этот модуль - low cohesion

27.

Связность (Coupling)

28.

Выделим новый уровень ответственности за
доступ к данным

29.

Сцепление (Cohesion)

30.

Separating Responsibilities
Разделим ответственности

31.

Хороший дизайн системы это

32.

Separating Responsibilities

33.

Separating Responsibilities

34.

Separating Responsibilities
Demo_2
English     Русский Правила