Информатика. Общая информатика. Основы языка C++. Мамонова Т.Е. - 91 стр.

UptoLike

Составители: 

3.6.5. Подходы к проектированию программ в целом
ООП ориентировано на разработку крупных программных
комплексов, разрабатываемых командой программистов (возможно, до-
статочно большой). Проектирование системы в целом, создание отдель-
ных компонент и их объединение в конечный продукт при этом часто
выполняется разными людьми, и нет ни одного специалиста, который
знал бы о проекте всё.
Объектно-ориентированное проектирование состоит в описании
структуры и поведения проектируемой системы, т.е. фактически в отве-
те на два основных вопроса:
Из каких частей состоит система.
В чём состоит ответственность каждой из частей.
Выделение частей производится таким образом, чтобы каждая име-
ла минимальный по объёму и точно определённый набор выполняемых
функций (обязанностей), и при этом взаимодействовала с другими ча-
стями как можно меньше.
Дальнейшее уточнение приводит к выделению более мелких фраг-
ментов описания. По мере детализации описания и определения ответ-
ственности выявляются данные, которые необходимо хранить, наличие
близких по поведению агентов, которые становятся кандидатами на реа-
лизацию в виде классов с общими предками. После выделения компо-
нентов и определения интерфейсов между ними реализация каждого
компонента может проводиться практически независимо от остальных
(разумеется, при соблюдении соответствующей технологической дисци-
плины).
Большое значение имеет правильное построение иерархии классов.
Одна из известных проблем больших систем, построенных по ООП-тех-
нологии – так называемая проблема хрупкости базового класса. Она со-
стоит в том, что на поздних этапах разработки, когда иерархия классов
построена и на её основе разработано большое количество кода, оказы-
вается трудно или даже невозможно внести какие-либо изменения в код
базовых классов иерархии (от которых порождены все или многие рабо-
тающие в системе классы). Даже если вносимые изменения не затронут
интерфейс базового класса, изменение его поведения может
непредсказуемым образом отразиться на классах-потомках. В случае
крупной системы разработчик базового класса не просто не в состоянии
предугадать последствия изменений, он даже не знает о том, как именно
базовый класс используется и от каких особенностей его поведения за-
висит корректность работы классов-потомков.
91