Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР12. Class diagram.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
337.41 Кб
Скачать

Пример построения диаграммы классов. Задание: Построить диаграмму классов dom демонстрационно-обучающей системы решения квадратных уравнений. Шаг 1. «Вначале было слово…»

Квадратное уравнение имеет вид ax2+bx+c=0. Очевидно, что на данном этапе имеем один класс «квадратное уравнение». Используя русско-английский словарь и нотацию Borland, назовем его TQuadraticEquation. Полями (данными) класса будут коэффициенты уравнения, методами (функциями) – функция вычисления корней.

Таблица 1

Класс

Атрибуты/методы

Описание

TQuadraticEquation

double a

Коэффициент уравнения a

double b

Коэффициент уравнения b

double c

Коэффициент уравнения c

int Roots(double* x1, double* x2)

Функция вычисления корней.

Входные параметры:

x1 – адрес переменной для записи значения х1;

х2 – адрес переменной для записи значения х2.

Возвращаемое значение:

Количество корней уравнения (0, 1 или 2)

Рис 1. Диаграмма классов на первом шаге.

Шаг 1.1.

Поскольку программа демонстрационно-обучающая, очевидно, что ход вычислений пользователю будет интересен. Следовательно, класс TQuadraticEquation нужно расширить методами, позволяющими получать промежуточные результаты вычислений и получить данные для постройки графика.

Таблица 1.1

Класс

Атрибуты/методы

Описание

TQuadraticEquation

double D()

Функция вычисления D

int RootCount()

Функция, возвращающая количество корней уравнения (0, 1 или 2)

double x1()

Функция вычисления корня x1

double x2()

Функция вычисления корня x2

double y(double x)

Функция y(x)

bool vertex(double* x, double *y)

Функция вычисления направления ветвей и точки вершины параболы.

Входные параметры:

x – адрес переменной для записи значения координаты х точки вершины параболы;

y – адрес переменной для записи значения координаты у точки вершины параболы.

Возвращаемое значение:

Направление ветвей вверх (true) или вниз (false)

Оценка модели:

Очевидно, что данная модель не соответствует принципам high cohesion (сильного сцепления) и единственности ответственности, поскольку класс несет как функционал описания квадратного уравнения, так и функционал для его решения и для построения графика. Класс перегружен методами, что затрудняет понимание и сопровождение. А при изменении алгоритма решения или добавления нового алгоритма (например, теоремы Виета), класс необходимо будет дополнить (как? еще дополнить?!) новыми методами, что является нарушением принципа открытости/закрытости.

Рис 1.1. Окончательная диаграмма классов на первом шаге.

Вывод:

Необходимо разделить «зоны ответственности» между различными классами. Кроме того, неплохо было бы дополнить классы конструкторами и деструкторами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]