附:本文章中的图片可能比较小有时看不清,我已经把图片放在我的控件中有需要的朋友可以下载来看看,如果需要VSD文件的话请留下您的邮箱我也会发给您。为方便起见,以下所有类型均用Type表示。
好,客套话不说,我们进入正题。
以下是我用Visio2007画的一个UML图,我就利用这个图讲解UML的基本标记。
首先大家看动物类,该类为抽象类,在UML中抽象类的类名用斜体表示(类图第一行写类名)。该类拥有“有生命”这个属性或者说是字段(在类图的第二行用来写属性或字段),该类拥有“新陈代谢”和“繁殖”两个方法(类图第三行用于写方法)。根据常识动物要想新陈代谢就需要氧气和水,因此氧气和水与动物类呈依赖关系,依赖关系用虚线加箭头表示,箭头指向被依赖的类。用代码表示如下:
class abstract Animal
{
public Type Metabolism( Type oxygen,,Type water)
{
}
}
接着大家看鸟这个类,该类继承于动物类,继承用实线加空心三角形表示,空心三角指向基类,代码实现如下:
class Bird:Animal
{
}
在鸟这个类的右边是一个翅膀类,该类与鸟的关系是组合关系,组合关系是一个强类型关系,类与类之间的耦合度比较高,用一个实心的平行四边形加实线加箭头表示,实心平行四边形指向组合成后的整体,而箭头则指向部分(翅膀是鸟的一部分)。而实线下的“1”和“2”表示一只鸟有两个翅膀。这种关系写成代码如下:
class Bird:Animal
{
public Bird()//构造函数
{
Type wind=new Type()//实例化翅膀类对象
}
}
由代码可以看出在组合关系中两个类的生命周期是相同的,也就是说两个类同生共死。而且表示部分那个类要在表示整体那个类的构造函数中被实例化。
接着大家在来看看聚合关系(注意与组合关系的区别),想上边的例子中的大雁和雁群就是聚合关系。大雁由雁群聚集而成,但是大雁和雁群的关系并不像翅膀和鸟的关系那么牢固,大雁是随时可以离开雁群的,而鸟可不能轻易丢了翅膀。因此,相对于组合而言聚合的耦合度会小一些(即组合是表示一种强的拥有关系,而聚合是表示一种弱的拥有关系)。聚合关系用代码表示如下:
class WideGoose:Bird//大雁类
{
}
class WideGooseGroup
{
private WideGoose[] arrayWideGoose;
}
然后,大家看看企鹅这个类。从所周知企鹅是一种不会飞的鸟他的生活与气候有很大关系,因此企鹅类与气候类是需要有关联的,代码如下:
class penguin:Bird
{
private Tyep weather;
}
最后,和大家讲讲接口的表示法,在UML中接口有两者表示法,一种称做棒棒糖表示发;一种就是正规的虚线加上空心三角形,并且三角形指向接口。现在,我们分别来说这两者表示法。第一我们先来看看唐老鸭他继承于鸭子类,唐老鸭会讲人话,而讲人话就是一个接口他用类似棒棒糖的符号表示,圆圈处写上接口名。而大雁类有飞翔这个接口,飞翔这个接口表示法是第一行有<<interface>>加上接口名,而与大雁类是用虚线加上空心三角形链接的,空心三角形指向飞翔这个接口。用代码实现如下:
class WideGoose:IFlying
{
}
interface IFlying
{
void Fly();
}
class TangDuck:Duck,Ilanguage
{
}
interface ILanguage
{
void speak();
}
OK!这就是我要说的全部,希望对大家有所帮助!