Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 76
Описание файла
PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 76 страницы из PDF
Например, на рис. 18.20 класс Borrower играет роль borrowers в своей ассоциации с LibraryManager. А на рис. 18.21эта роль была уточнена и превратилась в более конкретные роли под41318.13. Что мы узналиклассов Borrower, student и staff. Как правило, некоторые роли ассоциаций проецируются в роли частей, а некоторые – нет.Аналогично соединители могут проецироваться в ассоциации междуклассами или только во временные отношения, созданные в контекстеструктурированного класса. В этом простом примере каждый соединитель может быть отображен в ассоциацию.Внутреннюю структуру структурированных классификаторов можнопредставить как на диаграмме классов, так и на специальной диаграмме, которую называют диаграммой составных структур (compositestructure diagram). Имя диаграммы соответствует имени структурированного классификатора, а содержимое диаграммы – это содержимоеструктурированного классификатора.
На рис. 18.22 изображена диаграмма составных структур класса LibraryManager.диаграмма составных структурLibraryManagerstudent:StudentBorrower[0..*]studentLoan:Loan[0..4]staff:StaffBorrower[0..*]0..*1:Book[0..*]10..*staffLoan:Loan[0..8]:Librarian[1..*]loggedOnLibrarian:Librarian[0..1]Рис. 18.22. Диаграмма составных структур класса LibraryManager18.13. Что мы узналиВ этой главе было показано, как выявленные при анализе отношенияпреобразуются в отношения уровня проектирования, которые ужеможно реализовывать.
Мы узнали следующее.•Уточнение аналитических отношений до отношений уровня проектирования включает:•уточнение ассоциаций до агрегации или композитной агрегациив соответствующих случаях;414Глава 18. Уточнение отношений, выявленных при анализе•••••••реализацию классовассоциаций;реализацию ассоциаций одинкомногим;реализацию ассоциаций многиекодному;реализацию ассоциаций многиекомногим;реализацию двунаправленных ассоциаций;введение возможности навигации;••введение кратности на обоих концах ассоциации;введение имени роли на обоих концах ассоциации или, по крайней мере, на целевом конце;• использование структурированных классификаторов.Агрегация и композиция.• Это отношения типа целоечасть, где объекты одного класса играют роль целого, или агрегата, а объекты другого класса играют роль частей:•••••целое использует сервисы частей; части обслуживают запросы целого;• целое является доминирующей, контролирующей сторонойотношения; часть обычно играет более пассивную роль.Эти отношения транзитивны – если C является частью B и B является частью A, тогда C является частью A.Эти отношения асимметричны:• целое никогда – ни прямо, ни косвенно – не может быть частью самого себя;• циклы в схеме агрегации недопустимы.Существует два типа отношения агрегации:• агрегация;• композитная агрегация – обычно ее называют просто композицией.Агрегация.• Семантика агрегации:• агрегат может зависеть от частей, а иногда может существовать независимо от них;• части могут существовать независимо от агрегата;• агрегат является несколько неполным в случае отсутствия некоторых частей;• несколько агрегатов могут владеть частями совместно;• возможны иерархии и сети агрегации;• целое всегда знает о существовании частей, но если отношениеоднонаправленное, от целого к части, части не знают о целом.18.13.
Что мы узнали••Примером агрегации может быть компьютер и его периферийное оборудование:•компьютер слабо связан со своим периферийным оборудованием;•периферийное оборудование может появляться и исчезать;•периферийное оборудование может использоваться совместнонесколькими компьютерами;•периферийное оборудование не «принадлежит» ни одномуконкретному компьютеру.Композиция.••••415Это строгая форма агрегации:•части одновременно принадлежат только одному композиту;•композит обладает исключительной ответственностью за управление всеми своими частями – ответственностью за их создание и уничтожение;•композит также может высвобождать части, если ответственность за них берет на себя другой объект;•если композит уничтожается, он должен уничтожить все своичасти или передать ответственность за них какомуто другомуобъекту;•каждая часть принадлежит только одному композиту, поэтому возможны только иерархии композиции – сетей композиции не существует.Примером композиции может быть дерево и его листья:•листья принадлежат только одному дереву;•листья не могут принадлежать нескольким деревьям;•когда умирает дерево, умирают и его листья.Часть в композите эквивалентна атрибуту:•явная композиция применяется, когда части важны и представляют интерес;•атрибуты используется, когда части не важны и не представляют интереса.Уточнение аналитических ассоциаций.•Аналитические ассоциации должны быть уточнены в одно из отношений агрегации везде, где это возможно.
Если при этом в схеме агрегации образуется цикл, должна использоваться ассоциация или зависимость.•Процедура уточнения ассоциаций до отношений агрегации:•вводятся кратности и имена ролей;416Глава 18. Уточнение отношений, выявленных при анализе•принимается решение о том, какая сторона отношения является целым, а какая – частью:•рассматривается кратность со стороны целого:•••если она равна 1, вероятно, можно использовать композицию – если ассоциация имеет семантику композиции,должна применяться композиция;•если она не равна 1, должна использоваться агрегация;вводится возможность навигации от целого к части.Типы ассоциаций.•Ассоциация одинкодному – почти всегда становится композицией.
Однако она может быть заменена на атрибут или два класса, которые она связывает, могут быть объединены в один.•Ассоциация многиекодному:••••используется агрегация; композиция не может использоваться, поскольку кратность целого – «многие»;• проводится проверка на наличие циклов в схеме агрегации.Ассоциация одинкомногим:• здесь на стороне части находится коллекция объектов;•используется встроенный массив (большинство ОО языковпрограммирования поддерживают массивы напрямую); обычно они обладают плохой гибкостью, но довольно быстрые;•используется классколлекция; они характеризуются большей гибкостью, чем встроенные массивы, и поиск по коллекции осуществляется быстрее (в других случаях они медленнее массивов).Коллекции.• Это специализированные классы, экземпляры которых могутуправлять коллекциями других объектов.• Все классыколлекции имеют операции для:• добавления объектов в коллекцию;••удаления объектов из коллекции;получения ссылки на объект коллекции;•обхода коллекции – прохода по коллекции от первого объекта до последнего.Моделирование с использованием коллекций – существует четыре варианта:• классколлекция моделируется явно;• путем введения свойства в отношение, например {Vector}, инструменту моделирования сообщается, какую коллекцию использовать;18.13.
Что мы узнали•••417путем введения свойства в отношение программисту сообщается требуемая семантика коллекции:• {ordered} – элементы коллекции располагаются в строгомпорядке;• {unordered} – элементы коллекции располагаются не в строгом порядке;• {unique} – все элементы коллекции уникальны;• {nonunique} – в коллекции допускается дублирование элементов.• задача по уточнению отношений одинкомногим в классыколлекции передается программистам;• нельзя «переусердствовать» в моделировании – выбор конкретного классаколлекции часто является тактическим решением, которое может быть принято программистами вовремя реализации.Типы коллекций:• Коллекции OCL:• Bag – {unordered, nonunique};• Set – {unordered, unique};• OrderedSet – {ordered, unique};• Sequence – {ordered, nonunique}.• Карта:• еще называют словарем;• очень быстрый поиск соответствующего значения по заданному ключу;• ведет себя как база данных с таблицей, состоящей из двухстолбцов – ключа и значения;• ключи должны быть уникальными.Конкретизированные отношения.• Некоторые отношения являются исключительно артефактами анализа и должны быть подготовлены к реализации посредством процесса конкретизации.• Ассоциации многиекомногим:• это отношение конкретизируется в класс;• принимается решение, какая часть является целым, и используется агрегация, композиция или ассоциация.• Двунаправленные ассоциации:• заменяются однонаправленной агрегацией или композицией от целого к части и однонаправленной ассоциациейили зависимостью от части к целому.418Глава 18.
Уточнение отношений, выявленных при анализе••Классыассоциации:• принимается решение, какая сторона является целым, а какая – частью;• заменяется классом (обычно его имя аналогично имениклассаассоциации);• добавляется примечание с ограничением, указывающимна то, что объекты на каждом конце конкретизированногоотношения должны образовывать уникальную пару.Изучение композиции с использованием структурированных классов.• Структурированный классификатор – классификатор (например, класс), имеющий внутреннюю структуру.• моделируется как части, объединенные с помощью соединителей:••••часть – роль, которую могут исполнять один или более экземпляров классификатора в контексте структурированного классификатора;•имя – имя части;•тип – тип объектов, которые могут играть роль;•кратность – число объектов, которые одновременно могут играть ту или иную роль;соединитель – отношение между частями в контекстеструктурированного классификатора.Внутренняя структура может быть отображена на диаграммах классов или на диаграмме составных структур.Структурированный класс:•класс, имеющий внутреннюю структуру;•имеет дополнительное ограничение относительно того, чтоему принадлежат (он имеет неявное отношение включения)все его части, соединители и порты.19Интерфейсы и компоненты19.1.
План главыДанная глава посвящена двум основным понятиям – интерфейсами компонентам. Эти темы обсуждаются вместе, потому что, как выувидите, они тесно взаимосвязаны. Кроме того, в разделе 19.10 будетпоказано, как использование интерфейсов в сочетании со специальным типом компонентов, которые называют подсистемами, обеспечивает возможность создания гибких архитектур систем.19.2. Деятельность UP: ПроектированиеподсистемыЭта глава в основном посвящена деятельности UP Проектирование подсистемы (Design a subsystem). Подсистема – это всего лишь особый типкомпонентов, поэтому здесь мы обсуждаем компоненты и компонентноориентированную разработку вместе с подсистемами.
Как будет показано позже, рассматриваемые вопросы оказывают влияние на другие проектные деятельности UP.Деятельность UP Проектирование подсистемы представлена на рис. 19.2.Оригинальный рисунок изменен в соответствии с UML 2, в которомподсистемы являются типами компонентов, а не помеченными стереотипами пакетами. Измененные артефакты на рисунке затушеваны.Деятельность Проектирование подсистемы заключается в разделении системы на максимально независимые друг от друга части.