Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование и дизайн пользовательского инт...doc
Скачиваний:
4
Добавлен:
20.11.2019
Размер:
180.74 Кб
Скачать

Абстракция

означает, что если какой-то класс является абстрактным, то в процессе выполнения приложения не может быть создано объектов этого класса. Класс становится абстрактным, если какой-то из его методов является абстрактным. Для того, чтобы объявить метод абстрактным, после записи его заголовка нужно поставить директиву abstract, и не нужно описывать этот метод в исполнительной части.

Свойства и поведение объектов

  • мирования», «Информационные технологии».

Под объектами понимают некоторую абстрактную сущность, заданную набором имен атрибутов и имен методов поведения. Но объект не имеет никакого конкретного состояния, т.к. его атрибуты не имеют значений.

Объект — это конкретное представление абстракции. Объект обладает индивиду­альностью, состоянием и поведением. Структура и поведение подобных объектов < определены в их общем классе. Термины «экземпляр класса» и «объект» взаимо­заменяемы.

Индивидуальность — это характеристика объекта, которая отличает его от всех, других объектов.

Состояние объекта характеризуется перечнем всех свойств объекта и текущими значениями каждого из этих свойств (рисунок 16.1).

Стул

Стоимость

Вес

Размеры

Положение

Цвет

Купить ()

Продать ()

Взвесить ()

Переместить ()

Покрасить ()

Рисунок 16.1 - Представление объекта с именем Стул

Объекты не существуют изолированно друг от друга. Они подвергаются воздей­ствию или сами воздействуют на другие объекты.

Поведение характеризует то, как объект воздействует на другие объекты (или под­вергается воздействию) в терминах изменений его состояния и передачи сообще­ний. Поведение объекта является функцией как его состояния, так и выполняе­мых им операций (Купить, Продать, Взвесить, Переместить, Покрасить). Говорят, что состояние объекта представляет суммарный результат его поведения.

Операция обозначает обслуживание, которое объект предлагает своим клиентам. Возможны пять видов операций клиента над объектом:

  1. модификатор (изменяет состояние объекта);

  2. селектор (дает доступ к состоянию, но не изменяет его);

  3. итератор (доступ к содержанию объекта по частям, в строго определенном по­ рядке);

  4. конструктор (создает объект и инициализирует его состояние);

  5. деструктор (разрушает объект и освобождает занимаемую им память).

Примеры операций приведены в таблице 16.1.

Таблица 16.1 - Разновидности операций

Вид операции

Пример операции

Модификатор

Пополнеть (кг)

Селектор

КакойВес (): integer

Итератор

ПоказатьАссортиментТоваров (): string

Конструктор

СоздатьРобот (параметры)

Деструктор

УничтожитьРобот ()

В некоторых задачах принципиально подчеркнут характер отношений между объектом и его экземплярами. Примерами таких отношений являются:

а) объект не может иметь экземпляров (имеет 0 экземпляров)

б) объект может иметь только один экземпляр в рамках данной задачи

в) объект может иметь много экземпляров

Примером отношений являются:

а) объект млекопитающее не может иметь экземпляров, т.к. любое реальное млекопитающее является экземпляром объекта-потомка от млекопитающего.

б) объект "президент России" может иметь только один экземпляр в течение некоторого периода времени.

в) объект ястерб-тетеревятник имеет множество экземпляров.

Возможность контроля допустимого количества экземпляров объекта увеличивает надежность системы за счет исключения ошибок при создании недопустимых экземпляров.

В общем случае все методы и свободные подпрограммы, ассоциированные с конк­ретным объектом, образуют его протокол. Таким образом, протокол определяет оболочку допустимого поведения объекта и поэтому заключает в себе цельное (ста­тическое и динамическое) представление объекта.

Большой протокол полезно разделять на логические группировки поведения. Эти группировки, разделяющие пространство поведения объекта, обозначают роли, которые может играть объект.

С точки зрения внешней среды важное значение имеет такое понятие, как обязан­ности объекта. Обязанности означают обязательства объекта обеспечить опреде­ленное поведение. Обязанностями объекта являются все виды обслуживания, ко­торые он предлагает клиентам. В мире объект играет определенные роли, выполняя свои обязанности.

Наличие у объекта внутреннего состояния означает, что по­рядок выполнения им операций очень важен. Иначе говоря, объект может представ­ляться как независимый автомат. По аналогии с автоматами можно выделять ак­тивные и пассивные объекты (рисунок 16.2).

Объекты

Активные объекты (самостоятельное поведение)

Пассивные объекты (поведение по заказу)

Рисунок 16.2 - Активные и пассивные объекты

Активный объект имеет собственный канал (поток) управления, пассивный — нет. Активный объект автономен, он может проявлять свое поведение без воздействия со стороны других объектов. Пассивный объект, наоборот, может изменять свое состояние только под воздействием других объектов.

Виды отношений между объектами

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

Связь — это физическое или понятийное соединение между объектами. Объект сотрудничает с другими объектами через соединяющие их связи. Связь обознача­ет соединение, с помощью которого

  • объект-клиент вызывает операции объекта-поставщика;

  • один объект перемещает данные к другому объекту.

Можно сказать, что связи являются рельсами между станциями-объектами, по которым ездят «трамвайчики сообщений».

Связи между объектами показаны на рис. 9.5 с помощью соединительных линий. Связи представляют возможные пути для передачи сообщений. Сами сообщения показаны стрелками, отмечающими их направления, и помечены именами вызы­ваемых операций.

Агрегация

Связи обозначают равноправные (клиент-серверные) отношения между объектами. Агрегация обозначает отношения объектов в иерархии «целое/часть». Агрегация обес­печивает возможность перемещения от целого (агрегата) к его частям (свойствам). Агрегация может обозначать, а может и не обозначать физическое включение час­ти в целое.

При выборе вида отношения должны учитываться следующие факторы:

  • связи обеспечивают низкое сцепление между объектами;

  • агрегация инкапсулирует части как секреты целого.

Варианты наследования

Использование наследования обычно вызвано необходимостью достичь одну из следующих целей:

Построение принципиально нового объекта, базирующегося на свойствах существующего.

Расширение и изменение функциональности имеющегося объекта.

В первом случае, примером может являться построения объектов "Прямоугольник", "Ромб", "Эллипс", на основе объекта "Геометрическая фигура", а иллюстрацией для второго пункта является создание объекта "Прямоугольник с утолщенной линией", путем модификации объекта "Прямоугольник".

Вариант построения нового объекта, подразумевает введение специфических атрибутов и методов, тогда как модификация в первую очередь базируется на свойстве полиморфизма.

Обычный вариант наследования в объектно-ориентированном подходе - наследование типа "является". Типы объекта-наследника и объекта-родителя в этом случае имеют одну природу и являются сравнимыми. У объекта имеется один родитель.

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

Иногда требуется, чтобы вновь создаваемый объект состоял из нескольких компонент. Такой тип взаимодействия именуют композицией, или наследованием "состоит из", хотя с точки зрения объектно-ориентированного подхода это не есть наследование в чистом виде. Типы наследника и составляющих его объектов при этом могут быть несравнимыми. Чаще всего, такой вид взаимодействия реализуется путем включения исходного объекта (объектов) в качестве атрибутов нового объекта.

21