Преимущества объектной модели 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Преимущества объектной модели



1. Позволяет в полной мере использовать возможности объектных и объектно-ориентированных языков программирования.

2. Повышает уровень унификации разработки и пригодность для повторного использования не только программ, но и проектов. Использование предыдущих разработок дает выигрыш в стоимости и времени.

3. Упрощает процесс внесения изменений из-за наличия стабильных промежуточных описаний. Это дает возможность не перерабатывать систему целиком даже в случае существенных изменений исходных требований.

4. Уменьшает вероятности допущения разнообразных ошибок.

5. Ориентирована на человеческое восприятие мира.

Некоторые факты из истории

1969 – Кэй (Kay) в своей диссертации предложил идею объектного подхода;

1979 – Джонс (Jones) ввел концепцию объектного подхода;

1981 – Буч (Booch) предложил методы OOD;

1988 – Шлеер и Меллор (Shlaer and Mellor) предложили методы OOA;

1988 – Страуструп (Stroustrup) опубликовал методическую статью по OOP;

1991 – Румбах (Rumbaugh) объединил OOA и OOD.

Организации, отвечающие за стандарты по объектной технологии: Object Management Group (OMG) и комитет ANSI X3J7.

 

Классы и объекты

 

Одними их базовых понятий объектной модели являются понятия классов и объектов.

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

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

Поведение определяет совокупность действий и реакций объекта; выражается в терминах состояния объекта и передачи сообщений. Иными словами, поведение объекта – это наблюдаемая и проверяемая извне деятельность. Состояние объекта представляет суммарный результат его поведения.

Операцией называется определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию; это услуга, которую класс может предоставить своим клиентам. Типичный клиент может совершать операции 5 видов:

1. Модификатор – операция изменения состояния объекта.

2. Селектор – операция, считывающая состояние объекта, но не изменяющая его.

3. Итератор – операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности.

4. Конструктор – операция создания объекта и/или его инициализации.

5. Деструктор – операция очищения и/или разрушения объекта.

Совокупность всех методов и свободных процедур, относящихся к конкретному объекту, образует протокол этого объекта.

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

Идентичность – это такое свойство объекта, которое отличает его от всех других объектов. Следует уметь отличать имя объекта от самого объекта. Если абстракция представляет собой собрание свойств без собственного поведения, это не объект, а структура.

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

Связь – это специфическое сопоставление, через которое клиент запрашивает услугу у объекта-сервера или через которое один объект находит путь к другому.

Участвуя в связи, объект может выполнять одну из трех ролей:

актер: может воздействовать на другие объекты, но сам никогда не подвергается воздействию других объектов (исключительно активный объект);

сервер: может только подвергаться воздействию со стороны других объектов, но сам никогда не выступает в роли воздействующего объекта (исключительно пассивный объект);

агент: может выступать как в активной, так и в пассивной роли.

На рис.1 представлены четыре объекта, каждый из которых характеризует описанные выше роли.

 
 

 


Рисунок 1 – Взаимодействующие объекты

 

Агрегация – специализированный частный случай ассоциации; описывает отношения целого и части, приводящие к соответствующей иерархии объектов.

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

 
 

 


Рисунок 2 – Агрегация

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

Поддерживаются 6 (шесть) видов отношений между классами.

1. Ассоциация – смысловая связь (по умолчанию – двусторонняя), фиксирующая участников, их роли и мощность отношения (1:1, 1:*, *:*).

 

 

* 1

Товар Сделка

 

2. Наследование – такое отношение между классами, когда один класс повторяет структуру и поведение другого или других классов. Устанавливает отношение общего и частного. Классы, экземпляры которых создаются, называются конкретными, не создаются – абстрактными. Выводы: у любого класса может быть два вида клиентов – экземпляры (объекты) и подклассы (наследники).

Изображается в виде стрелки, направленной от потомка к предку:

 

Датчик Датчик температуры

 

3. Агрегация между классами имеет тот же смысл, что и в случае объектов. Различают агрегацию по значению (физическое включение) и по ссылке. Если есть сомнения в выборе между наследованием и агрегацией, лучше выбрать вторую.

Изображается в виде линии с закрашенным кругом:

 

Контроллер Нагреватель

 

4. Отношение использования между классами соответствует связи между их экземплярами (клиент-серверные отношения).

Изображается в виде линии с пустым кругом:

 

Контроллер План выращивания

 

5. Инстанцирование предполагает использование параметризованных классов, когда в качестве формального параметра классу передается указатель на какой-либо класс, а при обращении к его экземпляру формальный параметр замещается фактическим. Является продолжением (или частным случаем) отношения использования.

Изображается в виде прямоугольника-врезки в правом верхнем углу класса.

