类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下面对这三种类加以简要说明:
(1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。
(2) 控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有一个商品增加类,注册对应有一个用户注册类等
(3) 边界类:边界类用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类,如对话框、窗口、菜单等。
在UML类图中,类一般由三部分组成:
(1) 第一部分是类名:首字母大写。附加了<<interface>>的一个标准类表示接口
(2) 第二部分是类的属性(Attributes):小写字母开头,后续字母首字母大写。如果属性操作具有下划线,表明它是静态的
可见性 名称:类型 [ = 缺省值 ]
(3) 第三部分是类的操作(Operations):小写字母开头,后续字母首字母大写。如果操作具有下划线,表明它是静态的
可见性 名称(参数列表) [ : 返回类型]
其中:“可见性”:
标志 | 可见性类型 |
+ | Public |
# | proteted |
- | private |
~ | package |
类之间的关系:
a 依赖(Dependency):特定事物的改变有可能会影响到使用该事物的其他事物。在需要表示一个事物使用另一个事物时使用依赖关系,一个实体的规范发生变化后,可能影响依赖于它的其他实例。
依赖关系通常通过三种方式来实现,第一种也是最常用的一种方式是将一个类的对象作为另一个类中方法的参数,第二种方式是在一个类的方法中将另一个类的对象作为其局部变量,第三种方式是在一个类的方法中调用另一个类的静态方法
b 关联(Association):它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
1.定义为成员变量//单个对象
2.定义一个集合对象//一组对象
3.定义同类成员变量//链表节点,每个节点包含下个节点的引用
c 聚合(Aggregation)关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在.
在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中
d 组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。
代码实现组合关系时,通常在整体类的构造方法中直接实例化成员类
f 泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
代码实现时,我们使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现
g 实现(Realization)关系类似的继承关系,用于指定两个实体之间的一个合同。一个实体定义一个合同,而另一个实体保证履行该合同