第七章面向对象分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》
面向对象分析、设计与实现 马丽
CH7 面向对象的分析和设计方法
在前面各章节中,我们学习的是传统的软件工程方法---结构化方法学, 这部分我们将要介绍一种全新的系统分析设计方法——面向对象方法学。 它是一种实用而强有力的软件开发方法,它产生于20世纪70年代末,直到 目前,OO技术已有广泛的应用。
面向对象技术具有许多特色,一是面向对象方法的唯一性,即面向对象 方法是对软件开发过程所有阶段进行综合考虑而得到的唯一有效方法.二 是面向对象技术中生存期的一个阶段到下一个阶段的高度连续性,即在 一个阶段所用的组成部分与下一个阶段所使用的组成部分是衔接的。三 是把面向对象分析(OOA)、面向对象的设计(OOD)和面向对象程序 设计(OOP)集成到生存期的相应阶段。
❖ Rational统一开发过程(RUP, Rational Unify Process)描述了如何在软件开发组织中严格 分配任务和职责的方法。
❖ RUP 是一个过程产品,"软件过程也是软件。"
❖ RUP 采用二维的过程结构:
❖ 横轴表明过程的生存周期,它反映了过程被 激活时的动态情况,用周期、阶段、迭代和 里程碑表示。
❖ 已有的类可当做基类来引用,则新类相应地可 当做派生类来引用。
多态与动态绑定
❖ 多态性指同名的函数或操作可在不同类型的对 象中有各自相应的实现。例如 ❖整数“+”:整数加法 ❖浮点数“+”:浮点数加法 ❖字符串“+”:字符串连接 ❖点“+”:两个点的坐标位置分别叠加
❖ 具有多态的函数或操作在运行时才根据实际的 对象类型,执行相应实现程序的连接,此即动 态绑定。
面向对象的特点
❖ 抽象性:对象的数据抽象和行为抽象; ❖ 封装性:信息隐蔽; ❖ 共享性:
❖同一类中所有实例共享数据结构和行为特征; ❖同一应用中所有实例通过继承共享数据结构
和行为特征; ❖不同应用中所有实例通过复用共享数据结构
和行为特征
对象
❖ 对象是系统中用来描述客观事物的一个实体, 是构成系统的一个基本单位,由一组属性和一 组对属性进行操作的服务组成。
1) 过程的中心概念是工作人员,工作人员不 是指某一个人,而是指完成工作的角色。 工作人员定义人们应履行的行为和职责。
2) 活动定义了工作人员所执行的工作。有 3 类步骤:
面向对象(OO,Object Oriented)可用公式表示为:面 向对象= 对象+类+继承+通信
面向对象的基本思想是从现实世界客观存在的事物出发来构 造软件系统,并在系统构造中尽可能运用人类的自然思维方 式,将一个实际问题看成是一个对象或几个对象的集合。
面向对象分析是在系统所要求解的问题中找出对象(具有属性 和行为)以及它所属的类,并定义好对象与类;
❖ 属性一般只能通过执行对象的操作来改变。 ❖ 操作(方法或服务)描述了对象执行的功能,
若通过消息传递,还可以为其他对象使用。 ❖ 对象可以是外部实体、信息结构、事件、角色、
组织结构、地点或位置、操作规程等。
类
❖ 把具有相同特征(属性)和行为(操作)的对 象归在一起就形成了类 (如班级) 。
❖ 类的定义包括一组数据属性和在数据上的一组 合法操作。
Rational统一开发过程
1. 最佳软件开发实践 为了以一种更好的、迭代的、可预测的方式开 发软件产品,总结了软件开发的最佳实践:
1) 迭代式软件开发; 2) 需求管理; 3) 基于构件的软件体系结构; 4) 建立软件可视化模型; 5) 不断验证软件质量; 6) 控制变更。
2. Rational统一开发过程
[参考资料]:
概述 面向对象技术
面向对象开发范型的特点
❖ 系统中的对象是数据抽象与过程抽象的综合。 ❖ 系统的状态保存在各个对象的数据存储中。 ❖ 控制流包含在各个对象中的操作内。 ❖ 在面向对象体系结构消息从一个对象传送到另一
个对象。算法被分布到各种实体中。通过执行消 息传递和对象中的操作实现算法的功能。
软件开发过程的作用是: 1) 成为开发组活动顺序的向导。 2) 详细说明需要开发哪些制品,何时开发。 3) 指导每一个成员及整个开发组的工作。 4) 提供监控和度量项目产品和活动所依据
的准则。 ❖ 如果没有一个良好定义的过程,开发组将各行
其是,开发成功与否完全依赖个别优秀的人才, 这不是能够长久的。
❖ 接收消息的实例执行消息中指定的操作,并将形 式参数与参数表中相应的值结合起来。
继承
❖ 如果某几个类之间具有共性的东西 (信息结构和 行为),抽取出来放在一个泛化类中,将各个类的 特有东西放在特殊类中分别描述,则可建立起 特殊类对泛化类的继承。
❖ 继承是使用已有的类定义做为基础建立新类的 定义技术。
面向对象设计是把系统所要求解的问题分解为一些对象及对 象间传递消息的过程;
面向对象实现是把数据和处理数据的过程结合为一个对象。 对象既可以像数据一样被处理,又可以像过程一样被描述 处理的流程和细节。
总之,面向对象分析到面向对象设计再到面向对象实现 (即OOA→OOD→OOP)之间可以直接进行而不用转换, 保持了问题域中事物及其相互关系的本来面貌。[例子和 概念后面介绍]。
❖ 纵轴表明过程的静态状况,通过过程构件、 活动、工作流、制品和工作人员描述过程。
工作流
业务建模
沿
需求
内 分析与设计 容
轴
Leabharlann Baidu
实现
的
测试
组 织
实施
配置和变更管理
项目管理
环境
初始
阶段
细化
构造
移交
初始化
细化#1 细化#2 构造#1 构造#2 构造#3 移交#1移交#2
迭代 沿时间轴的组织结构
3. 过程的静态描述:过程模型 过程模型中的主要模型元素有 4 种: ❖ 工作人员:谁做(Who) ❖ 活动:怎么做(How) ❖ 制品:做什么(what) ❖ 工作流:何时做(when)
❖ 在一个类中,每个对象都是类的实例 (例证) , 它们都可使用类中的函数。
❖ 类定义了各个实例所共有的结构,使用类的构 造函数,可以在创建该类的实例时初始化这个 实例的状态。
消息
❖ 消息是一个实例与另一个实例之间传递的信息, 要求该实例执行类中定义的某个操作。
❖ 消息的使用类似于函数调用,消息中指定了某一 个实例,一个操作名和一个参数表 (可能是空 的) 。
面向对象分析、设计与实现 马丽
CH7 面向对象的分析和设计方法
在前面各章节中,我们学习的是传统的软件工程方法---结构化方法学, 这部分我们将要介绍一种全新的系统分析设计方法——面向对象方法学。 它是一种实用而强有力的软件开发方法,它产生于20世纪70年代末,直到 目前,OO技术已有广泛的应用。
面向对象技术具有许多特色,一是面向对象方法的唯一性,即面向对象 方法是对软件开发过程所有阶段进行综合考虑而得到的唯一有效方法.二 是面向对象技术中生存期的一个阶段到下一个阶段的高度连续性,即在 一个阶段所用的组成部分与下一个阶段所使用的组成部分是衔接的。三 是把面向对象分析(OOA)、面向对象的设计(OOD)和面向对象程序 设计(OOP)集成到生存期的相应阶段。
❖ Rational统一开发过程(RUP, Rational Unify Process)描述了如何在软件开发组织中严格 分配任务和职责的方法。
❖ RUP 是一个过程产品,"软件过程也是软件。"
❖ RUP 采用二维的过程结构:
❖ 横轴表明过程的生存周期,它反映了过程被 激活时的动态情况,用周期、阶段、迭代和 里程碑表示。
❖ 已有的类可当做基类来引用,则新类相应地可 当做派生类来引用。
多态与动态绑定
❖ 多态性指同名的函数或操作可在不同类型的对 象中有各自相应的实现。例如 ❖整数“+”:整数加法 ❖浮点数“+”:浮点数加法 ❖字符串“+”:字符串连接 ❖点“+”:两个点的坐标位置分别叠加
❖ 具有多态的函数或操作在运行时才根据实际的 对象类型,执行相应实现程序的连接,此即动 态绑定。
面向对象的特点
❖ 抽象性:对象的数据抽象和行为抽象; ❖ 封装性:信息隐蔽; ❖ 共享性:
❖同一类中所有实例共享数据结构和行为特征; ❖同一应用中所有实例通过继承共享数据结构
和行为特征; ❖不同应用中所有实例通过复用共享数据结构
和行为特征
对象
❖ 对象是系统中用来描述客观事物的一个实体, 是构成系统的一个基本单位,由一组属性和一 组对属性进行操作的服务组成。
1) 过程的中心概念是工作人员,工作人员不 是指某一个人,而是指完成工作的角色。 工作人员定义人们应履行的行为和职责。
2) 活动定义了工作人员所执行的工作。有 3 类步骤:
面向对象(OO,Object Oriented)可用公式表示为:面 向对象= 对象+类+继承+通信
面向对象的基本思想是从现实世界客观存在的事物出发来构 造软件系统,并在系统构造中尽可能运用人类的自然思维方 式,将一个实际问题看成是一个对象或几个对象的集合。
面向对象分析是在系统所要求解的问题中找出对象(具有属性 和行为)以及它所属的类,并定义好对象与类;
❖ 属性一般只能通过执行对象的操作来改变。 ❖ 操作(方法或服务)描述了对象执行的功能,
若通过消息传递,还可以为其他对象使用。 ❖ 对象可以是外部实体、信息结构、事件、角色、
组织结构、地点或位置、操作规程等。
类
❖ 把具有相同特征(属性)和行为(操作)的对 象归在一起就形成了类 (如班级) 。
❖ 类的定义包括一组数据属性和在数据上的一组 合法操作。
Rational统一开发过程
1. 最佳软件开发实践 为了以一种更好的、迭代的、可预测的方式开 发软件产品,总结了软件开发的最佳实践:
1) 迭代式软件开发; 2) 需求管理; 3) 基于构件的软件体系结构; 4) 建立软件可视化模型; 5) 不断验证软件质量; 6) 控制变更。
2. Rational统一开发过程
[参考资料]:
概述 面向对象技术
面向对象开发范型的特点
❖ 系统中的对象是数据抽象与过程抽象的综合。 ❖ 系统的状态保存在各个对象的数据存储中。 ❖ 控制流包含在各个对象中的操作内。 ❖ 在面向对象体系结构消息从一个对象传送到另一
个对象。算法被分布到各种实体中。通过执行消 息传递和对象中的操作实现算法的功能。
软件开发过程的作用是: 1) 成为开发组活动顺序的向导。 2) 详细说明需要开发哪些制品,何时开发。 3) 指导每一个成员及整个开发组的工作。 4) 提供监控和度量项目产品和活动所依据
的准则。 ❖ 如果没有一个良好定义的过程,开发组将各行
其是,开发成功与否完全依赖个别优秀的人才, 这不是能够长久的。
❖ 接收消息的实例执行消息中指定的操作,并将形 式参数与参数表中相应的值结合起来。
继承
❖ 如果某几个类之间具有共性的东西 (信息结构和 行为),抽取出来放在一个泛化类中,将各个类的 特有东西放在特殊类中分别描述,则可建立起 特殊类对泛化类的继承。
❖ 继承是使用已有的类定义做为基础建立新类的 定义技术。
面向对象设计是把系统所要求解的问题分解为一些对象及对 象间传递消息的过程;
面向对象实现是把数据和处理数据的过程结合为一个对象。 对象既可以像数据一样被处理,又可以像过程一样被描述 处理的流程和细节。
总之,面向对象分析到面向对象设计再到面向对象实现 (即OOA→OOD→OOP)之间可以直接进行而不用转换, 保持了问题域中事物及其相互关系的本来面貌。[例子和 概念后面介绍]。
❖ 纵轴表明过程的静态状况,通过过程构件、 活动、工作流、制品和工作人员描述过程。
工作流
业务建模
沿
需求
内 分析与设计 容
轴
Leabharlann Baidu
实现
的
测试
组 织
实施
配置和变更管理
项目管理
环境
初始
阶段
细化
构造
移交
初始化
细化#1 细化#2 构造#1 构造#2 构造#3 移交#1移交#2
迭代 沿时间轴的组织结构
3. 过程的静态描述:过程模型 过程模型中的主要模型元素有 4 种: ❖ 工作人员:谁做(Who) ❖ 活动:怎么做(How) ❖ 制品:做什么(what) ❖ 工作流:何时做(when)
❖ 在一个类中,每个对象都是类的实例 (例证) , 它们都可使用类中的函数。
❖ 类定义了各个实例所共有的结构,使用类的构 造函数,可以在创建该类的实例时初始化这个 实例的状态。
消息
❖ 消息是一个实例与另一个实例之间传递的信息, 要求该实例执行类中定义的某个操作。
❖ 消息的使用类似于函数调用,消息中指定了某一 个实例,一个操作名和一个参数表 (可能是空 的) 。