
- •Цели проведения анализа
- •Подход к проектированию программ в целом
- •Рекомендации:
- •30 Принципов объектно-ориентированного дизайна
- •Пример построения диаграммы классов. Задание: Построить диаграмму классов dom демонстрационно-обучающей системы решения квадратных уравнений. Шаг 1. «Вначале было слово…»
- •Оценка модели:
- •Шаг 2. «Раз ромашка, два ромашка…»
- •Примечания:
- •Оценка модели:
- •Справка:
- •Шаг 3. «Позовите Вия!..»
- •Примечания:
- •Оценка модели:
- •Заключение
Шаг 2. «Раз ромашка, два ромашка…»
Выделим зоны функциональности и разделим их между соответствующими классами (и да поможет нам электронный словарь ABBY Lingvo 12):
Описание квадратного уравнения (класс TQuadraticEquation);
Алгоритм решения квадратного уравнения (класс TQuadraticSolution);
Получение данных для постройки графика (класс TQuadraticGraphData).
Класс TQuadraticEquation будет связан («ассоциирован») с классом TQuadraticSolution и с классом TQuadraticGraphData (Очевидно, что решить уравнение без самого уравнения или построить график функции без функции нельзя.). Классы TQuadraticSolution и TQuadraticGraphData на данном этапе между собой не связаны (решение и построение графика не зависят друг от друга). Считая само уравнение частью процесса решения и построения, получим:
TQuadraticSolution агрегирует TQuadraticEquation. Поскольку уравнение может иметь много способов решения, а «решение» может в один конкретный момент может решать только одно уравнение, то кратность связи будет «один» со стороны класса TQuadraticEquation и «много» со стороны класса TQuadraticSolution.
TQuadraticGraphData агрегирует TQuadraticEquation. Кратность см. пункт выше.
Таблица 2
Класс |
Атрибуты/методы |
Описание |
TQuadraticEquation |
… |
… |
TQuadraticEquation() |
Конструктор умолчания |
|
TQuadraticEquation(double a, double b, double c) |
Параметрический конструктор Входные параметры: Коэффициенты a, b, c квадратного уравнения |
|
~ TQuadraticEquation() |
Деструктор |
|
TQuadraticSolution |
TQuadraticEquation* Equation |
Указатель на решаемое уравнение |
TQuadraticSolution() |
Конструктор умолчания |
|
TQuadraticSolution( TQuadraticEquation* E) |
Параметрический конструктор Входные параметры: E – указатель на решаемое уравнение |
|
~TQuadraticSolution() |
Деструктор |
|
… |
… |
|
TQuadraticGraphData |
TQuadraticEquation* Equation |
Указатель на уравнение |
TQuadraticGraphData() |
Конструктор умолчания |
|
TQuadraticGraphData( TQuadraticEquation* E) |
Параметрический конструктор Входные параметры: E – указатель на уравнение для графика |
|
~TQuadraticGraphData() |
Деструктор |
|
… |
… |
Примечания:
Класс TQuadraticSolution на диаграмме не имеет поля TQuadraticEquation* Equation. Это поле указано на самой связи агрегации. CASE-средства, такие как StarUML, автоматически добавляют это поле в код класса для реализации механизма связи при автоматической генерации кода. На изображении класса TQuadraticGraphData это поле добавлено вручную в секции атрибутов. При этом на самой связи оно не указано. Допускается использовать любой из вариантов.
Конструкторы выделены с помощью стереотипа «create», а деструкторы – «destroy». Это позволяет избежать добавления возвращаемого типа void для этих методов и не использовать для деструктора символ ~ (поскольку на диаграмме классов UML этот символ тоже используется).
Рис 2. Диаграмма классов на втором шаге.