最新课件-软件工程教学第九章面向对象方法学引论 精品
合集下载
软件工程电子课件第9章 面向对象设计

11
9.2 启发规则
3.设计简单的类
应该尽量设计小而简单的类,以便于开发和管理。当类比较 庞大的时候,要记住它的所有服务是非常困难的。为保持类的 简单,应该注意以下几点。 ➢ (1)避免包含过多的属性
属性过多通常表明这个类过分复杂了,它所完成的功能可能太多了。
➢ (2)有明确的定义
为了使类的定义明确,分配给每个类的任务应该简单,最好能用一 两个简单语句描述它的任务。
➢ (1)交互耦合
如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。 为使交互耦合尽可能松散,应该遵守下述准则。
• ◇ 尽量降低消息连接的复杂程度。应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。
• ◇ 减少对象发送(或接收)的消息数。Βιβλιοθήκη 2021/1/176
9.1 面向对象设计的准则
使用面向对象方法开发软件时,在分析与设计之间并没有明确的分界线, 对于问题域子系统来说,情况更是如此。
通过面向对象分析所得出的问题域精确模型,为设计问题域子系统奠定 了良好的基础,建立了完整的框架
使用面向对象方法学开发软件,能够保持问题域组织框架的稳定性,从 而便于追踪分析、设计和编程的结果。在设计与实现过程中所做的细 节修改(如增加具体类,增加属性或服务),并不影响开发结果的稳 定性,因为系统的总体框架是基于问题域的。
➢ (2)类内聚
设计类的原则是,一个类应该只有一个用途,它的属性和服务应 该是高内聚的。类的属性和服务应该全都是完成该类对象的任务所必 需的,其中不包含无用的属性或服务。
➢ (3)一般/特殊内聚
设计出的一般/特殊结构,应该符合多数人的概念,更准确地说, 这种结构应该是对相应的领域知识的正确抽取。
软件工程概论参考课件9_面向对象的方法学

面向对象的方法
2019/11/7
19
taohuating126
② 结构化方法论
传统方法论只关注程序的流程,程序结构没有得到有效的 解决,更没有意识到需求分析和软件结构设计的重要性, 这个阶段的导致软件危机的时期;主要问题是程序(微观) 的质量、效率、可维护性问题;
结构化程序设计技术,即把程序结构规范成了顺序的、判 断分支的和循环的三种基本的结构。解决了程序结构问题, 使得程序的质量和编程效率有了很大的提高,同时,使得 程序的可维护性得到了提高。
taohuating126
软件结构问题
面 向 对 象 的 方 法
程序结构问题
解决软件结 构问题
面向对象的 思想
面向对象的 程序设计方 法,解决程 序结构问题
面向对象的方法
2019/11/7
14
taohuating126
3. 什么是方法论?
一般认为,方法论指的是做事或思考问题的思维模式、策略、步骤、 行动准则。
没有思想的方法、工具和技术的运用,是永远不得要领,也体会不 到某种方法的魅力的。
面向对象的方法
2019/11/7
17
taohuating126
5. 有哪些方法论?
在软件工程实践中,不同时期都有应用成熟的方法论,下面就简单 介绍这些方法论,最后,重点介绍面向对象的方法论。
① 传统方法论 ② 结构化方法论 ③ 信息建模方法 ④ 面向对象方法论
为了提高开发效率、提高质量和可维护性,首先要遇到 的是解决程序设计与实现问题(程序结构与实现问题, 是微观的)
宏观层面,解决软件系统结构问题
软件系统结构与程序结构不是一个概念,需求分析与系 统设计主要解决的是软件结构问题,属宏观层面。
9面向对象方法学引论PPT课件

