描述类的类图

[caption id="attachment_12210" align="alignnone" width="286" caption="普通类图"][/caption]
在上面的类图中可以看出,表示类的框分成以下几层:
  • 类名
  • 属性清单
  • 方法清单
如果一个类内部成员类,它的类图就会有五层。在类的类图中,除了类名层是不能省略,其他都可以省略。

第一层是类名:具体类(可以实例化的)是正体字,变量名如果是斜体字,表明类是抽象的。

第二层是属性层:一个属性是public (+),private(-),protected(#)修饰的。

第三层是方法层:同上,如果staticMethod()方法虾米有一道下划线,表明这是一个静态的方法。

第四层是性质层:性质是由一个属性即由一个内部变量,一个赋值函数和一个取值函数组成的结构。

           例如:

                         

 

描述接口的类图 

接口的类图与类图几乎一样,惟一的区别是接口的名有“interface”的字样。

[caption id="attachment_12211" align="alignnone" width="249" caption="接口类图"][/caption]

如图:

一个接口不会有性质,可以有方法的声明,public和final静态内部成员类。

 

类图中的关系

1.一般化关系 :一般化关系表示类与类之间的继承关系,接口与接口之间的继承关系,或者类对接口的实现关系。

[caption id="" align="alignleft" width="228" caption="一般化关系01"][/caption]
[caption id="" align="alignnone" width="242" caption="一般化关系02"][/caption]

                                      

2.关联关系:是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。双向的关联可以是有两个箭头或者没有箭头。单向的关联有一个箭头。

[caption id="" align="aligncenter" width="428" caption="关联关系"][/caption]
[caption id="" align="aligncenter" width="429" caption="关联关系和一般化关系"][/caption]

3.聚合关系:是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。例如:汽车类与引擎类,轮胎类的关系。如下图:

[caption id="" align="alignnone" width="576" caption="聚合关系"][/caption]

4.合成关系:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

聚合关系和合成关系如下图所示:
[caption id="attachment_12222" align="alignnone" width="656" caption="聚合关系和合成关系"][/caption]

                     在上面的类图中,显示了美猴王(MonkeyKing)以及他的四肢(Limb)和他的紧箍帮(GoldRingedStaff)之间的关系。可以看出,MonkeyKing与GoldRingedStaff之间是聚合关系;而MonkeyKing与Limb之间的关系要比前者更强,是合成关系,因为美猴王的四肢完全由美猴王自己负责,并且不能共享。

5.依赖关系:也是类与类之间的连接,依赖关系总是单向的。依赖关系表示一个类依赖于另一个类的定义。如下图:

[caption id="" align="alignnone" width="591" caption="依赖关系"][/caption]
              与关联关系不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。其源码如下:
class Person{
             public void buy(Car car){}
             public void buy(House house){ } 
}
结束语:可能文章深度很浅,希望大家能包容。