Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| mdd:design [2016/12/24 17:02] – [Сравнение классов и ответственностей] yaroshenkopolina | mdd:design [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ======How Designs Differ====== | ||
| + | Оригинал: | ||
| + | [[http:// | ||
| + | ====Введение==== | ||
| + | В данной статье мы рассмотрим как, чем и почему отличаются между собой Responsibility-Driven design метод и немного улучшенная версия Shlaer/ | ||
| + | ====Постановка | ||
| + | Различия в методах будем искать на примере работы пивоваренного завода.\\ Приложение пивоварни управляет инвентаризацией, | ||
| + | |||
| + | Дизайнеры спроектировали упрощенную систему пивоварни. Они намеренно не брали в внимание пользовательский интерфейс и операционную систему. Они ограничили модель только поведениями объектов системы, | ||
| + | |||
| + | ====Сравнение классов и ответственностей==== | ||
| + | Имена объектов одинаковы для обоих методов: | ||
| + | На рисунке ниже можно увидеть перевозку партии в случае Data-driven design. | ||
| + | {{: | ||
| + | На рисунке ниже можно увидеть перевозку партии в случае Responsibility-driven design.\\ | ||
| + | {{: | ||
| + | //На объекты, | ||
| + | |||
| + | ====Ниже приведена таблица сравнения соответствующих классов двух методов: | ||
| + | ^Responsibility-Driven Class^Стереотипы^Data-Driven Class^Стереотипы^ | ||
| + | |Порядок перевозки|Координатор|Запланированная перевозка|Контролер| | ||
| + | |Система труб|Обсепечивает сервис|Контейнер|Владеет информацией| | ||
| + | |Чан|Владеет информацией|Чан|Обеспечивает сервис| | ||
| + | |Клапан|Владеет информацией\\ Обеспечивает сервис|Клапан и cоединитель|Владеет информацией| | ||
| + | |Партия|Владеет информацией|Действующая партия|Владеет информацией| | ||
| + | |Насос|Обеспечивает сервис|Насос|Обеспечивает сервис| | ||
| + | |Пивоварня|Координатор|Пивовар|Контролер| | ||
| + | |Труба|Владеет информацией|Труба|Владеет информацией| | ||
| + | |||
| + | ====Количественные меры в дизайне==== | ||
| + | Chidamber и Kermerer предложили 7 базовых мер, которые сравнивают различные методы дизайна: | ||
| + | * **Weighted Methods per Class (WMC)** мера сложности класса, | ||
| + | * **Depth of Inheritance (DIT)** для класса определяет число его классов-предков | ||
| + | * **Number of Children (NOC)** для класса определяет число его детей-классов | ||
| + | * **Coupling between Objects (CBO)** для класса показывает число классов, | ||
| + | * **Response For a Class (RFC)** для класса показывает число его собственных методов и методов, | ||
| + | * **Lack of Cohesion in Methods (LCOM)** является мерой степени сходства между методами | ||
| + | * **Weighted Attributes per Class (WAC)** число атрибутов класса, | ||
| + | |||
| + | {{: | ||
| + | На рисунке ниже мы можем явно увидит разницу в количестве требуемых сообщений\\ | ||
| + | {{: | ||
| + | Это происходит из-за того, что в Data-Driven методе два класса Пивовар и Запланированная перевозка отправляют много сообщений и знают много о других объектах. В Responsibility-Driven методе основные задания распределены между несколькими классами. Как раз этот принцип с более высоким уровнем коммуникации привел к большинству различий в методах. | ||
| + | |||
| + | ====Вывод==== | ||
| + | Основные различия между этими методами: | ||
| + | ^Responsibility-driven design^Data-driven design^ | ||
| + | |делегированный стиль управления|централизованная архитектура управления| | ||
| + | |несколько ' | ||
| + | |используют координаторы, | ||
| + | |меньше сообщений|больше низкоуровневых сообщений| | ||
| + | |наследственное поведение|наследственные атрибуты|\\ | ||
| + | ====Список литературы==== | ||
| + | 1. R. Sharble and S. Cohen, “The Object-Oriented Brewery: A Comparison of Two Object- Oriented Development Methods,” pp. 60-73, Software Engineering Notes, vol. 18 (2).\\ | ||
| + | 2. R. Sharble and S. Cohen “the Object-Oriented Brewery: A Comparison of Two Object- Oriented Development Methods,” Boeing Technical Report no. BC2-G4059, October, 1992.\\ | ||