Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

68 Глава 2. Ориентированный на объект дизайн

Абстракция

Понятие абстракции должно дистиллировать сложную систему вниз к ее большей части забавы - damental части и описать эти части на простом, точном языке. Как правило, описание частей системы включает обозначение их и объяснение их func-tionality. Применение парадигмы абстракции к дизайну структур данных дает начало абстрактным типам данных (ADTs). ADT - математическая модель структуры данных, которая определяет тип хранивших данных, операции, поддержанные на них и типах параметров операций. ADT определяет то, что каждый op-eration делает, но не, как это делает это. В C ++, функциональность структуры данных выражена через общественный интерфейс связанного класса или классов что de - прекрасный структура данных. Общественным интерфейсом мы имеем в виду подписи (имена, возвратите типы и типы аргумента) общественных членских функций класса. Это - единственная часть класса, к которому может получить доступ пользователь класса.

ADT понят конкретной структурой данных, которая смоделирована в C ++ классом. Класс определяет хранившие данные и операции, поддержанные объектами, которые являются случаями класса. Кроме того, в отличие от интерфейсов, классы определяют, как операции выполнены в теле каждой функции. C ++ класс, как говорят, осуществляет интерфейс, если его функции включают все функции, объявленные в интерфейс, таким образом предоставляя тело им. Однако у класса может быть больше функций, чем те из интерфейса.

Герметизация

Другой важный принцип ориентированного на объект дизайна - понятие encapsula-tion, который заявляет, что различные компоненты системы программного обеспечения не должны показывать внутренние детали своих соответствующих внедрений. Одно из главных преимуществ герметизации - то, что она дает свободу программиста в осуществлении de - хвосты системы. Единственное ограничение на программиста должно поддержать абстрактный интерфейс, который видят посторонние.

Модульность

В дополнение к абстракции и герметизации, основной принцип объектно-ориентированного дизайна - модульность. Современные системы программного обеспечения, как правило, состоят из sev-eral различные компоненты, которые должны взаимодействовать правильно для всей системы, чтобы работать должным образом. Хранение этих взаимодействий прямо требует, чтобы эти различные компоненты были хорошо организованы. В ориентированном на объект дизайне этот кодекс, структурирующий подход, сосредотачивается вокруг понятия модульности. Модульность отсылает к orga-nizing принцип для кодекса, в котором различные компоненты системы программного обеспечения разделены на отдельные функциональные единицы.

2.1. Цели, принципы и образцы 69

Иерархическая организация

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

Например, структурное определение стены - то же самое от дома к дому,

как правило, будучи определенным с точки зрения вертикальных гвоздиков, располагаемых в интервалах фиксированного расстояния, и т.д. Таким образом организованный архитектор может снова использовать его или ее стенные определения от одного дома до другого. В многократном использовании такого определения некоторые части могут потребовать переопределения, например, стена в коммерческом здании может быть подобна тому из дома, но электрическая система и материал гвоздика могли бы отличаться.

Естественный способ организовать различные структурные компоненты пакета программ

находится иерархическим способом, который собирает в группу подобные абстрактные определения способом уровня уровнем, который идет от определенного до более общего, поскольку каждый пересекает иерархию. Общее использование таких иерархий находится в структуре организации, где каждая связь, повышающаяся, может быть прочитана, как «», как в «ранчо дом, здание». Этот вид иерархии полезен в проектировании программного обеспечения, поскольку это группируется общая функциональность на наиболее общем уровне и рассматривает специализированное поведение как расширение общего.

Строительство

Квартира

Дом

Коммерческий

Строительство

Невысокая квартира

Высотная квартира

Двухэтажный

Дом

Ранчо

Небоскреб

Рисунок 2.3: примером «является» иерархия, включающая архитектурные здания.