本章内容主要讲解了UML中的类图和对象图,重点阐述了类的定义、属性和操作,以及类之间的各种关系,包括关联、聚集、组合、泛化和依赖。
类的定义: 类是面向对象编程的基础,它描述了一组具有相似结构、行为和关系的对象。例如,`Shape`类可以拥有属性如`origin:Point`表示对象的位置,`size:Double`表示大小,`fillColor:Color`表示填充颜色,以及`count:int`表示数量。类还包含构造函数(`<<constructor>>Shape()`)、方法如`move()`, `resize()`和`display()`,这些代表对象的行为。
类的属性: 属性是类的特性,可以在类图标中的属性分隔框中声明。属性声明的格式为:[可见性]属性名[:类型]['['多重性[次序]']'][=初始值][{特性}]。例如,`+size:Area=(100,100)`表示一个公共属性`size`,类型为`Area`,默认值为`(100,100)`。属性的可见性可以是公共(+)、保护(#)或私有(-)。
类的操作: 操作是类的成员函数,用于修改或检索类的属性,或执行特定行为。操作的声明格式为:[可见性]操作名[(参数列表)][:返回类型][{特性}]。例如,`+display():Location`表示一个公共的`display`操作,无参数,返回类型为`Location`。
类之间的关系: 类之间的关系是UML类图的关键部分,包括以下五种:
1. 关联(Association): 表示类之间的连接,如`A`与`B`之间的联系,可以是单向或双向的,有或无多重性。
2. 聚集(Aggregation): 是一种特殊的关联,表示整体与部分的关系,如班级和学生的关系,班级是整体,学生是部分。
3. 组合(Composition): 是比聚集更强的形式,表示部分与整体的生命周期绑定,如汽车和引擎,引擎的存在依赖于汽车。
4. 泛化(Generalization): 表示继承关系,一个类(子类)继承另一个类(父类),继承了父类的属性和操作。
5. 依赖(Dependency): 表示一个类(依赖者)依赖于另一个类(供应商),如函数调用其他类的方法。
通过理解这些基本概念,我们可以更好地设计和建模复杂的软件系统,使得代码更具可读性、可维护性和可扩展性。在实际开发中,类图和对象图对于系统分析、设计和沟通起着至关重要的作用。