![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Диаграммы параллельных состояний ли же необходимо разрешить совмещать различную работу, то Работу следует преобразовать в обычный класс, как это сделано на рис. 6.15.
Работа периодинтервалВремени
Компетентность уровень Рис. 6.16. Тонкие особенности класса-ассоциации Ранее в подобных случаях специалисты по моделированию принимали самые разнообразные допущения относительно смысла класса-ассоциации. Некоторые из них предполагали, что могут существовать только уникальные комбинации, такие как в случае компетентности, в то время как другие избегали какого бы ни было ограничения. Многие аналитики вовсе не задумывались об этом и могли в одних случаях допускать наличие ограничения, а в других случаях - нет. Таким образом, когда вы пользуетесь языком UML, помните, что данное ограничение присутствует всегда. Часто этот вид конструкции можно встретить там, где речь идет об исторической информации, как в предыдущем примере с Работой. В подобной ситуации может оказаться полезным образец Historic Мар-ping , описанный в книге (Фаулер, 1997 [18]). Мы можем использовать его, определив стереотип история ( history ), как на рис. 6.17.
Рис. 6.17. Стереотип история для ассоциаций Параметризованный класс 111 Данная модель устанавливает, что в каждый момент времени отдельная Личность может работать только в единственной Компании. Однако в течение некоторого периода времени Личность может работать в нескольких компаниях. Это условие предполагает наличие интерфейса следующего вида: class Person { получить текущего работодателя Company getEmployer( ) ; работодатель на конкретную дату Company getEmployer(Date) ; void changeEmployer(Company newEmployer, Date changeDate); void leaveEmployer(Date changeDate); Стереотип история не является частью языка UML, однако я упомянул о нем здесь по двум причинам. Во-первых, эта нотация в нескольких случаях моделирования оказалась для меня весьма полезной. Во-вторых, она показывает, как можно использовать стереотипы для расширения языка UML. Параметризованный класс Некоторые языки, в особенности С-Н-, включают в себя понятие параметризованного класса или шаблона (template). Наиболее очевидная польза от применения этого понятия проявляется при работе с некоторыми совокупностями в сильно типизированных языках. Таким образом, в общем случае поведение для множеств можно определить с помощью шаблона класса Множество (Set). class Set <Т> { void insert(Т newElement); void remove(T anElement) ; После этого можно использовать это общее определение для задания конкретных классов-множеств. Set <Employee> employeeSet; Для этой цели в языке UML можно применить параметризованный класс, используя изображенную на рис. 6.18 нотацию. Множество П Шаблон класса -\-1 Параметр шаблона ![]() Рис. 6.18. Параметризованный класс Верхний прямоугольник с буквой Т на диаграмме является тем местом, где указывается параметр типа. (Можно указать более одного параметра.) В нетипизированных языках, таких как язык Smalltalk, такой вопрос не возникает, поэтому от данного понятия нет никакой пользы. Подобное использование параметризованного класса, например Множество <Служащие>, называется связанным элементом (bound element). Связанный элемент можно изобразить двумя способами. Первый способ отражает синтаксис языка С-Н- (рис. 6.19). Множество <Сужащие> Рис. 6.19. Связанный элемент (версия 1) Альтернативная нотация (рис. 6.20) усиливает связь с шаблоном и допускает переименование связанного элемента. Шаблон класса ![]() присвоить значение <Служащий> Связанный элемент - МножествоСлужащих Присвоение значения параметру Рис. 6.20. Связанный элемент (версия 2) Стереотип присвоить значение ( bind ) является стереотипом отношения уточнения. Эта отношение показывает, что МножествоСлужащих согласовано с интерфейсом Множества. В терминах спецификации МножествоСлужащих является подтипом Множества. Это соответствует другому способу реализации совокупностей конкретных типов, который заключается в объявлении всех необходимых подтипов.
ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |