面向对象

Posted by mtt on November 15, 2017

面向对象思想

系统被看作对象的集合,每个对象包含一组描述自身特性的数据以及作用在数据上的操作(功能集合)。

  • 对象是数据抽象与过程抽象的综合;
  • 系统的状态保存在各个数据抽象的所定义的数据存储中;
  • 控制流包含在各个数据抽象中的操作内;
  • 消息从一个对象传送到另一个对象;
  • 算法被分布到各种实体中。

类的属性:

  • 公有属性(public) +
  • 私有属性(private) -
  • 保护属性(protected) # 表达方式: 可见性 属性名: 数据类型=初始值

类的操作/方法:

  • “可见性”分类同属性。
  • 表达方式: 可见性 方法名(参数列表): 返回值数据类型

信息隐藏

封装:把对象的属性和操作结合成一个独立的单元, 并尽可能对外界隐藏对象的内部实现细节。 作用:保护对象,避免用户误用;保护客户端,其实现过程的改变不会影响到相应客户端的改变。

手段

接口 继承 多态

对象之间的联系

分类结构:泛化联系

表示事物的“一般——特殊”的关系,也称为泛化联系。

…is a kind of…

例如:动物和猫

组成结构:组合/聚合关系

表示“部分——整体”关系,一个对象是另一个对象的组成部分,分为组合关系和聚合关系。

  1. 聚合关系:整体与部分在生命周期上是独立的,彼此可分 owns a

比如:订单和客户,公司和员工

  1. 组合关系:整体与部分具有同样的生命周期,不可分 is part of

比如:人和心脏

实例连接:关联关系

表示对象之间的长期静态联系,通过对象的属性之间的联系加以展现

…has a…

消息连接:依赖关系

  • 消息连接是对象之间的通信联系,它表现了对象行为的动态临时的联系。
  • 一个对象需要另一个对象的服务,便向它发出请求服务的消息,接收消息的对象响应消息,触发所要求的服务操作。

…use a…

  • 是最弱的一种类间关系,临时的、局部的。
  • 类A的某个操作op使用了类B: A的op有某个参数param或返回值的类型为B A的op的内部业务逻辑中使用了B
  • 作用域 B是否只在A中的某个操作的作用域范围内才被A所使用?若是,则A依赖于B

接口连接:实现关系

是泛化关系和依赖关系的结合,通常用以描述一个接口和实现它们的类之间的关系

分析类

实体类

  • 表示系统存储和管理的永久信息,描述必须存贮的信息及其相关行为
  • 对系统的核心信息建模,通常这些信息需要长久的保存
  • 通常对应现实世界中的“事物”

边界类

  • 表示参与者与系统之间的交互
  • 目的:将用例的内部逻辑与外部环境进行隔离,使得外界的变化不会影响到内部的逻辑部分
  • 类型:用户界面、系统接口、设备接口

控制类

  • 表示系统在运行过程中的业务控制逻辑
  • 描述一个用例所具有的事件流的控制行为,本身并不处理具体的任务,而是调度其他类来完成具体的任务
  • 实现了对用例行为的封装,将用例的执行逻辑与边界和实体进行隔离,使得边界类和实体类具有较好的通用性
  • 负责接收边界类的信息,并将其分发给实体类。控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个控制类。