目录
5.5 继承关系(Inheritance)或泛化关系(Generalization)
(接上篇,序号延续)
在UML(统一建模语言)类图中,类之间的关系是描述软件系统结构和行为的关键部分。从专业的角度来看,类图中主要存在以下几种关系:
Customer
(客户)类和Order
(订单)类之间可能有一个关联关系,表示一个客户可以下多个订单。public class Customer {
private String name;
// ... 其他属性和方法 ...
}
public class Order {
private Customer customer;
// ... 其他属性和方法 ...
}
Car
(汽车)和Wheel
(轮子)之间可以有聚合关系,表示汽车由轮子等组成,但轮子可以独立于汽车存在。Car
类,线的另一端连接Wheel
类。public class Car {
private Wheel wheel;
// ... 其他属性和方法 ...
}
public class Wheel {
// ... 轮的属性和方法 ...
}
House
(房子)和Room
(房间)之间可能存在组合关系,因为房子被销毁时,房间通常也会不复存在。House
类,线的另一端连接Room
类。public class House {
private Room room;
// ... 其他属性和方法 ...
public House() {
room = new Room(); // 创建房间作为房子的一部分
}
}
public class Room {
// ... 房间的属性和方法 ...
}
ClassA
中的方法使用了ClassB
的一个对象作为参数,那么ClassA
就依赖于ClassB
。ClassA
指向ClassB
。public class ClassA {
public void methodA(ClassB classB) {
// 使用 ClassB 的对象进行操作...
}
}
public class ClassB {
// ... ClassB 的属性和方法 ...
}
Shape
(形状)类作为基类,而Circle
(圆形)和Rectangle
(矩形)类作为它的子类。ClassA
指向ClassB
。public class Shape {
// ... 形状的通用属性和方法 ...
}
public class Circle extends Shape {
// ... 圆形的特有属性和方法 ...
}
Button
类实现了一个Clickable
接口,那么Button
类和Clickable
接口之间就存在实现关系。Button
类,箭头指向Clickable
接口。public interface Clickable {
void click(); // 接口中声明的方法...
}
public class Button implements Clickable {
@Override
public void click() {
// 实现点击操作...
}
}
这些关系是UML类图中描述软件系统结构和行为的基础工具,它们提供了丰富的语义和可视化手段来帮助开发人员更好地理解和设计软件系统。
关联关系(Association)是类与类之间最常用的一种关系,表示两个类之间存在某种连接。这种连接可以是一般的关联,也可以是更为特殊的聚合和组合关系。
在UML中,关联关系可以通过多种方式进一步详细描述,其中包括多重性(Multiplicity)。多重性用来表示类之间关联的数量。常见的多重性表示有:
1
:表示一个实例必须与另一个类的一个实例相关联。0..1
:表示一个实例可以与另一个类的一个实例相关联,或者不与任何实例相关联。*
?或不指定:表示一个实例可以与另一个类的任意数量的实例相关联。n..m
:表示一个实例可以与另一个类的n到m个实例相关联。多重性在关联关系的两端都可以指定,用来更精确地描述类之间的连接。例如,在订单和商品的关系中,一个订单可能包含多个商品,但每个商品只能属于一个订单。这样的关系可以通过在订单端指定*
和在商品端指定1
来表示。
此外,关联关系还可以通过角色(Role)、导航性(Navigability)、关联类(Association Class)等属性来进一步详细描述。角色用于给关联关系的端点命名,以便更清晰地表达关系的含义;导航性用于表示是否可以从一个类的实例导航到另一个类的实例;关联类用于表示关联本身具有属性和操作的情况。
总的来说,关联关系是UML中描述类与类之间连接的基础工具,通过不同的属性和标记,可以精确地表达类之间各种复杂的连接关系。
(未完,下次我们来学习序列图。)