类图是描述类,接口,协作以及它们之间关系的图,用来显示系统中各个类的静态结构。而类是类图的基本组成元素(其他的还有:Interfaces,collaborations,dependency,generalizationand association relationships,packages
of subsystems)之一,可以说是类图非常基础的东西。
一,类的构成
类由3部分构成,类名,属性,和操作。如图,很熟悉的command,以前大家都叫它控件,但是如果到了面向对象的程序设计里面,我们就应该叫它class了。
在这个类图中,类名为:command
属性为:caption,width,height,name(protected)
方法为:click,doubleclick,lostfocus,getfocus,keypress.
在这里,我只写了一些常用属性和方法,但是在我们自己设计时,就不能这么简略了。
二,类图的关系
1,普通关联
其中,关联有3中修饰:名称,角色,多重性。
在上图中,“工作于”是关联的名称,教师在关联中扮演的角色时雇员,学校扮演的角色是雇佣者,多重性即两个类存在的相互连接的数目,如图,为1.
2,聚合关联和组合关联
这两个关联很像,聚合关联是一种“has-a”的关系,聚合中没有严格的制约关系,一方不存在,令一方还可以存在;而组合关联部分和整体有一种附属关系,非常明显。如图:
3,依赖关系
在依赖关系中,依赖双方某一个模型元素的变换必然影响到另个模型元素。如图,如果频道突然没信号,电视机也无法收到台。
4,泛化关系
泛化描述类与类之间的继承关系,这是一种“is-a-kind of”的关系。如图,鸟和猫都从动物那里继承了动物的一部分东西,它们都是一种动物。
5,实现关系
实现是规格说明和其实现间的关系。但是它不继承结构而只继承行为。
三,类图的深入讨论
1,可见性
主要是访问权限的问题。
其中各个访问权限对于符号如图。
2,范围
每个实例自己拥有自己的属性和方法。
对于类中的静态成员来说:所有实例共享一个成员。
静态成员用途:
1,可以起一个计数器的作用
2,通过类名来调用方法:mathpack.sin通过静态成员可以实现调用库函数
3,抽象类不能实例化
抽象的类只是在概念上存在,这样的类,但是在使用时,可以让其他类继承抽象类的操作。
4,属性和操作的语法
属性语法:
[可见性] 属性名 [:类型] [=初始值] [{属性字符串}]
操作语法:
[可见性] 属性名 [(参数表)] [:返回类型] [{属性字符串}]