面向对象思想
系统被看作对象的集合,每个对象包含一组描述自身特性的数据以及作用在数据上的操作(功能集合)。
- 对象是数据抽象与过程抽象的综合;
- 系统的状态保存在各个数据抽象的所定义的数据存储中;
- 控制流包含在各个数据抽象中的操作内;
- 消息从一个对象传送到另一个对象;
- 算法被分布到各种实体中。
类
类的属性:
- 公有属性(public) +
- 私有属性(private) -
- 保护属性(protected) #
表达方式:
可见性 属性名: 数据类型=初始值
类的操作/方法:
- “可见性”分类同属性。
- 表达方式:
可见性 方法名(参数列表): 返回值数据类型
信息隐藏
封装:把对象的属性和操作结合成一个独立的单元, 并尽可能对外界隐藏对象的内部实现细节。 作用:保护对象,避免用户误用;保护客户端,其实现过程的改变不会影响到相应客户端的改变。
手段
接口 继承 多态
对象之间的联系
分类结构:泛化联系
表示事物的“一般——特殊”的关系,也称为泛化联系。
…is a kind of…
例如:动物和猫
组成结构:组合/聚合关系
表示“部分——整体”关系,一个对象是另一个对象的组成部分,分为组合关系和聚合关系。
- 聚合关系:整体与部分在生命周期上是独立的,彼此可分 owns a
比如:订单和客户,公司和员工
- 组合关系:整体与部分具有同样的生命周期,不可分 is part of
比如:人和心脏
实例连接:关联关系
表示对象之间的长期静态联系,通过对象的属性之间的联系加以展现
…has a…
消息连接:依赖关系
- 消息连接是对象之间的通信联系,它表现了对象行为的动态临时的联系。
- 一个对象需要另一个对象的服务,便向它发出请求服务的消息,接收消息的对象响应消息,触发所要求的服务操作。
…use a…
- 是最弱的一种类间关系,临时的、局部的。
- 类A的某个操作op使用了类B: A的op有某个参数param或返回值的类型为B A的op的内部业务逻辑中使用了B
- 作用域 B是否只在A中的某个操作的作用域范围内才被A所使用?若是,则A依赖于B
接口连接:实现关系
是泛化关系和依赖关系的结合,通常用以描述一个接口和实现它们的类之间的关系
分析类
实体类
- 表示系统存储和管理的永久信息,描述必须存贮的信息及其相关行为
- 对系统的核心信息建模,通常这些信息需要长久的保存
- 通常对应现实世界中的“事物”
边界类
- 表示参与者与系统之间的交互
- 目的:将用例的内部逻辑与外部环境进行隔离,使得外界的变化不会影响到内部的逻辑部分
- 类型:用户界面、系统接口、设备接口
控制类
- 表示系统在运行过程中的业务控制逻辑
- 描述一个用例所具有的事件流的控制行为,本身并不处理具体的任务,而是调度其他类来完成具体的任务
- 实现了对用例行为的封装,将用例的执行逻辑与边界和实体进行隔离,使得边界类和实体类具有较好的通用性
- 负责接收边界类的信息,并将其分发给实体类。控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个控制类。