UML类图与面向对象编程
UML类图与面向对象编程
本文介绍 UML
类图与面向对象编程。
UML类图与面向对象编程
1 概念
面向对象程序设计(Object-Oriented Programming, 缩写为OOP)是一种范式,其基本理念是将数据块及与数据相关的行为封装成为特殊的、名为对象的实体,同时对象实体的生成工作则是基于程序员给出的一系列“蓝图”,这些“蓝图”就是类。
2 UML
2.1 表示
具体类在类图中用矩形框表示,矩形框分为三层:
- 第一层是类名字
- 第二层是类的成员变量
- 第三层是类的方法
成员变量以及方法前的访问修饰符用符号来表示:
+
表示public-
表示private#
表示protected- 不带符号表示default
2.2 关系
- 依赖:对类 B 进行修改会影响到类 A 。
- 关联:对象 A 知道对象 B。类 A 依赖于类 B。
- 聚合:对象 A 知道对象 B 且由 B 构成。类 A 依赖于类 B。
- 组合:对象 A 知道对象 B、由 B 构成而且管理着 B 的生命周期。类 A 依赖于类 B。
- 实现:类 A 定义的方法由接口 B 声明。对象 A 可被视为对象B。类 A 依赖于类 B。
- 继承:类 A 继承类 B 的接口和实现,但是可以对其进行扩展。对象 A 可被视为对象 B。类 A 依赖于类 B。
3 面向对象编程
3.1 抽象
抽象是一种反映真实世界对象或现象中特定内容的模型,它能高精度地反映所有与特定内容相关的详细信息,同时忽略其他内容。
例如,飞行模拟器和航班预订程序中都可能会包含一个飞机(Airplane 类)。但是前者需包含与实际飞行相关的详细信息,而后者则只关心座位图和哪些座位可供预订。
3.2 封装
封装是指一个对象对其他对象隐藏其部分状态和行为,而仅向程序其他部分暴露有限的接口的能力。
假如你的航空运输(FlyingTransport)接口中有一个 fly(origin, destination, passengers)
方法(即以起点、终点以及乘客为参数的飞行方法)。在设计航空运输模拟器时,你可以对机场(Airport)类做出限制,使其仅与实现了航空运输接口的对象进行交互。此后,你可以确保传递给机场对象的任何对象——无论是飞机、直升机(Helicopter)还是可怕的家养狮鹫(DomesticatedGryphon)都能到达或离开这种类型的机场。
3.3 继承
继承是指在根据已有类创建新类的能力。
3.4 多态
多态是指程序能够检测对象所属的实际类,并在当前上下文不知道其真实类型的情况下调用其实现的能力。
参考
本文由作者按照 CC BY 4.0 进行授权