UML 类图与对象图
一、类图
1.类与对象
1.1类与对象的概念
类是具有相同结构、行为和关系的一组对象的描述符。
对象是符合类定义的一个实例。
1.2.类的属性
[可见性]属性名[属性名]
- 公有属性(public)
- 私有属性(private)(子类不可继承)
受保护属性(protected)(子类可以继承)
1.2.1作用域
类的作用域分为两种:对象作用域和类作用域
对象的作用域指的是对此类的每个对象都有一个副本。
类的作用域指的是此构成只有一个作用域。
1.2.2类的职责
类的职责指的是对该类的所有对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象。
带职责和属性约束的洗衣机类
2.类之间的关系
2.1关联关系:一个类的实例与另一个类的实例在结构上的静态联系。
特征 均为属性上的关系
1、一个类的属性的数据类型是另一个类的定义;
2、一个类的部分对象与另一个类的部分对象存在属性值上的联系;
3、关联关系一旦建立,系统运行与否它都存在。
微信图片_20181110203920.png
微信图片_20181110204119.png 微信图片_20181110204122.png
2.2依赖关系:一个类的结构上的变化会影响到另一个类
特征:
一个类的方法的参数的数据类型是另一个类的定义
一个类的方法使用了另一个类的属性
一个类的方法调用了另一个类的方法
依赖关系只有在系统运行时它存在,系统不运行时它不存在
2.3 泛化关系:一般类与特殊类之间的继承
特征:
一般类定义了共同的属性和方法
特殊类继承了一般类的属性和方法
特殊类还可以定义自己的属性和方法
泛化关系只有在系统运行时它存在,系统不运行时它不存在,除非要将两类对象永久保存
关联关系和依赖关系的对比
关联关系 | 依赖关系 |
---|---|
静态的 | 动态的 |
数据级别上的 | 代码级别上的 |
部分的 | 全体的 |
有多重性 | 无多重性 |
实体类之间存在关联关系 | {边界类,控制类}和{边界类,控制类,实体类}之间存在依赖关系 |
2.4 聚合关系
聚合关系2.5 组合关系
组合关系2.6 实现关系
接口是一个特殊的类(无属性,有操作),实现接口操作的类(称为实现类)与接口之间存在实现关系。
调用接口操作的类(称为使用类)与接口之间存在依赖关系。
2.7抽象类和接口的比较
共同点:
两者都有方法没有提供实现代码
提供实现代码的其他类,实现的算法不同,会导致两者具有不同的行为。因此,很容易扩展软件系统的功能。
不同点:
抽象类有些方法可以提供实现代码,接口所有的方法都没有提供实现代码
抽象类只能被继承,接口只能被实现
3. 类的版型
UML中有3种主要的类版型,即边界类(boundary class)、控制类(control class)和实体类(entity class)
3.1 版型介绍
实体类用于保存需要放进持久存储体的信息
实体类表示
边界类位于系统与外界的交界处,它是系统内的对象和系统外的参与者的联系媒介。外界的消息只有通过边界类的对象实例才能发送给系统
边界类表示
控制类是负责其他类工作的类。根据业务规则,执行相应脚本流,以委托责任的形式向其他类发出消息,由其他类来实现具体的功能。
控制类的一个主要用途是协调边界类和实体类之间的交互
控制类表示
二、对象图
对象图表示一组对象及它们之间的联系。
对象图是系统的详细状态在某一时刻的快照,常用于表示复杂的类图的一个实例。对象图实质上是具有关联关系的类图的实例。
类图与对象图
对象图(object diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。它是系统在某一个特定时间点上的静态结构,是类图的实例和快照,即类图中的各个类在某一个时间点上的实例及其关联关系的静态写照
类图 | 对象图 |
---|---|
在类图中,每个类包含三部分:类名、类的属性和类的操作 | 在对象图中,每个对象包含二部分:对象名、对象属性 |
类的名称栏只包含类名 | 对象的名称栏包含对象名和类名 |
类的属性栏定义了所有属性的特征 | 对象的属性栏定义了属性的当前值 |
类中列出了操作 | 对象图中的对象不包含操作,因为对于属于同一个类的对象,其操作是相同的 |
类中使用了关联连接,关联中使用关联名、角色以及约束等特征定义 | 对象使用链进行连接,链中包含名称、角色 |
类是对象的抽象 | 对象是客观存在的抽象,对象是类的实例 |