面向对象技术
面向对象技术
传统软件工程方法:结构化方法
- 将待解决的问题看作一个系统,从而用系统科学的思想方法来分析和解决问题
面对对象的软件工程
- 面向对象分析(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.