Rational Rose для разработчиков и ради разработчиков

         

Ассоциация "один ко многим"


Данный вид ассоциаций также представляет особую ценность при проектировании классов. Множественность ассоциации задается в свойствах связи (пункты Role A Detail и Role B Detail. Где помимо ролей можно задать и специфические атрибуты конкретной ассоциациии, ну, скажем, дать ей название. Рис. 3 показывает скриншот данного окна). Рисунок 4, в свою очередь, демонстрирует внешний вид данной ассоциации.

Рис.3

Рис.4

ФАЙЛ STRING.h

* * *

private: //## implementation // Data Members for Associations

//## Association: <unnamed>%39FD300C00A9 //## begin String::<the_NewString>%39FD300C033E.role preserve=no public: NewString {n -> 1RHN} NewString *the_NewString; //## end String::<the_NewString>%39FD300C033E.role

// Additional Implementation Declarations //## begin String%39FD295103B9.implementation preserve=yes //## end String%39FD295103B9.implementation * * *

ФАЙЛ NEWSTRING.h

* * *

private: //## implementation // Data Members for Associations

//## Association: <unnamed>%39FD300C00A9 //## begin NewString::<the_String>%39FD300C0348.role preserve=no public: String {1 -> nRHN} UnboundedSetByReference<String> the_String; //## end NewString::<the_String>%39FD300C0348.role

// Additional Implementation Declarations //## begin NewString%39FD296801A9.implementation preserve=yes //## end NewString%39FD296801A9.implementation * * *

Как видно из фрагментов кода, мы получили, как и впредыдущих случаях, ссылку на класс, в то то время, как для другого класса был использован контейнер. По умолчанию Rational Rose не предоставляет реализацию контейнерного класса. Вместо него генерируется код с UnboundedSetByReference в качестве контейнерного. Указание же конкретного контейнерного класса - дело самого разработчика.



Содержание раздела