面向对象的方法是一种运用对象、类、继承、 封装、聚合、消息传送、多态性等概念来构造系 统的软件开发方法。
9.1.1 面向对象方法学的要点
什么是面向对象 根据Coad和Yourdon的定义,按照以下4个概念 设计和实现的系统,称为是面向对象的。 面向对象=对象 (object)
+类 (classification) +继承(inheritance) +通信 (communication with messages)
一组数据和方法。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把
若干个对象类组成一个层次结构的系统(也称为类等级)。 (4) 对象彼此之间仅能通过传递消息互相联系。
面向对象=对象 (object) +类 (classification) +继承(inheritance) +通信 (communication with messages)
9.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向对象的开 发方法是十分重要的。
第9章 面向对象方法学引论
传统方法数 据与过程是 分离的
对象把数据 和处理数据 的方法封装 成一个单元
第9章 面向对象方法学引论
传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出
面向对象方法 系统是交互对象的集合 对象与人或其他对象交互 对象发送与响应消息
第9章 面向对象方法学引论
第9章 面向对象方法学引论
传统的软件工程方法是面向过程的,将数据和 处理过程分离,求解过程是先对应用领域(问题 空间)进行分析,建立起问题空间的逻辑模型, 再通过一系列复杂的转换和算法,构造计算机系 统,获得解空间。
9.1.1 面向对象方法学的要点
什么是面向对象 根据Coad和Yourdon的定义,按照以下4个概念 设计和实现的系统,称为是面向对象的。 面向对象=对象 (object)
+类 (classification) +继承(inheritance) +通信 (communication with messages)
一组数据和方法。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把
若干个对象类组成一个层次结构的系统(也称为类等级)。 (4) 对象彼此之间仅能通过传递消息互相联系。
面向对象=对象 (object) +类 (classification) +继承(inheritance) +通信 (communication with messages)
9.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向对象的开 发方法是十分重要的。
第9章 面向对象方法学引论
传统方法数 据与过程是 分离的
对象把数据 和处理数据 的方法封装 成一个单元
第9章 面向对象方法学引论
传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出
面向对象方法 系统是交互对象的集合 对象与人或其他对象交互 对象发送与响应消息
第9章 面向对象方法学引论
第9章 面向对象方法学引论
传统的软件工程方法是面向过程的,将数据和 处理过程分离,求解过程是先对应用领域(问题 空间)进行分析,建立起问题空间的逻辑模型, 再通过一系列复杂的转换和算法,构造计算机系 统,获得解空间。
软件工程导论课件第9章-面向对象方法学引论(第六版)(张海潘编著)

对象具有封装性的条件如下: 有一个清晰的边界。所有私有数据和实现操作的代码都 被封装在这个边界内,从外面看不见更不能直接访问。 有确定的接口(即协议)。这些接口就是对象可以接受 的消息,只能通过向对象发送消息来使用它。 受保护的内部实现。实现对象功能的细节(私有数据和 代码)不能在定义该对象的类的范围外访问。
27
9 . 4 对象模型
描述系统内部对象的静态结构,包括对象本身的 定义、对象的属性和操作、以及对象与其它对象 之间的关系。
对象模型为建立动态模型和功能模型,提供了实 质性的框架。
UML 中,对象模型通常由“类图”组成。
28
9.4.1 类图的基本符号
1、定义类
类的图形符号 为长方形;
用两条横线把 长方形分成上、 中、下3个区域;
a的子类图的子类图94实现继承机制的原理继承举例人员姓名性别出生日期进校离校23教职工继承职工号工资挣工资学生继承学号专业选课研究生继承课题方向研究工作教师继承职称教课职员继承职务管理事务8多态性polymorphism多态性指子类对象可以象父类对象那样使用同样的消息既可以发送给父类对象也可以发送给子类对象
对象中的数据表示对象的状态,一个对象的状态只 能由该对象的操作来改变。
每当需要改变对象的状态时,只能由其他对象向该 对象发送消息。
对象响应消息时,按照消息模式找出与之匹配的方 法,并执行该方法。
12
2、对象的定义
从动态角度或对象的实现机制来看,对象是一台动机来模
拟:
具有内部状态S,操作fi(i=1,2,…,n),且与操作fi对应 的状态转换函数为gi(I=1,2,…,n)的一个对象。
9.2.2 其他概念
1、类(Class) 类就是对具有相同数据和相同操作的一组相似
27
9 . 4 对象模型
描述系统内部对象的静态结构,包括对象本身的 定义、对象的属性和操作、以及对象与其它对象 之间的关系。
对象模型为建立动态模型和功能模型,提供了实 质性的框架。
UML 中,对象模型通常由“类图”组成。
28
9.4.1 类图的基本符号
1、定义类
类的图形符号 为长方形;
用两条横线把 长方形分成上、 中、下3个区域;
a的子类图的子类图94实现继承机制的原理继承举例人员姓名性别出生日期进校离校23教职工继承职工号工资挣工资学生继承学号专业选课研究生继承课题方向研究工作教师继承职称教课职员继承职务管理事务8多态性polymorphism多态性指子类对象可以象父类对象那样使用同样的消息既可以发送给父类对象也可以发送给子类对象
对象中的数据表示对象的状态,一个对象的状态只 能由该对象的操作来改变。
每当需要改变对象的状态时,只能由其他对象向该 对象发送消息。
对象响应消息时,按照消息模式找出与之匹配的方 法,并执行该方法。
12
2、对象的定义
从动态角度或对象的实现机制来看,对象是一台动机来模
拟:
具有内部状态S,操作fi(i=1,2,…,n),且与操作fi对应 的状态转换函数为gi(I=1,2,…,n)的一个对象。
9.2.2 其他概念
1、类(Class) 类就是对具有相同数据和相同操作的一组相似
软件工程 第九章面向对象方法学引论

