Post

面向对象技术

面向对象技术

传统软件工程方法:结构化方法

  • 将待解决的问题看作一个系统,从而用系统科学的思想方法来分析和解决问题

面对对象的软件工程

  • 面向对象分析(OOA)
  • 面对对象设计(OOD)
  • 面对对象编程(OOP)

基本概念

  • 消息
    • 一个对象向其他对象发出的请求,一般包含消息接收对象、接收对象所采用的方法、方法需要的参数、返回信息等
  • 封装
    • 把对象的属性和操作结合成一个独立的单元,并尽可能对外界隐藏对象的内部实现细节
  • 泛化与继承
    • 是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展
  • 多态
    • 在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为
  • 抽象类
    • 把一些类组织起来,提供一些公共的行为,但不能使用这个类的实例(即从该类中派生出具体的对象),而仅仅能使用其子类的实例
    • 至少有一个方法被定义为“abstract”类型,只有方法定义,没有方法的具体实现
  • 接口
    • 描述了一个类的一组外部可用的属性和操作集

对象之间的联系

分类结构

继承/泛化关系

1
2
3
class Customer {}

class CorporateCustomer extends Customer{}

组成结构

聚合与组合关系

  • 聚合:整体与部分在生命周期上是独立的
1
2
3
4
5
class student {}

class CourseClass {
	private Student[] students;
}
  • 组合:强调整体与部分具有同样的生命周期
1
2
3
4
5
class Heart {}

class Person {
	private Heart heart = new Heart();
}

实例连接

关联关系

  • 单向关联和双向关联
1
2
3
4
5
6
7
8
9
10
11
class Course {}
class Student {
	private Course[] selectedCourses;
}

class Teacher {
	private Student[] students;
}
class Student {
	private Teacher teacher;
}
  • 关联类
1
2
3
4
5
6
7
class Company {}
class Person {}

class Job {
	public Person employee;
	public Company employer;
}

消息连接

依赖关系

1
2
3
4
class Air {}
class Human {
	public void breath(Air air) {};
}

接口连接

实现关系

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

UML建模语言

  • 主要目的:为了理解,而非文档

UML视图

  • 用例视图
    • 外部用户所能观察到的系统功能的模型图
  • 状态机视图
    • 一个类对象所可能经历的所有历程的模型图
  • 活动视图
    • 状态机的一个变体,用来描述执行算法或工作流程中涉及的活动
  • 交互视图
    • 描述了中系统功能的各个角色之间的相互传递消息的顺序关系

UML图

  • 类图/对象图:描述系统的各个对象类型以及存在的各种静态关系
  • 用例图:描述用户与系统如何交互
  • 构件图:构件间的组织结构及链接关系
  • 部署图:制品在节点上的部署
  • 状态图:事件在对象的周期内如何改变状态
  • 活动图:过程及并行行为
  • 顺序图:对象间的交互,强调顺序
  • 协作图:对象间交互,重点在对象间链接关系

面对对象的分析建模

  • 功能模型
    • 从用户的角度获取功能需求
    • 由用例模型表示
  • 静态结构模型(分析对象模型)
    • 描述系统的概念实体
    • 由类图表示
  • 动态行为模型
    • 描述对象之间的交互行为
    • 由顺序图和协作图表示

分析类

  • 实体类:表示系统存储和管理的持久性信息
  • 边界类:表示参与者与系统之间的交互
  • 控制类:表示系统在运行过程中的业务控制逻辑

边界类

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

控制类

  • 描述一个用例所具有的事件流的控制行为

实体类

  • 描述必须存贮的信息及其相关行为
  • 对系统的核心信息建模,通常这些信息需要长久的保存
This post is licensed under CC BY 4.0 by the author.