Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование

Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 30

Описание файла

PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "книги и методические указания". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 30 страницы из PDF

7.2 предоставляет операции, перечисленные в табл. 7.2.Таблица 7.2ОперацияСемантикаdeposit()Размещает некоторую сумму в объекте Account.Увеличивает значение атрибута balance.withdraw()Снимает некоторую сумму с Account.Уменьшает значение атрибута balance.getOwner()Возвращает владельца объекта Account – операция запроса.setOwner()Меняет владельца объекта Account.Этот набор операций определяет поведение объекта. Обратите внимание, что вызов некоторых из этих операций (deposit(), withdraw(), setOwner()) приводит к изменению значений атрибута и может генерироватьпереходы состояния.

Операция getOwner() не меняет значения атрибутаи поэтому не приводит к переходу состояния.Инкапсуляция, или сокрытие данных, – одно из основных преимуществ ОО программирования. Она обеспечивает возможность созданияболее надежного и расширяемого программного обеспечения. В этомпростом примере объекта Account пользователю не надо беспокоитьсяо структуре данных, сокрытых в объекте. Его интересует только то,что объект может сделать.

Иначе говоря, ему интересны сервисы (ser+vices), предлагаемые другим объектам.7.2.2. Обмен сообщениямиОбъекты формируют поведение системы путем обмена сообщениямипо связям. Это – кооперация.У объектов есть значения атрибутов и поведение, но как эти объектыобъединить, чтобы создать систему программного обеспечения? Объекты кооперируются для осуществления функций системы. Это означает, что они устанавливают связи с другими объектами и обмениваются сообщениями по этим связям. Когда объект получает сообщение,он проверяет набор своих операций в поиске той, сигнатура которойсоответствует сигнатуре сообщения. Если таковая имеется, он инициирует эту операцию (рис. 7.3).

В сигнатуру входят имя сообщения (илиоперации), типы параметров и возвращаемое значение.Во время выполнения ОО система состоит из множества создаваемыхобъектов, существующих некоторое время и затем, возможно, уничтожаемых. Эти объекты обмениваются сообщениями, инициируя сервисы друг друга. Такая структура радикально отличается от процедур1537.3. Нотация объектов в UMLОбъект BankсообщениеОбъект Accountwithdraw (150.00)Объект Bank посылает сообщение«withdraw 150.00» объекту AccountВ ответ объект Account вызывает свою операциюwithdraw, которая уменьшает баланс счета на 150.00Рис.

7.3. Обмен сообщенияминых программных систем, которые изменяются со временем путем последовательного применения функций к данным.7.3. Нотация объектов в UMLПиктограмма объекта в UML – это прямоугольник с двумя ячейками(рис. 7.4). В верхней ячейке размещается идентификатор объекта, который всегда подчеркивается. Это важно, поскольку в UML обозначения классов и объектов очень похожи. Если строго следовать правилам применения подчеркивания, никогда не возникнет вопроса, чемявляется моделируемый элемент – классом или объектом.UML очень гибок относительно представления объектов на диаграммах объектов.

Идентификатор объекта может включать следующиеэлементы.•Только имя класса, например :Account. Это означает, что имеется анонимный объект или экземпляр данного класса (т. е. это экземпляркласса Account, но он не идентифицирован или в действительности неимеет значения, какой именно это экземпляр). Анонимные объектыобычно используются, когда на данной диаграмме присутствует толко один объект этого конкретного класса.

Если необходимо показатьдва объекта одного и того же класса, каждому из них должно бытьприсвоено уникальное имя, чтобы можно было их различать.имяобъектаячейка имениячейка атрибутовимяклассаjimsAccount:AccountaccountNumber : String = "1234567"owner : String = "Jim Arlow"balance : double = 300.00имятипзначениеатрибута атрибута атрибутаРис. 7.4. Нотация объектов в UML154Глава 7. Объекты и классы•Только имя объекта, например jimsAccount.

Здесь обозначен конкретный объект, но не указано, какому классу он принадлежит.Данное обозначение может быть полезным на самых ранних стадиях анализа, когда еще не выявлены все классы.•Если указываются и имя объекта, и имя класса, они разделяютсядвоеточием. Двоеточие может читаться как «является экземпляром класса». Таким образом, диаграмму на рис. 7.4 можно прочитать так: существует объект с именем jimsAccount, который являетсяэкземпляром класса Account.Объекты одного класса имеют одинаковые операции и атрибуты, но значения их атрибутов могут быть разными.Имена объектов обычно записываются заглавными и строчными буквами вперемежку, начиная со строчной буквы. Следует избегать специальных символов, таких как пробелы и подчеркивания.

Такойстиль записи называют lowerCamelCase, потому что в результате получаются «горбатые» на вид слова.Как сказано в разделе 7.2, класс определяет атрибуты и операции набора объектов. Поскольку все объекты одного класса имеют совершенно одинаковый набор операций, они перечисляются в пиктограммекласса, а не в пиктограмме объекта.Атрибуты по выбору могут быть приведены в нижней ячейке пиктограммы объекта. Тем атрибутам, которые решено вынести на диаграмму, должны быть присвоены имена.

