面向对象方法学概述优秀课件
合集下载
面向对象方法学概述精品PPT课件
注意:UML是一种语言规范而不是一种建模方法
用面向对象方法开发软件,通常需要建立3种形式的模 型:描述系统数据结构的对象模型,描述系统控制结构 的动态模型、描述系统功能的功能模型。 在整个开发过程中,3种模型一直都在发展完善。在面向 对象分析中,构造出完全独立于实现的应用域模型;在 面向对象设计过程中,把求解域的结构逐渐加入到模型 中;在实现阶段,把应用域和求解域的结构编成代码并 进行严格的测试验证
面向对象分析设计方法(OOAD): ▪ 兴起于20世纪80年代,从20世纪90年代起至今它已
经在分析设计领域占据了无可争议的主流地位 ▪ 1997年11月,UML被国际对象管理组织(OGM)采
纳,此后UML成了OOAD建模语言的国际标准。 ▪ UML对于OOAD中的语义、图形表示法和使用规则做
了完整而详细的定义。其建模能力超过了以往任何 OOAD方法,当然复杂性也随之膨胀。 ▪ 真正使UML流行的是Rational公司基于UML的建模 工具Rose。
每次重复都会增加或明确一些目标系统的性质,但却不是对先前工 作结果的本质性改动,这样就减少了不一致性,降低了出错的可能。 P22喷泉模型
面向对象方法的特点
1. 通用组织方法 2. 抽象 3. 封装或信息隐蔽 4. 继承 5. 多态 6. 消息通信 7. 关联 8. 复用
1. 通用组织方法
通用组织方法用于协助组织信息系统模型以及最终编写的软件。包 括: 对象及其属性或者特征。 整体和部分(is a part of)。 类和成员(is a member of) 。 2. 抽象 忽略问题域的无关部分而集中考虑关键部分的原则
第一章 面向对象方法学引论
传统方法学的缺点
僵化的瀑布模型 瀑布模型意味着生命周期各阶段间存在着严
用面向对象方法开发软件,通常需要建立3种形式的模 型:描述系统数据结构的对象模型,描述系统控制结构 的动态模型、描述系统功能的功能模型。 在整个开发过程中,3种模型一直都在发展完善。在面向 对象分析中,构造出完全独立于实现的应用域模型;在 面向对象设计过程中,把求解域的结构逐渐加入到模型 中;在实现阶段,把应用域和求解域的结构编成代码并 进行严格的测试验证
面向对象分析设计方法(OOAD): ▪ 兴起于20世纪80年代,从20世纪90年代起至今它已
经在分析设计领域占据了无可争议的主流地位 ▪ 1997年11月,UML被国际对象管理组织(OGM)采
纳,此后UML成了OOAD建模语言的国际标准。 ▪ UML对于OOAD中的语义、图形表示法和使用规则做
了完整而详细的定义。其建模能力超过了以往任何 OOAD方法,当然复杂性也随之膨胀。 ▪ 真正使UML流行的是Rational公司基于UML的建模 工具Rose。
每次重复都会增加或明确一些目标系统的性质,但却不是对先前工 作结果的本质性改动,这样就减少了不一致性,降低了出错的可能。 P22喷泉模型
面向对象方法的特点
1. 通用组织方法 2. 抽象 3. 封装或信息隐蔽 4. 继承 5. 多态 6. 消息通信 7. 关联 8. 复用
1. 通用组织方法
通用组织方法用于协助组织信息系统模型以及最终编写的软件。包 括: 对象及其属性或者特征。 整体和部分(is a part of)。 类和成员(is a member of) 。 2. 抽象 忽略问题域的无关部分而集中考虑关键部分的原则
第一章 面向对象方法学引论
传统方法学的缺点
僵化的瀑布模型 瀑布模型意味着生命周期各阶段间存在着严
第三篇 面向对象方法学PPT课件
4
结构化方法学与面向对象方法学
假如数据结构复杂且变换并不多,那么 如以过程主导分析和设计,一旦有系统 变更就会给下游开发带来极大混乱。
由于对过程的理解不同,面向过程的功 能细分所分割出的功能模块有时会因人 而异。而面向对象的对象细分,从同一 问题领域的对象出发,不同人得出相同 结论的比率较高。
分成两类。
圆 圆心坐标 半径 可见性 显示() 隐藏
弧 圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
16
17
设计类等级
除了把对象分类之外,还应该进一 步按照子类(派生类)与父类(基 类)的关系,把若干个相关的对象 类组成一个层次结构的系统(类等 级)。
在这种层次结构中,下层的派生类 自动具有和上层基类相同的特定 (包括数据和操作),这种现象称 为继承。
(3)按照子类与父类的关系,把若干个 对象类组织成一个层次结构的系统(类 等级)。
23
面向对象方法学的要点
(4)对象之间仅能通过传递消息互相通信。
“面向对象=对象+类+继承+消息”
24
面向对象方法学过程
一般说来,使用面向对象方法学开发软件时, 工作重点应该放在生命周期中的分析阶段。这 种方法在开发的早期阶段定义了一系列面向问 题的对象,并且在整个开发过程中不断充实和 扩充这些对象。
25
面向对象方法学过程
迭代是软件开发过程中普遍存在的 一种内在属性。经验表明,软件过 程各个阶段之间的迭代或一个阶段 内各个工作步骤之间的迭代,在面 向对象范型中比在结构化范型中更 常见,也更容易实现。
喷泉模型是典型的面向对象生命周 期模型。
26
6.3 面向对象方法学的主要优点
与人类习惯的思维方法一致 面向对象的软件开发过程从始至终都围绕着建
结构化方法学与面向对象方法学
假如数据结构复杂且变换并不多,那么 如以过程主导分析和设计,一旦有系统 变更就会给下游开发带来极大混乱。
由于对过程的理解不同,面向过程的功 能细分所分割出的功能模块有时会因人 而异。而面向对象的对象细分,从同一 问题领域的对象出发,不同人得出相同 结论的比率较高。
分成两类。
圆 圆心坐标 半径 可见性 显示() 隐藏
弧 圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
16
17
设计类等级
除了把对象分类之外,还应该进一 步按照子类(派生类)与父类(基 类)的关系,把若干个相关的对象 类组成一个层次结构的系统(类等 级)。
在这种层次结构中,下层的派生类 自动具有和上层基类相同的特定 (包括数据和操作),这种现象称 为继承。
(3)按照子类与父类的关系,把若干个 对象类组织成一个层次结构的系统(类 等级)。
23
面向对象方法学的要点
(4)对象之间仅能通过传递消息互相通信。
“面向对象=对象+类+继承+消息”
24
面向对象方法学过程
一般说来,使用面向对象方法学开发软件时, 工作重点应该放在生命周期中的分析阶段。这 种方法在开发的早期阶段定义了一系列面向问 题的对象,并且在整个开发过程中不断充实和 扩充这些对象。
25
面向对象方法学过程
迭代是软件开发过程中普遍存在的 一种内在属性。经验表明,软件过 程各个阶段之间的迭代或一个阶段 内各个工作步骤之间的迭代,在面 向对象范型中比在结构化范型中更 常见,也更容易实现。
喷泉模型是典型的面向对象生命周 期模型。
26
6.3 面向对象方法学的主要优点
与人类习惯的思维方法一致 面向对象的软件开发过程从始至终都围绕着建
面向对象技术概述.pptx
面向对象方法的目的在于使分析、设计和实现一个软件系 统的过程与人类认识这个系统的过程同步,使用与人类认知 规律相近的方法和方式进行软件开发工作。
面向对象=对象+类+继承+通信
1.1.1 人类认知规律 1.1.2 面向对象基本原理 1.1.3 认知规律与面向对象 1.1.4 面向对象软件开发
第2页/共54页
类“职员”和“学生”的任何实例都具有类“人” 的属性和行为,即任一职员或学生都是“人”的一个 实例,因此类“人”相对类“职员”和“学生” 是具 有一般性质的类。“职员”和“学生”两类相对类 “人” 具有特殊性,它们之间构成一般特殊关系。
第14页/共54页
形式化的属性与 行为描述,风格 接近实现代码
2024/10/9
14
1.2.1 对象-3/5
1.对象的形态与静态特征(2)
Class CBook { char m_pczName; int m_nPages; int m_nEdition; …… } …… CBook b;
程序中的 类与对象
人们往往根据对象之间的各种关系去认识和描述一个复杂对象或系 统,因此,描述对象之间的各种静态联系将形成系统的内部结构。
对象间相互联系可以分类,这种划分与观察问题的角度有关,面向 对象方法学根据人类认知规律,将这些关系划分为一般-特殊、整体-部 分、实例链接三类。与此相应,具有上述关系的对象在系统或复杂对象 内部形成相应结构:一般与特殊结构、整体与部分结构以及关联结构。
[打印机忙] 暂存(文件)
e v e n t1
1
2
e v e n t2 3
2024/10/9
使用事件踪迹图描 受外界影响后属
性的变化
返回消息与事 件
面向对象=对象+类+继承+通信
1.1.1 人类认知规律 1.1.2 面向对象基本原理 1.1.3 认知规律与面向对象 1.1.4 面向对象软件开发
第2页/共54页
类“职员”和“学生”的任何实例都具有类“人” 的属性和行为,即任一职员或学生都是“人”的一个 实例,因此类“人”相对类“职员”和“学生” 是具 有一般性质的类。“职员”和“学生”两类相对类 “人” 具有特殊性,它们之间构成一般特殊关系。
第14页/共54页
形式化的属性与 行为描述,风格 接近实现代码
2024/10/9
14
1.2.1 对象-3/5
1.对象的形态与静态特征(2)
Class CBook { char m_pczName; int m_nPages; int m_nEdition; …… } …… CBook b;
程序中的 类与对象
人们往往根据对象之间的各种关系去认识和描述一个复杂对象或系 统,因此,描述对象之间的各种静态联系将形成系统的内部结构。
对象间相互联系可以分类,这种划分与观察问题的角度有关,面向 对象方法学根据人类认知规律,将这些关系划分为一般-特殊、整体-部 分、实例链接三类。与此相应,具有上述关系的对象在系统或复杂对象 内部形成相应结构:一般与特殊结构、整体与部分结构以及关联结构。
[打印机忙] 暂存(文件)
e v e n t1
1
2
e v e n t2 3
2024/10/9
使用事件踪迹图描 受外界影响后属
性的变化
返回消息与事 件
第三篇 面向对象方法学PPT课件
9
的方法学,任何方 法学都有其局限性,所以软件开发人员大可不 必拘泥于某种特定的方法学。
10
第6章 面向对象方法学导论
面向对象程序设计实例 现向对象方法学概述 面向对象方法学的主要优点 面向对象的概念
11
一个简单的图形程序的需求
在显示器荧光屏上圆心坐标为(100,100)的 位置画一个半径为40的圆,在圆心坐标为 (200,300)的位置画一个半径为20的圆, 在圆心坐标为(400,150)的位置画一条弧, 弧的起始角度为30°,结束角度为120°,半径 为50.
14
用面向对象的方式怎样解决问题?
本问题中涉及两类实体(对象):圆和弧
圆类的两个实例、弧类的一个实例(所谓实例
即具体的对象)
弧
圆 圆心坐标 半径 可见性 显示() 隐藏
圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
15
6.2 设计类等级
这个简单的图形程序需要使用圆类和弧类这两
类对象,也就是说,我们把该程序中的对象划
第三篇 面向对象方法学
所谓方法学是指组织软件生产过程的一 系列方法、技术和规范。 是软件开发者长年失败和成功经验的理 论性总结。
1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
2
面向对象方法学的基本思想
分成两类。
圆 圆心坐标 半径 可见性 显示() 隐藏
弧 圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
16
17
设计类等级
除了把对象分类之外,还应该进一 步按照子类(派生类)与父类(基 类)的关系,把若干个相关的对象 类组成一个层次结构的系统(类等 级)。
的方法学,任何方 法学都有其局限性,所以软件开发人员大可不 必拘泥于某种特定的方法学。
10
第6章 面向对象方法学导论
面向对象程序设计实例 现向对象方法学概述 面向对象方法学的主要优点 面向对象的概念
11
一个简单的图形程序的需求
在显示器荧光屏上圆心坐标为(100,100)的 位置画一个半径为40的圆,在圆心坐标为 (200,300)的位置画一个半径为20的圆, 在圆心坐标为(400,150)的位置画一条弧, 弧的起始角度为30°,结束角度为120°,半径 为50.
14
用面向对象的方式怎样解决问题?
本问题中涉及两类实体(对象):圆和弧
圆类的两个实例、弧类的一个实例(所谓实例
即具体的对象)
弧
圆 圆心坐标 半径 可见性 显示() 隐藏
圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
15
6.2 设计类等级
这个简单的图形程序需要使用圆类和弧类这两
类对象,也就是说,我们把该程序中的对象划
第三篇 面向对象方法学
所谓方法学是指组织软件生产过程的一 系列方法、技术和规范。 是软件开发者长年失败和成功经验的理 论性总结。
1
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
2
面向对象方法学的基本思想
分成两类。
圆 圆心坐标 半径 可见性 显示() 隐藏
弧 圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
16
17
设计类等级
除了把对象分类之外,还应该进一 步按照子类(派生类)与父类(基 类)的关系,把若干个相关的对象 类组成一个层次结构的系统(类等 级)。
面向对象方法概述精品PPT课件
杭州人 Attributes 杭州人 Methods
张山 (instance)
Class 中国人 张山的 Attributes
李士 (instance) Class 杭州人 中国人李士的 Attributes 杭州人李士的 Attributes
则可以认为这个软件系统是面向对象的。
1.3.5 面向对象方法及其工作模型
面向对象的方法的代表性成果有: 1、B.Henderson-sellers 和 J.m.Edwards提出的面向对象软件 生存期喷泉模型及面向对象的系统开发方法。 2、G.Booch提出的面向对象的开发方法。 3、P.Coad和E.Yourd提出的OOA和OOD法。 4、J. Rumbaugh等人提出的对象建模技术(OMT)。 5、Jacobson 提出的面向对象的软件工程(OOSE)。 6、G.booch J.Rumbough Jacobson等人在Booch方法、OMT 和OOSE的基础上推出了统一建模语言UML。
模型分类续
2、OOD 法 在需求分析的基础上,进一步解决“如何作”的问题,
OOD 法也分为概要设计和详细设计。
概要设计:细化对象行为,添加新对象,认定类,组类 库,确定外部接口及主要数据结构
详细设计:加细对象描述
3、OOP 法 使用面向对象的程序设计语言,如C++进行程序设计。 Coad和Yourdon给出一个面向对象的定义: 面向对象=对象+类+继承+消息 ,
由于对象是类的实例,在进行分析和设计时,通常把注 意力集中在类上,而不是具体的对象上。
6.1.2 面向对象的概念
对象和类的描述
对象和类的描述
对象和类一般采用“对象图” 和 “类图” 来描述。
张山 (instance)
Class 中国人 张山的 Attributes
李士 (instance) Class 杭州人 中国人李士的 Attributes 杭州人李士的 Attributes
则可以认为这个软件系统是面向对象的。
1.3.5 面向对象方法及其工作模型
面向对象的方法的代表性成果有: 1、B.Henderson-sellers 和 J.m.Edwards提出的面向对象软件 生存期喷泉模型及面向对象的系统开发方法。 2、G.Booch提出的面向对象的开发方法。 3、P.Coad和E.Yourd提出的OOA和OOD法。 4、J. Rumbaugh等人提出的对象建模技术(OMT)。 5、Jacobson 提出的面向对象的软件工程(OOSE)。 6、G.booch J.Rumbough Jacobson等人在Booch方法、OMT 和OOSE的基础上推出了统一建模语言UML。
模型分类续
2、OOD 法 在需求分析的基础上,进一步解决“如何作”的问题,
OOD 法也分为概要设计和详细设计。
概要设计:细化对象行为,添加新对象,认定类,组类 库,确定外部接口及主要数据结构
详细设计:加细对象描述
3、OOP 法 使用面向对象的程序设计语言,如C++进行程序设计。 Coad和Yourdon给出一个面向对象的定义: 面向对象=对象+类+继承+消息 ,
由于对象是类的实例,在进行分析和设计时,通常把注 意力集中在类上,而不是具体的对象上。
6.1.2 面向对象的概念
对象和类的描述
对象和类的描述
对象和类一般采用“对象图” 和 “类图” 来描述。
面向对象方法学-PPT
在面向对象得软件技术中,“类”就就是对具有相 同数据与相同操作得一组相似对象得定义,也就就是 说,类就是对具有相同属性与行为得一个或多个对象 得描述,通常在这种描述中也包括对怎样创建该类得 新对象得说明。
以上先详细地阐述了对象得定义,然后在此基础上 定义了类。也可以先定义类再定义对象,例如,可以像 下面这样定义类与对象: 类就是支持继承得抽象数据 类型,而对象就就是类得实例。
由于客观世界中得实体通常都既具有静态得属性,又 具有动态得行为,因此,面向对象方法学中得对象就是 由描述该对象属性得数据以及可以对这些数据施加 得所有操作封装在一起构成得统一体。对象可以作 得操作表示它得动态行为,在面向对象分析与面向对 象设计中,通常把对象得操作称为服务或方法。
1、 对象得形象表示
面向对象方法学得优点
1、 与人类习惯得思维方法一致 传统得程序设计技术就是面向过程得设计方法,这
种方法以算法为核心,把数据与过程作为相互独立得 部分,数据代表问题空间中得客体,程序代码则用于处 理这些数据。
2、 稳定性好
传统得软件开发方法以算法为核心,开发过程基于 功能分析与功能分解。用传统方法所建立起来得软 件系统得结构紧密依赖于系统所要完成得功能,当功 能需求发生变化时将引起软件结构得整体修改。事 实上,用户需求变化大部分就是针对功能得,因此,这样 得软件系统就是不稳定得。
(2)类(class)
现实世界中存在得客观事物有些就是彼此相似得, 例如,张三、李四、王五……虽说每个人职业、性格、 爱好、特长等等各有不同,但就是,她们得基本特征就 是相似得,都就是黄皮肤、黑头发、黑眼睛,于就是人 们把她们统称为“中国人”。人类习惯于把有相似 特征得事物归为一类,分类就是人类认识客观世界得 基本方法。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象方法学概述
❖ 面向对象思想最初起源于20世纪60年代 末的simula67语言。面向对象方法的基 本要点首次在simula语言中得到了表达 和实现。
❖ 80年代,位于美国加州的Xerox研究中心 推出smalltalk语言及其程序设计环境, 使得面向对象程序设计方法得到比较完 善的实现,掀起了面向对象研究的高潮。
80年代的面向对象程序设计就象70年代的 结构化程序设计一样,每个人都喜欢用它, 每个软件开发商都开发他们的软件支持它, 每个管理员都要付出代价应用它,每个程序 员都要以不同的方式实践它,但是没有人能 清楚地讲清楚它。
第二节 基本概念
面向对象=对象+类+继承+通信 ❖ 如果一个软件系统是使用这样四个概念
❖ 80年代中后期,面向对象的软件设计和 程序设计方法已发展成为一种成熟有效 的软件开发方法。相比而言,面向对象 的分析技术发展得比较滞后。
第一节 概述
1.1 传统方法学 ❖ 传统方法学存在的问题
生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要
❖ 出现问题的原因
❖ 具体的多形行为主要表现在以下方面:
1)运算符重载 同一个运算符可作用于多种数 据类型上;
2)函数名重载 相同的函数名可作用于不同的 对象类上,并产生不同的行为效果;
❖ 通过封装可以将对象的定义与对象的实 现分开。这样,无论是对象功能的完善 扩充,还是对象实现的修改,影响仅限 于该对象内部,保证了面向对象软件的 可构造性和易维护性。
❖ 通过继承可以表达类与类之间的联系, 大大减少了重复定义,同时也使系统的 结构更加清晰、易于理解和维护。
❖ 早在1982年,Rentsch就曾预言
*封闭性 对象的封闭性是指对象具有信息隐蔽的 能力。
*通信性 对象能够接收其它对象发来的消息,也 能向其它对象发送消息。通信性反映了不同对 象间的联系。
上述特点分别刻画了对象不同方面的性质,自治 性反映了对象独立计算的能力,封闭性和通信 性说明对象是一个既封闭又开放的相对独立体。
2.2 类(class)
2.5 服务(method,即操作、方法)
❖ 为了完成某一任务,一个对象所提供的 并体现其责任的操作称为服务。属于同 一类的所有对象共享相同的服务。
2.6 继承(inheritance)
❖ 类之间的继承关系是现实世界中遗传关系的直 接模拟,它表示类之间的内在联系以及对属性 和操作的共享。即子类可以沿用父类(被继承 类)的某些特征。当然,子类也具有自己独有 的属性和操作。
设计和实现的,则可以认为这个软件系 统是面向对象的。
2.1 对象(object)
❖ 一般说来,在系统分析和系统构造中, 对象是对客观世界事物的一种抽象,是 由数据(属性)及在其上的操作(行为)所组 成的封装体。
❖ 可以用一个公式表示为:
对象=属性+操作
对象具有如下主要特点:
*自治性 对于给定的输入,经过状态转换,对象 能产生输出。
❖ 类是一组具有相同数据结构和相同操作 的对象的集合。
❖ 类的定义包括一组数据属性和在数据上 的一组合法操作,可以用一个公式表示 为:
类=(组)数据属性+(组)数据操作
类名 属性 操作
ห้องสมุดไป่ตู้
circle
(x0,y0) r color
Display ……
2.3 属性(attribute)
❖ 每一对象的属性是一些有着确定值的, 用于描述对象状态信息的数据。
僵化的瀑布模型 *某些类型的系统需求是模糊的
*项目参与者之间存在通信鸿沟 *预先定义的需求可能是过时的
结构化技术的缺点
*用这种技术开发出的软件,其稳定性、可修改性 和可重用性都比较差。
*结构化分析、设计技术的本质是功能分析。从代 表目标系统整体功能的单个处理着手,自顶向下不 断把复杂的处理分解为子处理,层层分解下去,直 至仅剩下若干个容易实现的子处理为止。
❖ 功能与数据分离的软件设计结构与人类的现实 世界环境很不一样,和人的自然思维也就很不 一致,因此对现实世界的认识与编程之间存在 着一道很深的理解上的鸿沟。
❖ 系统是围绕着如何实现一定的行为来进行的, 当系统行为易变,需要常常修改时,修改极为 困难。
❖ 在系统中模块之间的控制作用有重要影响时, 也就是说,实际的控制发生的根源来自分散的 各个模块之中时,由于在“好的模块结构”中 的模块间的控制作用只能通过上下之间的调用 关系来进行,造成信息传递路径过长,效率低, 易受干扰,甚至出错。
❖ 属性一般只能通过执行对象的操作来改 变。
2.4 消息(message)
❖ 消息就是用来请求对象执行某个处理或 回答某些信息的要求,是连接对象的纽 带。或者说,一个对象为实现其责任而 与其它对象的通信称为消息。
❖ 消息通常由三个部分组成:接收消息的 对象;消息选择符(也称为消息名); 零个或多个变元。
❖ 新类的定义可以是现存类所声明的数据、定义 与新类所增加的声明的组合。在组合过程中, 新类复用现存类的定义,而不要求修改现存类。
❖ 继承的优点:
是软件开发中复用概念的核心 便于模块修改
简化模块
2.7 多形(polymorphism)与动态连接 (dynamic binding)
❖ 多形的本质是一个消息可以与不同的实 例结合,而且这些实例属于不同类。
❖ 自顶向下功能分解的分析方法极大地限制了软 件的可重用性。
1.2 面向对象方法学
❖ “面向对象”(Object-Oriented)是针对“面向 过程”一词提出的,是从本质上区别于传统的 结构化方法的一种新方法,新思路。
❖ OO技术的基本原理是:按照问题域的基本事 物实现自然分割,按人们通常的思维方式建立 问题域的模型,设计尽可能直接自然表现问题 求解的软件系统。
❖ 为此,OO技术引入了对象(object)概念来表现 事物,用消息(message)传递建立事物间的联 系。用类(class)和继承(inheritance)作为适应 人们一般思维方式的描述模型。用方法 (method)表示作用在对象上的各种操作。
❖ 建立在对象、消息、类、继承和方法等 概念基础上的面向对象软件的基本特征 是对象的封装性和继承性。
❖ 面向对象思想最初起源于20世纪60年代 末的simula67语言。面向对象方法的基 本要点首次在simula语言中得到了表达 和实现。
❖ 80年代,位于美国加州的Xerox研究中心 推出smalltalk语言及其程序设计环境, 使得面向对象程序设计方法得到比较完 善的实现,掀起了面向对象研究的高潮。
80年代的面向对象程序设计就象70年代的 结构化程序设计一样,每个人都喜欢用它, 每个软件开发商都开发他们的软件支持它, 每个管理员都要付出代价应用它,每个程序 员都要以不同的方式实践它,但是没有人能 清楚地讲清楚它。
第二节 基本概念
面向对象=对象+类+继承+通信 ❖ 如果一个软件系统是使用这样四个概念
❖ 80年代中后期,面向对象的软件设计和 程序设计方法已发展成为一种成熟有效 的软件开发方法。相比而言,面向对象 的分析技术发展得比较滞后。
第一节 概述
1.1 传统方法学 ❖ 传统方法学存在的问题
生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要
❖ 出现问题的原因
❖ 具体的多形行为主要表现在以下方面:
1)运算符重载 同一个运算符可作用于多种数 据类型上;
2)函数名重载 相同的函数名可作用于不同的 对象类上,并产生不同的行为效果;
❖ 通过封装可以将对象的定义与对象的实 现分开。这样,无论是对象功能的完善 扩充,还是对象实现的修改,影响仅限 于该对象内部,保证了面向对象软件的 可构造性和易维护性。
❖ 通过继承可以表达类与类之间的联系, 大大减少了重复定义,同时也使系统的 结构更加清晰、易于理解和维护。
❖ 早在1982年,Rentsch就曾预言
*封闭性 对象的封闭性是指对象具有信息隐蔽的 能力。
*通信性 对象能够接收其它对象发来的消息,也 能向其它对象发送消息。通信性反映了不同对 象间的联系。
上述特点分别刻画了对象不同方面的性质,自治 性反映了对象独立计算的能力,封闭性和通信 性说明对象是一个既封闭又开放的相对独立体。
2.2 类(class)
2.5 服务(method,即操作、方法)
❖ 为了完成某一任务,一个对象所提供的 并体现其责任的操作称为服务。属于同 一类的所有对象共享相同的服务。
2.6 继承(inheritance)
❖ 类之间的继承关系是现实世界中遗传关系的直 接模拟,它表示类之间的内在联系以及对属性 和操作的共享。即子类可以沿用父类(被继承 类)的某些特征。当然,子类也具有自己独有 的属性和操作。
设计和实现的,则可以认为这个软件系 统是面向对象的。
2.1 对象(object)
❖ 一般说来,在系统分析和系统构造中, 对象是对客观世界事物的一种抽象,是 由数据(属性)及在其上的操作(行为)所组 成的封装体。
❖ 可以用一个公式表示为:
对象=属性+操作
对象具有如下主要特点:
*自治性 对于给定的输入,经过状态转换,对象 能产生输出。
❖ 类是一组具有相同数据结构和相同操作 的对象的集合。
❖ 类的定义包括一组数据属性和在数据上 的一组合法操作,可以用一个公式表示 为:
类=(组)数据属性+(组)数据操作
类名 属性 操作
ห้องสมุดไป่ตู้
circle
(x0,y0) r color
Display ……
2.3 属性(attribute)
❖ 每一对象的属性是一些有着确定值的, 用于描述对象状态信息的数据。
僵化的瀑布模型 *某些类型的系统需求是模糊的
*项目参与者之间存在通信鸿沟 *预先定义的需求可能是过时的
结构化技术的缺点
*用这种技术开发出的软件,其稳定性、可修改性 和可重用性都比较差。
*结构化分析、设计技术的本质是功能分析。从代 表目标系统整体功能的单个处理着手,自顶向下不 断把复杂的处理分解为子处理,层层分解下去,直 至仅剩下若干个容易实现的子处理为止。
❖ 功能与数据分离的软件设计结构与人类的现实 世界环境很不一样,和人的自然思维也就很不 一致,因此对现实世界的认识与编程之间存在 着一道很深的理解上的鸿沟。
❖ 系统是围绕着如何实现一定的行为来进行的, 当系统行为易变,需要常常修改时,修改极为 困难。
❖ 在系统中模块之间的控制作用有重要影响时, 也就是说,实际的控制发生的根源来自分散的 各个模块之中时,由于在“好的模块结构”中 的模块间的控制作用只能通过上下之间的调用 关系来进行,造成信息传递路径过长,效率低, 易受干扰,甚至出错。
❖ 属性一般只能通过执行对象的操作来改 变。
2.4 消息(message)
❖ 消息就是用来请求对象执行某个处理或 回答某些信息的要求,是连接对象的纽 带。或者说,一个对象为实现其责任而 与其它对象的通信称为消息。
❖ 消息通常由三个部分组成:接收消息的 对象;消息选择符(也称为消息名); 零个或多个变元。
❖ 新类的定义可以是现存类所声明的数据、定义 与新类所增加的声明的组合。在组合过程中, 新类复用现存类的定义,而不要求修改现存类。
❖ 继承的优点:
是软件开发中复用概念的核心 便于模块修改
简化模块
2.7 多形(polymorphism)与动态连接 (dynamic binding)
❖ 多形的本质是一个消息可以与不同的实 例结合,而且这些实例属于不同类。
❖ 自顶向下功能分解的分析方法极大地限制了软 件的可重用性。
1.2 面向对象方法学
❖ “面向对象”(Object-Oriented)是针对“面向 过程”一词提出的,是从本质上区别于传统的 结构化方法的一种新方法,新思路。
❖ OO技术的基本原理是:按照问题域的基本事 物实现自然分割,按人们通常的思维方式建立 问题域的模型,设计尽可能直接自然表现问题 求解的软件系统。
❖ 为此,OO技术引入了对象(object)概念来表现 事物,用消息(message)传递建立事物间的联 系。用类(class)和继承(inheritance)作为适应 人们一般思维方式的描述模型。用方法 (method)表示作用在对象上的各种操作。
❖ 建立在对象、消息、类、继承和方法等 概念基础上的面向对象软件的基本特征 是对象的封装性和继承性。