第九章面向对象方法学引论
2.结构化技术的缺点 . 用这种技术开发出的软件,其稳定性、 用这种技术开发出的软件,其稳定性、可修改 性和可重用性都比较差。 性和可重用性都比较差。 围绕实现处理功能的“过程”来构造系统的。 围绕实现处理功能的“过程”来构造系统的。 然而用户需求的变化大部分是针对功能的— 然而用户需求的变化大部分是针对功能的 —稳定性差; 稳定性差; 稳定性差 清楚地定义了目标系统的边界, 清楚地定义了目标系统的边界,软件通过界 面与客观世界通信。系统结构依赖于对系统 面与客观世界通信。系统结构依赖于对系统 边界的定义, 边界的定义,很难把这样的系统扩展到新的 边界——系统较难修改和扩充; 系统较难修改和扩充; 边界 系统较难修改和扩充 把处理分解成子处理的过程多少带些任意性, 把处理分解成子处理的过程多少带些任意性, 并且把数据和操作作为分离的实体——可重 并且把数据和操作作为分离的实体 可重 用性差。 用性差。
第九章面向对象方法学引论
存在的问题 1.生产率提高的幅度远不能满足需要 •生命周期方法学强调需求分析的重要性,强调 生命周期方法学强调需求分析的重要性, 生命周期方法学强调需求分析的重要性 在每个阶段结束之前必须进行评审, 在每个阶段结束之前必须进行评审,从而提高 了软件开发的成功率,减少了重大返工的次数; 了软件开发的成功率,减少了重大返工的次数; •开发过程中实行严格的质量管理,采用先进的 开发过程中实行严格的质量管理, 开发过程中实行严格的质量管理 技术方法(主要是结构分析、设计、编程技术) 技术方法(主要是结构分析、设计、编程技术) 和软件工具,也都加快了软件开发的速度。 和软件工具,也都加快了软件开发的速度。 •但开发效率的提高仍然很有限,提高的幅度远 但开发效率的提高仍然很有限, 但开发效率的提高仍然很有限 远赶不上对软件产品的需要。 远赶不上对软件产品的需要。 •从用户提出要求到他们最终得到所需要的目标 从用户提出要求到他们最终得到所需要的目标 系统,往往需要经过几年甚至更长的延迟时间。 系统,往往需要经过几年甚至更长的延迟时间。
[软件工程]CH09-面向对象方法
![[软件工程]CH09-面向对象方法](https://img.taocdn.com/s3/m/9e8a341b02d276a201292e56.png)
缺书单 采 购
进书通知 员
学 生
2020/6/19
购书单 领书单
1 销售
进 书 通 知
缺书单 2 采购
采 购 员
进书通知
12
9.1.2面向对象的基本特征
【结构化设计实例】
购书单
学Leabharlann 1生销售进 书 通
领书单
知
自顶向下地进行功能分解
缺书单 采
2 采购
购
员
进书通知
2020/6/19
2.1 按书号 汇总缺书
面向对象=对象+类+继承+通信
2020/6/19 3
9.1.1 对象和类
【类】是对一组具有相同结构、操作,并遵守相 同规则的对象的抽象;
【对象】是类的一个实例;
笔
【类】
钢笔
铅笔
毛笔 【类?对象】
2020/6/19
我的一支铅笔
【类?对象】 【类?对象】
4
9.1.1 对象和类
【对象】是类的一个实例;
子类
2020/6/19 10
9.1.2面向对象的基本特征
结构化方法(SA、SD、SP)
【指导思想】自顶向下,逐步细化
自顶向下地进行功能分解; 从外部功能上模拟客观世界;
2020/6/19 11
9.1.2面向对象的基本特征
【结构化设计实例】
购书单
学
教材
生
购销系统
领书单
自顶向下地进行功能分解
【开发过程】”做什么””如何做” 【优点】系统的结构性强,便于设计和理解 【缺点】维护困难;
用户的需求不可能一次提得完备、精确; 一旦需求改变,后续的设计和实现都要修改;
进书通知 员
学 生
2020/6/19
购书单 领书单
1 销售
进 书 通 知
缺书单 2 采购
采 购 员
进书通知
12
9.1.2面向对象的基本特征
【结构化设计实例】
购书单
学Leabharlann 1生销售进 书 通
领书单
知
自顶向下地进行功能分解
缺书单 采
2 采购
购
员
进书通知
2020/6/19
2.1 按书号 汇总缺书
面向对象=对象+类+继承+通信
2020/6/19 3
9.1.1 对象和类
【类】是对一组具有相同结构、操作,并遵守相 同规则的对象的抽象;
【对象】是类的一个实例;
笔
【类】
钢笔
铅笔
毛笔 【类?对象】
2020/6/19
我的一支铅笔
【类?对象】 【类?对象】
4
9.1.1 对象和类
【对象】是类的一个实例;
子类
2020/6/19 10
9.1.2面向对象的基本特征
结构化方法(SA、SD、SP)
【指导思想】自顶向下,逐步细化
自顶向下地进行功能分解; 从外部功能上模拟客观世界;
2020/6/19 11
9.1.2面向对象的基本特征
【结构化设计实例】
购书单
学
教材
生
购销系统
领书单
自顶向下地进行功能分解
【开发过程】”做什么””如何做” 【优点】系统的结构性强,便于设计和理解 【缺点】维护困难;
用户的需求不可能一次提得完备、精确; 一旦需求改变,后续的设计和实现都要修改;
最新课件-软件工程教学第九章面向对象方法学引论 推荐

03:16
4
§1面向对象方法学概述
03:16
5
§1面向对象方法学概述
② 渐增模型(the incremental model) : Gilb (1988) The waterfall model is still followed , but for
each separate increment .
邮递员,24小时都开门 唉,那就先送…束…花吧 ——
…… Methods:
Post_office.Send (request, payment) send;
sell;
……
Object
对不起, 本邮局不提供
此类服务
对象Object = 数据Attribute + 操作Method
注意:Object内部的attributes不允许外部用户直接改动,只有当它
• OOM的四要素:
①对象(object):世界由对象组成。(软件也由对象组成)
② 类 (class) :对象可划分为类;单个对象可视为某一 类的实例 (instance)。
03:16
8
§1面向对象方法学概述
例: class Post_office {
private : loc_type location ; emp_type employee ; ……
• 数据与操作分开处理,可能造成软构件对具体应用 环境的依赖。 可重用性(reusability)较差.
03:16
2
二、软件工程的新途径
§1面向对象方法学概述
1、快速原型法(Prototyping) 适用于用户驱动的系统(即需求模糊或随时 间变化的系统)
Prototype
Modification
软件工程第九章-面向对象方法学引论PPT课件

2021/2/21
-
32
9.4 对象模型
统一建模语言UML
UML(Unified Modeling Language)产生于90年代中期。 它不仅统一了Booch、OMT和OOSE方法中的概念和表示 法,而且对其作了进一步扩展,最终成为在面向对象技 术领域占主导地位的、并被大众所接受的标准建模语言。 1、UML概述 UML的发展历程(下图) UML是一个通用的标准建模语言,可以对任何具有静态 结构和动态行为的系统进行可视化建模。UML不是一个 开发过程,也不是一个方法,但允许任何一种开发过程 和面向对象方法使用它。
软件工程
第九章 面向对象方法学引论
中南大学 Central South University
2021/2/21
本讲内容
9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系
2021/2/21
-
2
软件工程
面向对象方法是一种新的思维方法,它是把程序看作是 相互协作而又彼此独立的对象的集合。
这样就减小了语义断层:系统中解空间对象可以直接模拟 问题空间的对象,解空间与问题空间的结构十分一致。
2021/2/21
-
8
9.1.1 面向对象方法学的要点
面向对象方法具有下述4个要点:
(1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可 以由比较简单的对象以某种方式组合而成。因此,面向对象的软件系统是 由对象组成的。 (2)类(class)是对一组对象的抽象,集中了该组对象的共同特性(一组数据 和一组方法)。对象是类的实例。
继承强调一般化 / 具体化关系中共享属性和操作的机 制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§1面向对象方法学概述
特点:尽可能模拟人类习惯的思维方式,即问题 域与求解域在结构上尽可能一致。 与传统方法相反,OOM以数据或信息为主线,把 数据和处理结合构成统一体 —— 对象。 程序不再是一系列工作在数据上的函数集合,而 是相互协作又彼此独立的对象的集合。 OOM的四要素:
①对象(object):世界由对象组成。(软件也由对象组 成) ② 类 (class) :对象可划分为类;单个对象可视为某一 类的实例 (instance)。
OOM的优点: ① 传统方法:面向过程设计,以计算为核心; 数据与操作分离,不易理解。
OOM:以object 为核心,强调对现实概念的模拟而不
08:32
强调算法。 “面向对象方法学的基本原则,是按照人们 习惯的思维方式建立问题域的模型,开发出 尽可能直观、自然地表现求解方法的软件系 统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction)
08:32
6
2、面向对象方法学(OOM)
§1面向对象方法学概述
例:
杭州 北京
Message Post-office 我想把邮局搬到 我家门口,多加几个 邮递员,24小时都开门 唉,那就先送束花吧 —— ……
Send by method
Post_office.Send (request, payment)
Attributes: location; employee; …… Methods: send; sell; ……
Object
对不起, 本邮局不提供 此类服务
对象Object = 数据Attribute + 操作Method 注意:Object内部的attributes不允许外部用户直接改动,只有当它 提供了相应的服务method时,用户才能通过发送message来 08:32 7 提请它执行。
08:32 4
§1面向对象方法学概述
08:32
5
§1面向对象方法学概述
② 渐增模型(the incremental model) : Gilb (1988) The waterfall model is still followed , but for each separate increment . 注:演化原型法与传统方法最大的不 同,在于它是一种高度迭代的动 态方法,系统的初始版本很早就 交付用户试用。
§1面向对象方法学概述
2、SA - SD - SP (结构分析、设计、程序)技术的缺点: • 本质上是功能分解,以实现功能的过程为中心, 而用户的需求变化主要是针对功能的。 这就使基于过程的设计不易被理解; 且功能变化往往引起结构变化较大,稳定性不好。 • 系统有明确的边界定义,且系统结构依赖于系统边 界的定义。这样的系统不易扩充和修改。
类可分层,下层子类与上层父类有相同特征,
称为继承。
④ 消息(message):
对象间只能通过发送消息进行联系.
外界不能处理对象的内部数据,只能通过消息
请求它进行处理(如果它提供相应消息的话)。
08:32
10
§1面向对象方法学概述 OOM = Object+Class+Inheritance+Communication with messages
11
§1面向对象方法学概述
② 传统方法:结构依赖于功能,不稳定。 OOM:以object模拟实体,需求变化不会引起结构 的整体变化,因为实体相对稳定,故系统 也相应稳定。 ③ 传统方法:通过建立标准函数库来重用软构件。 但标准函数缺少必lass所有的实例(instances)都可重用它 的代码; 由继承性(inheritance) 派生出的新的 class 可重用其父类的代码,并且可以修改、扩 充而不影响其父类的使用。 08:32 12
第九章 面向对象方法学引论
(Object - Oriented Methodology)
§1面向对象方法学概述 一、传统方法学的缺点
1、瀑布模型的缺点:僵化 • 瀑布模型要求:生命周期各阶段间遵守严格的顺序。 实际情况是:软件开发往往在反复实践中完成。 • 瀑布模型要求:预先定义并“冻结”软件需求。 实际情况是:某些系统的需求是一个逐渐明确的过程, 且预先定义的需求到软件完成时可能已经过时。
main ( ) { Post_office My_PO ; req_type My_request ; money_type My_payment ; …… My_PO.Send ( My_request, My_payment) ; …… }
08:32 9
§1面向对象方法学概述
③ 继承(inheritance):
08:32 8
§1面向对象方法学概述
例: class Post_office {
};
private : loc_type location ; emp_type employee ; …… public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ……
• 数据与操作分开处理,可能造成软构件对具体应用 环境的依赖。 可重用性(reusability)较差.
08:32 2
§1面向对象方法学概述
二、软件工程的新途径
1、快速原型法(Prototyping) 适用于用户驱动的系统(即需求模糊或随时 间变化的系统)
Prototype
Modification
Feedback
08:32
3
§1面向对象方法学概述
⑴ 抛弃原型法(throw - away prototype) 1 : 建立原型系统,评价目标系统的某个特 性,以便更正确地确定需求. 2 : 使用完之后,抛弃掉原型系统,然后再 重建目标系统. 本质上是瀑布模型。 ⑵ 演化原型法(evolutionary prototype) ①螺旋模型(the spiral model) : Boehm (1988)