1.了解UML类图与类之间的关系
a.)虚线。箭头指向依赖
【依赖关系】 是一种使用关系,是一个类的实现需要另外一个类协助,所以要尽量不是要双向的相互依赖。在代码中表现为:局部变量、方法的参数或者静态方法的调用。箭头指向:带带普通箭头的虚心线,指向被拥有者。
b.) 实线箭头指向关联
【关联关系】是一种拥有关系,是使一个类字段另外一个类的属性和方法;可以单向关联,也可以双向。双向的关联可以有箭头或者没有箭头,单向的有一股箭头。在代码中表现为:成员变量。箭头指向:带普通箭头的实心线,指向被拥有者。
c.)虚线三角指向接口
【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现。箭头指向:带三角箭头的虚线,箭头指向接口。
d.) 实线三角指向父类
【泛化关系】是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。箭头指向:带三角箭头的实线,箭头指向父类。
e.) 空心菱形能分离而独立存在,是聚合
【聚合关系】是整体与部分的关系,且部分可以离开整体而单独存在,聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。代码体现:成员变量。箭头指向:带空心菱形的实线,菱形指向整体
f.)实心菱形精密关联不可分,是组合
【组合关系】是整体与部分的关系,但部分不能离开整体而单独存在。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。代码体现:成员变量。箭头指向:带实心菱形的实线,菱形指向整体
[if !supportLists]2. [endif]聚合关系和组合关系的不同
聚合关系如同学生和个人,学生是整体,个人是部分,可以单独存在,个人是学生的一部分。
代码:
class students{
public Person person;
public students(Person p) {
person = p;
}
}
组合关系如同个人和手,个人是整体,手不是部分,手不能脱离个人单独存在。
代码:
class Person{
publicHandhand;
public Person() {
hand = newHand();
}
}
a).构造函数不同:
聚合类的构造函数中包含另一个类的实例作为参数,因为构造函数中传递另一个类的实例,因此个人类可以脱离学生类独立存在。
组合类的构造函数包含另一个类的实例化,因为在构造函数中进行实例化,因此两者紧密耦合在一起,同生同灭,手类不能脱离个人类存在。
b.)信息的封装性不同
在聚合关系中,客户端可以同时了解GooseGroup类和Goose类,因为他们是独立的。
在组合关系中,客户端只认识个人,根本不知道手类的存在,因为手类被严密地封装在个人类中。
网友评论