Их тип и значение указывать необязательно. Имена атрибутов также записываются в стиле lowerCamelCase.7.3.1. Значения атрибутов объектовЗначение каждого атрибута записывается следующим образом:имя : тип = значениеМожно отображать все, некоторые или вообще не отображать значения атрибутов. Все зависит от назначения диаграммы.Чтобы сохранить простоту и ясность диаграммы, можно опускать типы атрибутов, поскольку они уже определены в классе объекта. Когдабудет показано применение диаграмм объектов при анализе (глава 12),станет понятно, почему может быть принято решение отображатьв пиктограмме объекта не всю информацию.7.4. Что такое классы?Книга «UML Reference Manual» [Rumbaugh 1] определяет класс как «дескриптор набора объектов, имеющих одинаковые атрибуты, операции,7.4.

Что такое классы?155методы, отношения и поведение». Подытожить это можно так: класс –это дескриптор набора объектов, имеющих одинаковые свойства.Класс описывает свойства ряда объектов.Каждый объект – это экземпляр только одного класса. Вот несколькорекомендаций относительно классов.• Класс надо рассматривать как шаблон объектов: класс определяетструктуру (набор свойств) всех объектов этого класса. Все объектыодного класса должны иметь одинаковый набор операций, одинако+вый набор атрибутов и одинаковый набор отношений, но значенияатрибутов могут быть различными.• Класс – это штамп, а объекты – отпечатки этого штампа на листкебумаги. Или класс – это форма для печенья, а объекты – печенье.Каждый объект – это экземпляр только одного класса.Классификатор и экземпляр – принятые деления UML (см.

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

По существу, это также однаиз самых важных ОО концепций. Применяя понятие классов, можноговорить об отдельном типе машин или о виде дерева, даже не упоминая конкретный экземпляр. То же самое в программном обеспечении.Классы позволяют описывать набор свойств, которыми должен обладать каждый объект класса, без необходимости описывать каждый изэтих объектов.Посмотрим на рис. 7.5 и подумаем, сколько классов изображено наэтом рисунке?На самом деле ответа на этот вопрос нет! Существует практически неисчислимое количество способов классификации объектов реальногомира. Вот несколько классов, которые можно увидеть:• класс кошек;• класс жирных прожорливых котов (у нас есть кот – экземпляр этого класса!);156Глава 7.

Объекты и классыРис. 7.5. Сколько классов здесь изображено?•••класс деревьев;класс листьев;и т. д., и т. п.Правильный выбор схемы классификации – один из ключей к успешному ОО анализу.Поскольку существует такое огромное количество вариантов, выборнаиболее подходящей схемы классификации – один из самых важныхаспектов ОО анализа и проектирования.

Как это делать, будет показано в главе 8.Посмотрев на рис. 7.5 внимательнее, можно увидеть другие типы отношений кроме уже упоминавшегося класс/экземпляр. Например,можно обнаружить несколько уровней классификации. Есть класс кошек. Классификацию можно расширить и выделить подклассы «домашних кошек» и «диких кошек». Или даже подклассы «современные кошки» и «доисторические кошки». Это отношение между классами: один класс является подклассом другого. И наоборот, класс«кошки» является суперклассом «домашних кошек» и «диких кошек».

Более подробно об этом рассказывается в главе 10, посвященнойнаследованию.На рис. 7.5 видно, что у объектов «деревья» есть наборы объектов «листья». Это очень прочный вид отношений между деревьями и листьями.Каждый объект «лист» принадлежит определенному объекту «дерево».Деревья не могут обмениваться или совместно использовать листья.И жизненный цикл листа тесно связан и контролируется деревом. Такое отношение между объектами в UML называют композицией (composition).1577.4. Что такое классы?Однако отношения между, скажем, компьютерами и внешними устройствами совершенно другие. Компьютеры могут обмениваться внешними устройствами, например такими, как пара динамиков.

Разные компьютеры даже могут совместно использовать некоторые устройства.Кроме того, если компьютер выходит из строя, его внешние устройствамогут прекрасно пережить его и использоваться новой машиной. Жизненный цикл внешних устройств обычно не зависит от жизненногоцикла компьютера. В UML этот тип отношений объектов называется агрегацией (aggregation). Отношения объектов, в частности композицияи агрегация, более подробно рассматриваются в главе 18.7.4.1. Классы и объектыОтношения объединяют сущности.Между классом и объектами этого класса устанавливается отношение«instantiate» (создать экземпляр).

Это первый встречающийся нам пример отношения. Книга «UML Reference Manual» [Rumbaugh 1] определяет отношение как «связь между элементами модели». В UML существует множество типов отношений, и со временем все они будут намирассмотрены.Отношение зависимости означает, что изменение сущностипоставщикаоказывает влияние на сущностьклиент.Отношение «instantiate» между объектами и классами показано нарис. 7.6.

Свежие статьи
Популярно сейчас