6. Метакласс – это класс, экземпляры которого являются классами.

Изображается в виде закрашенного класса.

 

На этапе анализа и ранних стадиях проектирования решаются две основные задачи:

– выявление основных классов и объектов, составляющих словарь предметной области;

– построение структур, обеспечивающих взаимодействие объектов, при котором выполняются требования задачи.

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

Зацепление определяет степень глубины связей между отдельными модулями (чем меньше, тем лучше). Пример неправильного подхода: источник питания стереосистемы размещен в одной из колонок.

Связность – это степень взаимодействия между элементами отдельного модуля (класса, объекта), характеристика его насыщенности: «Класс Dog будет функционально связным, если он описывает поведение собаки, всей собаки, и ничего, кроме собаки».

Достаточность – наличие в классе или модуле всего необходимого для реализации логичного и эффективного поведения.

Под полнотой подразумевается наличие в интерфейсной части класса всех характеристик абстракции; интерфейс должен гарантировать все для взаимодействия с пользователями.

Примитивными являются только такие операции, которые требуют доступа к внутренней реализации абстракции

 

Классификация

 

Классификация – это средство упорядочения знаний. Исторически известны только три подхода: классическая категоризация, концептуальная кластеризация, теория прототипов.

При классическом подходе все вещи, обладающие данным свойством или совокупностью свойств, формируют некоторую категорию. Причем наличие этих свойств является необходимым и достаточным условием, определяющим категорию.

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

Концептуальная кластеризация – современный вариант классического подхода. Здесь сначала формируются концептуальные описания классов («кластеров объектов»), а затем мы классифицируем сущности в соответствии с их описаниями. Это именно понятие, а не признак или свойство: «Если песня скорее про любовь, чем про что-то другое, то мы помещаем ее в категорию любовная песня, хотя степень любовности едва ли можно измерить».

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

Однако существуют некоторые абстракции, которые не имеют ни четких свойств, ни четкого определения. Теория прототипов определяет класс одним объектом-прототипом; новый объект относится к классу при условии, что он наделен существенным сходством с прототипом. Пример: игры.

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

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

Существует семь проверенных практикой подходов к анализу объектно-ориентированных систем.

1. Классические подходы – опираются на классическую категоризацию.

Шлаер и Меллор: осязаемые предметы (датчики), роли (рабочий, студент), события (запрос, прерывание), взаимодействие (встреча, пересечение).

Росс (БД): люди (выполняют определенные функции), места (области, связанные с людьми или предметами), предметы (осязаемый материальный объект), организации (формально организованная совокупность людей и предметов, которая имеет определенную цель и не зависит от отдельных индивидуумов), концепции (принципы и идеи), события.

Коад и Йордан: структуры (отношения «целое-часть» и «общее-частное»), другие системы (внешние), устройства, события, роли, места, организационные единицы.

2. При анализе поведения именно динамическое поведение рассматривается как первоисточник классов и объектов; основан на концептуальной кластеризации. Инициаторы определенного поведения и его участники опознаются как объекты и делаются ответственными за определенные роли. Примеры: ввод/вывод, запрос.

3. Анализ предметной области – попытка выделить те объекты, операции и связи, которые эксперты данной области считают наиболее важными.

Этапы: построение скелетной модели предметной области; изучение существующих в данной области систем; определение сходства и различий между системами; уточнение общей модели для приспособления к нуждам конкретной системы.

Пример: предметная область – бухгалтерские отчеты; определяются абстракции и механизмы, обслуживающие все виды отчетов; цель исходной задачи – создание системы отчетов.

Эксперт – будущий пользователь системы (бухгалтер, диспетчер).

4. По отдельности все вышеперечисленные подходы сильно зависят от индивидуальных способностей и опыта аналитика. Анализ вариантов предусматривает упорядоченное последовательное их использование. Основан на перечислении и тщательной проработке сценариев работы системы.

5. Метод CRC-карточек удачно реализует на практике предыдущий подход (Class / Responsibilities / Collaborators – Класс / Ответственности / Участники). Сверху на карточке пишется название класса, снизу в левой половине – за что он отвечает, в правой – с кем он сотрудничает. Проход по сценарию приводит к дописыванию новых пунктов в существующих карточках или к созданию новых. Расположение карточек может показать поток сообщений между объектами и иерархию классов.

6. Неформальное описание – радикальная альтернатива классическому анализу (Аббот). Надо описать задачу или ее часть на обычном (человеческом) языке, а потом подчеркнуть существительные и глаголы. Существительные – кандидаты на роль классов, а глаголы могут стать именами операций. Метод можно автоматизировать. Используется в Токийском технологическом институте и в Fujitsu.

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



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 360; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.81.206 (0.026 с.)