在最开始先向大家介绍如何在Rational rose 2003中把类的关系图转换成代码(转自http://hi.baidu.com/dudangyimian/item/e4bbff107fb0efe55f53b1b0)
1. 创建类图
创建两个类 CAirplane 和 CWhirlybird,它们是继承关系(直升机类继承飞机类)
2. 用ANSI C++ 创建组件
在菜单中依次选择 Tools -> ANSI C++ -> Convert From Classic C++
选择转换model中的所有类,设置该组件名称即可(默认Converted Classes),本操作会生成一个组件Converted Classes。
3. 用ANSI C++ 生成源代码
设置刚才创建的组件的属性
在“Realizes”页中,将所有的类“assign ”,即指定那些将要被转换成 ANSI 风格的类(毕竟还有Java 风格的类),这是关键的一步,只有确定了类的风格,Rose才能进行下一步的处理。
类的风格可在 Tools -> ANSI C++ -> Class Customization...中详细设置
选择组件,然后在在菜单中选择Tools -> ANSI C++ -> Generate Code...
指定一个目录,代码就会在那个目录中生成了。
一、关联
1)双向关联:指两个类之间可以相互调用对方的公共属性或方法(如下图所示)。
2)单向关联:源头的类可以调用箭头方向的类的公共属性或方法(如下图所示),没有生命期的依赖,一般是引用。
class A
{
public:
Integer q;
B *the c;
};
class B
{
public:
Integer the c;
};
二、聚合/组合
首先,它是表示整体和部分的关系。
再来,看下聚合和组合用rational rose 生成的图和代码:
聚合:
class A
{
public:
B b;
};
class B
{
};
组合:
class A
{
public:
B b;
};
class B
{
};
另外这里介绍个小技巧:
组合的关系符号在Rational rose 里面没有,可以通过在聚合的关系符号上做些修改就能改成组合的样子,方法:
1.可以先画一个aggregation(空心)的关系,
2.然后右键单击这个关系,open specification ->Role B Detail,
3.你会发现有三项选(By Value, By Reference, Unspecified),在你选上By Value的时候,菱形就变成实心的了。
三、依赖
依赖是一种弱关联,即A要用到B,但两者之间的关系不是特别明显,形式上一般是A中的方法用到B的对象作为参数。
class A
{
};
class B
{
};
就把我现在的理解都写了,可能理解错误或不到位,知道的留下言好让我改正,还有其他的关系没写,等以后理解且有空了再来继续写。