类图是uml的核心。学习类图,总共需要掌握三个部分:类;类之间的关系;类图怎么画。
首先,类。老规矩,先来张图。
类是什么:举个简单的例子:猫、狗、猪三个都是动物。这里面的“动物”就是类,表示的是动物类。
在类图的表示中,类都包括一些什么呢?类图中的类都有以下部件:
1.名称,这是类的标识符,在同一个包内,类是不能重名的。
2.属性,比如说人类的属性就有:姓名、身高、年龄等等属性。在这里,有的属性可能不希望被每个人都知道,比如说年龄。所以又将属性的可见性分公有、私有、受保护和包内公有类型。分别用“+”、“-”、“#”和“~”表示。
3.方法,属性描述的是各种数据,而方法则是这些数据的处理方法。简单的说,属性是都有什么,而方法就是可以干什么。
4.职责和约束,这两个部件是可有可无的,主要是为了说明类是干什么的,用来消除二义性。
在类里面有个特殊的类,我们称之为抽象类,这种类跟别的类不一样的地方是它不能实体化。比如说,猫类可以实体化出来猫,狗类可以实体化出来狗,但是动物类却不能实体化。那么就称动物类是抽象类。它的作用就是泛化出来子类,这点我们在类的关联里面再说。
类之间的关系:还是老规矩,先来张图。
关系有四种:关联、泛化、实现、依赖。
关联,关联就是说类之间相互有关系,泛化、实现和依赖关系都可以写成关联的形式。这里我们重点说下关联里的一些特例。
1.关联类:在两个类之间具有多对多的关系式,有些属性就不容易确定放在哪,这时就要对他们之间的关联来建模,这就是关联类。比如:一个人可以加入多个社团,而一个社团又可以拥有多个人,这时,这个人在社团中的职务就需要专门弄一个角色的类来存储这个关联。那么角色类就是关联类。
2.聚合和组成:聚合和组成意思类似。简单的说,电脑的 各个部件组装成电脑,没有电脑,零件一样可以存在,这就是聚合。一张表格有很多格子,没有了表格,格子也不能存在,我们就说是格子组成了表格。
3.或关联与反身关联:一般情况下,一个人,可以是男人,也可以是女人,但是不能既是男人又是女人,这就是或关联;自己与自己关联就是反身关联。
泛化,子类继承父类就是泛化,如动物有这样的属性:大小、颜色、重量。那么动物的子类比如说猫类在继承动物类的时候,就不用再去写这些属性了,直接从父类继承就可以了。这种类之间的继承就是泛化。
泛化分为单重和多重,单重比较容易理解,比如猫类继承动物类。多重的意思就是一个子类有两个父类,比如说:一个水陆两栖车的类,它的父类就是汽车和轮船两种。这会造成二义性——汽车有个属性是:陆地行驶,而轮船有个属性是水中行驶。这就导致子类的属性不明确,需要重新写这个属性。
接下来就是实现关系,在了解实现关系之前首先需要了解一个概念:接口。简单的说,人类有个能力是说话,但是,我们把这个功能写在别的类里面。通过一个类似于抽象类的东西去连接它们,就称之为接口。通过接口去实现某项功能就是实现关系。
最后是依赖关系,依赖关系在之前的文章里已经说过,简而言之就是一个类在使用的时候,必须使用别的类的某些功能,这就是依赖关系。
对类图有了个大概的了解后,那么类图怎么画呢?
还是先来一张图
类图的绘制首先需要发现都有哪些类,在找的时候有个技巧,看你的软件中都有哪些名词,这些名词都是类。然后看哪些是需要的类,选择后再看哪些类都有什么关系,然后给各个类限定关系。类图就可以开始画了。
类图就先介绍到这里,下一个是对象图,欢迎观看。