Принципы объектно-ориентированного представления программных систем
Автор: Пользователь скрыл имя, 05 Сентября 2011 в 18:58, творческая работа
Описание работы
Создавая понятие в интересах какой-либо задачи, мы отвлекаемся (абстрагируемся) от несущественных характеристик конкретных объектов, определяя только существенные характеристики
На рис. приведен пример нефизического включения частей
(Студента, Преподавателя) в агрегат Вуз. Очевидно, что Студент и Преподаватель являются элементами Вуза, но они не входят в него физически. В этом случае говорят, что части включены в агрегат по ссылке.
Итак, между объектами существуют двавида отношений — связи и агрегация. Какое из них выбрать?
При выборе вида отношения должны учитываться следующие факторы:
связи обеспечивают низкое сцепление между объектами;
агрегация инкапсулирует части как секреты целого.
Классы
Понятия объекта и класса тесносвязаны. Тем не менее существует важноеразличие между этими понятиями. Класс — это абстракция существенных характеристик объекта.
Класс— описание множества объектов, которые разделяют одинаковые свойства, операции, отношения и семантику (смысл). Любой объект — просто экземпляр класса.
Как показано на рис. , различают внутреннее представление класса
(реализацию) и внешнее представление класса (интерфейс).
Интерфейс объявляет возможности (услуги) класса, но скрывает его структуру и поведение. Иными словами, интерфейс демонстрирует внешнему миру абстракцию класса, его внешний облик. Интерфейс в основном состоит из объявлений всех операций, применимых к экземплярам класса. Он может также включать объявления типов, переменных, констант и исключений, необходимых для полноты даннойабстракции.
Интерфейс может быть разделен на 3 части:
публичную (public), объявления которой доступны всем клиентам;
защищенную (protected), объявления которой доступны только самому классу, его подклассам и друзьям;
приватную (private), объявления которой доступны только самому классу и его друзьям.
Другом класса называют класс, который имеет доступ ко всем частям этого класса
(публичной, защищенной и приватной). Иными словами, от друга у класса нет секретов.
Реализация класса описывает секреты поведения класса. Она включает реализации всех операций, определенных в интерфейсе класса.
Видыотношениймеждуклассами
Классы, подобно объектам, не существуют в изоляции. Напротив, с отдельной проблемной областью связывают ключевые абстракции, отношения между которыми формируют структуру из классов системы.
Всего существует четыре основных вида отношений между классами:
ассоциация (фиксирует структурные отношения — связи между экземплярами классов);
зависимость (отображает влияние одного класса на другой класс);
обобщение-специализация («is а»-отношение);
целое-часть
(«part of»-отношение).
Для покрытия основных отношений большинство объектно-ориентированных языков программирования поддерживает следующие отношения:
1) ассоциация;
2) наследование;
3) агрегация;
4) зависимость;
5) конкретизация;
6) метакласс;
7) реализация.
Ассоциации обеспечивают взаимодействия объектов, принадлежащих разным классам. Они являются клеем, соединяющим воедино все элементы программной системы. Благодаря ассоциациям мы получаем работающую систему. Без ассоциаций система превращается в набор изолированных классов-одиночек.
Наследование — наиболее популярная разновидность отношения обобщение-специализация. Альтернативой наследованию считается делегирование. При делегировании объекты делегируютсвое поведение родственным объектам. При этом классы становятся не нужны.
Агрегация обеспечивает отношения целое-часть, объявляемые для экземпляров классов.