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



ЗНАЕТЕ ЛИ ВЫ?

Изображение атрибутов и операций на диаграммах Классов

Поиск

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

При изображении видимости атрибутов и операций можно использовать также собственную нота­цию Rose. Нотации Rose и UML для показа параметров видимости представлены в таблице

Практика 14. Связи

Типы связей

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

1. Ассоциация (association) — это семантическая связь между классами. Ее рисуют на диаграмме класов в виде обыкновенной линии (см. рис.)

После того как классы связали ассоциацией, они могут передавать друг другу сообщения на диаграмме Последовательности или Кооперативной диаграмме. Ассоциации могут быть двунаправленными (рис. 7.1) или однонаправленными. На языке UML двунаправленные ассоциации изображают виде простой линии без стрелок или со стрелками с обеих сторон. На однонаправленной ассоциации ставят только одну стрелку, показывающую направление связи.

После определения ассоциации Rose помещает в классы соответствующие дополнительные атрибуты. Например, если между классом Дом и классом Жилец установлена связь ассоциации, класс До: получит атрибут "жилец", чтобы знать, кто его владелец, а класс Жилец — атрибут "дом", что позволит: жильцу определить, каким домом он владеет.

2. Связь зависимости (dependency) также отражает связь между классами, но делает это несколько ина­че. Зависимости всегда однонаправленные, они показывают, что один класс зависит от определений, сделанных в другом. Специальные атрибуты для классов, связанных зависимостью, не создаются. Т; если от класса Жилец к классу Дом проведена связь зависимости, а не ассоциации, Rose не генерирует каких-то специальных атрибутов внутри этих классов. Тем не менее класс Жилец будет зависеть сделанных в классе Дом определений. Зависимости изображают в виде стрелки, проведенной пунктирной линией (см. рис.)


3. Агрегация (aggregations) представляет собой более тесную форму ассоциации. Агрегация - связь между целым и его частями. Например, у вас может быть класс Автомобиль, а также классы Двигатель, Покрышки и классы для других частей автомобиля. В результате объект класса Автомобиль бу­дет состоять из объекта класса Двигатель, четырех объектов Покрышек и т.д. Агрегацию изображают в виде линии с ромбиком у класса, являющегося целым (см. рис.)

4. С помощью обобщений (generalization) показывают связи наследования между двумя классами. Большинство объектноориентированных языков непосредственно поддерживают концепцию наследования. Она позволяет одному классу наследовать все атрибуты, операции и связи другого. На языке UML связь наследования называют обобщением и изображают в виде стрелки от классапотомка классу-предку

Выявление связей

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

Для обнаружения связей сделайте следующее:

· Начните с изучения диаграмм Последовательности и Кооперативных диаграмм. Если класс А посылает сообщение классу В, между этими классами должна быть установлена связь. Как пра­вило, обнаруживаемые таким способом связи — это ассоциации или зависимости.

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

· Исследуйте классы на предмет связей обобщения. Постарайтесь найти все классы, у которых есть несколько типов или вариантов. Например, у вас может быть класс Employee (Сотрудник). В вашей компании имеются два типа сотрудников — получающих почасовую оплату и оклад. Это значит, что вам нужно создать классы HourlyEmp и SalariedEmp, наследующие от класса Emp­loyee. Общие для всех сотрудников атрибуты, операции и связи следует поместить в класс Emp­loyee. Атрибуты, операции и связи, уникальные для сотрудников какого-то типа, необходимо поместить в классы HourlyEmp и SalariedEmp.

· Изучите классы еще раз и найдите остальные связи обощения. Постарайтесь обнаружить такие классы, которые имеют много общего. В частности, у вас могут быть классы CheckingAccount (Счет до востребования) и SavingsAccount (Сберегательный счет). Их данные и поведе­ние сходны. Для общих элементов двух классов можно создать третий класс Account (Счет).

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



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 356; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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