介绍类图之前咱们先来聊一聊类
1.类由三部分组成
一是类名,二是属性(attributes),三是该类提供的方法如下图:
当然,如果你的软件中属性和方法相对比较多,在图中一一的表示出来也没有太大的意义,这时你就可以在图中隐藏其方法或属性甚至将方法和属性全部隐藏,下图就隐藏了其方法:
再看下面这张图你会发现Lecture类的方法前面有一个加号,属性前面有减号,那么它们有什么特殊的意义呢?
“+”就是public 表示公有的,“—”就是私有的,而“#”表示受保护的省略这些修饰符则表示具有包级别的可见性。
需要注意的是:如果属性或方法具有下划线,则表明它是静态的。
聚合:整体/部分用 空心菱形表示
组合:整体/部分用 实心菱形表示
既然他们都表示整体与部分的关系,那么什么时候用聚合什么时候用组合呢?
我是这样理解的:组合关系好比一本书和这本书的书页;而聚合关系好比一个书架和摆放在书架上的书。换句话说,没有书就谈不上有书页,组合是有生命约束关系的,而书和书架就没有这种关系,没有了书架,书照样还存在。
2.依赖关系:
依赖是一种使用关系。它说明一个事物规格说明的变化可能影响到使用它的另一个事物。但反之未必
可用于两个类之间
可用于两个包之间
可用于构建之间
3.泛化关系
泛化(generalization)关系是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。继承还可以细分为单继承和多重继承两种单重继承有且只有一个父类而多重继承多个父类
用一张图表示:
4.实现关系
实现时类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约
举例:如果老师让你画一个多边形,该怎么画呢?是画四边形,五边形还是......而让你画一个矩形的时候你肯定能画出来,用图表示:
3.类图的构成
- Classes类
- Interfaces 接口
- Collaborations协作
- Dependency 依赖关系
- Generalization 泛化关系
- Association 关联关系
- Relationships实现关系
- Packages包
- Subsystems子系统
以上说的都是类图中的细节部分,一个完美的类图中肯定会用到这些的很多甚至是还有我没想到的,不管做什么,其中的一个环节都不能被忽视的,希望得到大家的重视。