Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 39
Описание файла
PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 39 страницы из PDF
Что мы узнали•••обязанность – семантически связный набор операций;•класс должен иметь не более трехпяти обязанностей.197•Класс имеет высокую внутреннюю связность (cohesion) – всесвойства класса служат реализации его назначения.•Класс имеет низкую связанность с другими классами (coupling) –для реализации своего назначения класс должен взаимодействовать с небольшим числом классов.Каковы признаки плохого класса анализа?•Он является функтоидом – классом с одной операцией.•Он является всемогущим классом – классом, делающим все.Классам, в именах которых присутствуют слова «system» или«controller», следует уделять больше внимания.•У него глубокое дерево наследования – в реальности деревья наследования, как правило, небольшие.•У него низкая внутренняя связность.• У него высокая связанность с другими классами.Анализ существительное/глагол:•Ищите существительные или именные группы; это потенциальные классы или атрибуты.•Ищите глаголы или глагольные группы; это потенциальные обязанности или операции.••Процедура: собрать относящуюся к делу информацию и проанализировать ее.CRCанализ – мощная и одновременно забавная техника мозговогоштурма.•Важные моменты предметной области записываются на клеящихся записках (стикерах).•Каждая записка разделена на три ячейки:•••класс – содержит имя класса;обязанности – содержит список обязанностей этого класса;•участники – содержит список других классов, с которымивзаимодействует данный класс.Процедура CRCанализа – мозговой штурм:•••попросите членов команды назвать «сущности», которые действуют в их области деятельности, и запишите их на клеящихся записках;попросите команду обозначить обязанности сущностей и запишите их в ячейке обязанностей на записке;попросите команду определить классы, которые могли бы работать совместно, и запишите их в ячейке участников каждой198Глава 8.
Выявление классов анализа•••записки; если стикеры приклеены на доску, нарисуйте междуними линии.Стереотипы RUP могут использоваться с целью сосредоточить анализ на трех типах классов:• «boundary» – класс, играющий роль посредника во взаимодействии системы и ее окружения;• «control» – класс, инкапсулирующий характерное поведение прецедента;• «entity» – класс, используемый для моделирования постояннойинформации о чемто.Учтите другие источники классов:• физические объекты, документооборот, интерфейсы с внешниммиром и концептуальные сущности;• базовые шаблоны – ориентированное на компоненты моделирование.Создание аналитической модели в первом приближении:• сравниваются результаты анализа существительное/глагол,CRCанализа, применения стереотипов RUP и проверки другихисточников классов;• разрешаются синонимы и омонимы;• отличия результатов разных техник указывают на области неопределенности;• результаты объединяются в аналитическую модель в первомприближении.9Отношения9.1.
План главыВ этой главе рассматриваются отношения между объектами и междуклассами. Чтобы понять, что такое отношение, прочтите раздел 9.2.Далее обсуждаются: в разделе 9.3 – связи (отношения между объектами), в разделе 9.4 – ассоциации (отношения между классами) и в разделе 9.5 – зависимости (универсальные отношения).9.2. Что такое отношение?Отношения – это семантические (значимые) связи между элементамимодели.
Отношения – это способ объединения сущностей в UML. Намуже встречались некоторые типы отношений:•между актерами и прецедентами (ассоциация);•между прецедентами и прецедентами (обобщение, «include», «extend»);•между актерами и актерами (обобщение).UMLотношения объединяют сущности.В этой главе рассматриваются взаимоотношения между объектамии между классами. Начнем со связей и ассоциаций, а в главе 10 обсудим обобщение и наследование.Чтобы создать функциональную ОО систему, нельзя позволять объектам оставаться в гордом одиночестве. Их необходимо объединять, чтобы они могли выполнять полезную для пользователей системы работу.Соединения между объектами называются связями.
Когда объектыработают совместно, говорят, что они взаимодействуют.Рис. 9.1. План главы9.4.2.2. Иерархии и сети9.4.2.1. Рефлексивныеассоциации9.4.2. Кратность9.6. Что мы узнали9.4.6. Квалифицированныеассоциации9.4.5. КлассыQассоциации9.4.4. Ассоциациии атрибуты9.4.3. Возможностьнавигации9.4.1. Синтаксис ассоциации9.3.1. Диаграммыобъектов9.3.2. Пути9.4.
Что такое ассоциация?9.3. Что такое связь?9.2. Что такое отношение?9.5.2.3. «refine»9.5.2.4. «derive»9.5.1.3. «parameter»9.5.1.4. «send»9.5.1.5. «instantiate»9.5.2.2. «substitute»9.5.2.1. «trace»9.5.2. Зависимостиабстракции9.5.1.2. «call»9.5.1.1. «use»9.5.1. Зависимостииспользования9.5. Что такое зависимость?9.5.3.3. «permit»9.5.3.2. «import»9.5.3.1. «access»9.5.3. Зависимостидоступа200Глава 9. Отношения9.3. Что такое связь?201Если между объектами установлена связь, то и между их классамидолжно существовать какоето семантическое соединение. В этом естьздравый смысл: чтобы объекты могли общаться друг с другом напрямую, классы этих объектов должны какимто образом знать друго друге.
Соединения между классами называются ассоциациями. Связи между объектами на самом деле являются экземплярами ассоциаций между их классами.9.3. Что такое связь?Чтобы создать объектноориентированную программу, объекты должны общаться друг с другом. В сущности, исполняющаяся ОО программа – это гармоничное сообщество взаимодействующих объектов.Объекты обмениваются сообщениями через соединения, называемыесвязями.Связь – это семантическое соединение между двумя объектами, которое обеспечивает им возможность обмена сообщениями. Исполняющаяся ОО система содержит множество объектов, которые появляются и исчезают, и множество связей (которые тоже появляются и исчезают), объединяющих эти объекты. Через эти связи происходит обменсообщениями между объектами.
Получив сообщение, объект инициирует соответствующую операцию.Разные ОО языки программирования реализуют связи поразному. Javaреализует связи как объектные ссылки; C++ может реализовыватьсвязи как указатели, как ссылки или путем прямого включения одного объекта в другой.Каким бы ни был подход, минимальное требование для установлениясвязи: по крайней мере один из объектов должен иметь объектнуюссылку на другой.9.3.1. Диаграммы объектовДиаграмма объектов – это диаграмма, представляющая объекты и ихотношения в некоторый момент времени. Это как снимок части исполняющейся ОО системы в определенный момент, показывающий объекты и связи между ними.Соединенные связями объекты могут исполнять различные роли по отношению друг к другу. На рис.
9.2 можно видеть, что объект ila играетроль chairperson (председатель) в его связи с объектом bookClub (книжный клуб). На диаграмме объектов это отображается путем размещения имени роли на соответствующем конце связи. Имена ролей могутрасполагаться на любом или на обоих концах связи. В данном случаеобъект bookClub всегда играет роль «клуба», поэтому нет особого смысла202Глава 9. ОтношенияBookClubимя ролиchairpersonbookClub:Clubдвунаправленная связьsecretarymemberila:Personerica:Personnaomi:PersonРис. 9.2. Двунаправленные связи между объектамипоказывать это на диаграмме. Это никак не улучшило бы пониманияотношений объектов.На рис. 9.2 показано, что в определенный момент времени объект ilaиграет роль chairperson. Однако важно понимать, что связи – это дина+мические соединения (dynamic connections) объектов.
Иначе говоря,они могут быть непостоянными во времени. В данном примере рольchairperson может передаваться объектам erica или naomi, и можно былобы без труда создать диаграмму объектов, отображающую эту новуюситуацию.Обычно одна связь соединяет только два объекта, как показано нарис. 9.2. Однако UML допускает соединение нескольких объектов одной связью.
Такую связь называют nарной. Она изображается в видеромба, от которого отходят линии к каждому из объектовучастников.Многие разработчики моделей (и мы в том числе) считают такую идиому ненужной. Она редко используется и не всегда поддерживаетсясредствами моделирования UML. Поэтому не будем ее рассматривать.Диаграммы объектов – это моментальные снимки работающей ОО системы.На рис.
9.2 можно найти три связи между четырьмя объектами:•связь между bookClub и ila;•связь между bookClub и erica;•связь между bookClub и naomi.Для задания направления движения сообщений по связи используетсявозможность навигации.На рис. 9.2 связи двунаправленные, поэтому можно сказать, что связьсоединяет ila с bookClub или что связь соединяет bookClub с ila.2039.3.
Что такое связь?исходный объектцелевой объект:PersonDetails:Addressоднонаправленная связьРис. 9.3. Однонаправленная связь между объектамиЕсли связь однонаправленная, для задания направления движения сообщений по связи используется возможность навигации.Если навигация возможна, на конце связи помещают стрелку; в противном случае связь завершают крестом (навигация не допускается).Возможность навигации немного похожа на улицу с одностороннимдвижением.