第9章 面向对象方法学引论(new)

合集下载

软件工程导论课件第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) 类就是对具有相同数据和相同操作的一组相似

09 面向对象方法学引论

09 面向对象方法学引论
• It is a kind of representation that describe object’s data structure and behavior.
• It is a kind of modeling technology.
OO方法所具有的四个要点
• 对象
– 认为客观世界是由各种对象组成的,任何事物都是 对象,复杂对象由简单对象以某种方式组成。
Long-lived information structures Low
Passive object’s attribute
Medium
Sequences of behavior
Medium
Interface with the outside world High
Functionality
High
方法与属性
• 方法(操作、服务)
– 对象所能执行的操作,即类中所定义的服务。 它是对操作算法和响应消息办法的描述。
– 在类Circle中给出成员函数Show (int color)的定 义。
• 属性是类中所定义的数据,是实体性质的 抽象
– 类实例都有其特有的属性值,如类Circle定义 的圆心、半径和颜色。
Integer : Print_Integer(S[ i ].Object);
Float :
Print_Char(S[ i ].Object) ;
String : Print_ String(S[ i ].Object) ;
Boolean : Print_ Boolean (S[ i ].Object);
类 Class
• 具有相同结构、操作,并遵守相同约束规则 的对象聚合成一组,这组对象集合称为对象 类,简称类。

系统分析与设计_9_面向对象方法学引论

系统分析与设计_9_面向对象方法学引论

9.1.1 什么是面向对象的开发方法
什么是面向对象 根据Coad和Yourdon的定义,按照以下4个概念 设计和实现的系统,称为是面向对象的。 面向对象=对象 (object) +类 (classification) +继承(inheritance) +通信 (communication with messages)
9.3 面向对象建模
用面向对象方法成功地开发软件的关键,同样 是对问题域的理解。面向对象方法最基本的原则, 是按照人们习惯的思维方式,用面向对象观点建 立问题域的模型,开发出尽可能自然地表现求解 方法的软件。 用面向对象方法开发软件,通常需要建立3种形 式的模型,它们分别是描述系统数据结构的对象 模型,描述系统控制结构的动态模型和描述系统 功能的功能模型。
9.1.1 什么是面向对象的开发方法
面向对象技术的特点 1、对软件开发过程所有阶段进行综合考虑。 2、软件生存期各阶段所使用的方法、技术具有 高度的连续性,用符合人类认识世界的思维方式 来分析、解决问题。 3、将OOA、OOD、OOP有机地集成在一起。 OOA(Object-Oriented Analysis)面向对象分析 OOD( Object-Oriented Design )面向对象设计 OOP( Object-Oriented Program )面向对象的 程序设计
李伟,调工资(•••••• )
图9.3 对象、类和消息传递
4. 多态性和动态绑定
多态性(Polymorphism)是指相同的操作或函数,过程作 用于不同的对象上并获得不同的结果。 即相同的操作的消息发送给不同的对象时,每个对象将 根据自己所属类中所定义的操作去执行,故产生不同的结 果。 例如: “绘图”操作,作用在“椭圆” 和“矩形” 上 ,画出不同的图形。 动态绑定(dynamic binding)是在运行时根据对象接收的 消息动态地确定要连接的服务代码。

软件工程 第九章面向对象方法学引论

软件工程 第九章面向对象方法学引论

第九章面向对象方法学引论
2.结构化技术的缺点 . 用这种技术开发出的软件,其稳定性、 用这种技术开发出的软件,其稳定性、可修改 性和可重用性都比较差。 性和可重用性都比较差。 围绕实现处理功能的“过程”来构造系统的。 围绕实现处理功能的“过程”来构造系统的。 然而用户需求的变化大部分是针对功能的— 然而用户需求的变化大部分是针对功能的 —稳定性差; 稳定性差; 稳定性差 清楚地定义了目标系统的边界, 清楚地定义了目标系统的边界,软件通过界 面与客观世界通信。系统结构依赖于对系统 面与客观世界通信。系统结构依赖于对系统 边界的定义, 边界的定义,很难把这样的系统扩展到新的 边界——系统较难修改和扩充; 系统较难修改和扩充; 边界 系统较难修改和扩充 把处理分解成子处理的过程多少带些任意性, 把处理分解成子处理的过程多少带些任意性, 并且把数据和操作作为分离的实体——可重 并且把数据和操作作为分离的实体 可重 用性差。 用性差。
第九章面向对象方法学引论
存在的问题 1.生产率提高的幅度远不能满足需要 •生命周期方法学强调需求分析的重要性,强调 生命周期方法学强调需求分析的重要性, 生命周期方法学强调需求分析的重要性 在每个阶段结束之前必须进行评审, 在每个阶段结束之前必须进行评审,从而提高 了软件开发的成功率,减少了重大返工的次数; 了软件开发的成功率,减少了重大返工的次数; •开发过程中实行严格的质量管理,采用先进的 开发过程中实行严格的质量管理, 开发过程中实行严格的质量管理 技术方法(主要是结构分析、设计、编程技术) 技术方法(主要是结构分析、设计、编程技术) 和软件工具,也都加快了软件开发的速度。 和软件工具,也都加快了软件开发的速度。 •但开发效率的提高仍然很有限,提高的幅度远 但开发效率的提高仍然很有限, 但开发效率的提高仍然很有限 远赶不上对软件产品的需要。 远赶不上对软件产品的需要。 •从用户提出要求到他们最终得到所需要的目标 从用户提出要求到他们最终得到所需要的目标 系统,往往需要经过几年甚至更长的延迟时间。 系统,往往需要经过几年甚至更长的延迟时间。

第9章+面向对象方法学引论_新_

第9章+面向对象方法学引论_新_

关系的任何事物都可以作为对象,
它既可以是具体的物理实体的抽象,也可以 是人为的概念,或者是任何有明确边界和意义的东 西。
21
1. 对象的形象表示 图9.1形象地描绘了具有3个操作的对象( 例如录音 机Play, Record, Stop)。
图9.1 对象的形象表示
22
使用对象向公众开放的操作就好像使用录音机 的按键,只须知道该操作的名字(好像录音机的按 键名)和所需要的参数(提供附加信息或设置状态), 根本无须知道实现这些操作的方法。 事实上,实现对象操作的代码和数据是隐藏在 对象内部的,一个对象好像是一个黑盒子,在外面 是看不见的,更不能从外面去访问或修改这些数据 或代码。
无须知道它的数据结构细节和实现操作的算法。
34
6. 封装(encapsulation) 对象具有封装性的条件如下: ① 有一个清晰的边界。 ② 有确定的接口(即协议)。 ③ 受保护的内部实现。
封装 也就是信息隐蔽,通过封装对外界隐蔽也 对象的实现细节。
35
7. 继承(inheritance)
继承是指能够直接获得已有的性质和特征,而 不必重复定义它们。
25
9.2.2 其他概念
1. 类(class) 例如,张三、李四、王五……虽说每个人各有 不同,但是,他们的基本特征是相似的,都是黄皮 肤、黑头发、黑眼睛,于是人们把他们统称为“中
国人”。
人类习惯于把有相似特征的事物归为一类,分
类是人类认识客观世界的基本方法。
26
在面向对象的软件技术中,“类”就是对具
有相同数据和相同操作的一组相似对象的定义,也
就是说,类是对具有相同属性和行为的一个或多个
对象的描述。
27
9.2.2 其他概念

软件工程 第09章 面向对象方法学引论

软件工程 第09章 面向对象方法学引论
① 传统方法:面向过程设计,以计算为核心,数据与 操作分离,不易理解。
OOM:以object 为核心,强调对现实概念的模拟而不 强调算法。“面向对象方法学的基本原则, 是按照人们习惯的思维方式建立问题域的模 型,开发出尽可能直观、自然地表现求解方 法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction)
(3) 按照父类(或称为基类)与子类(或称为派生类)的关 系,把若干个相关类组成一个层次结构的系统(也称 为类等级)。在类等级中,下层派生类自动拥有上层 基类中定义的数据和操作,这种现象称为继承。
(4) 对象彼此间仅能通过发送消息互相联系。 也就是说,对象的所有私有信息都被封装在该对象内, 不能从外界直接访问,这就是通常所说的封装性。
fi(X)
§2.基本概念
f1 f2 f3 …… fi
……
fn
gi(X,S)
输 出
S’
输 出
.
对象的几个定义:
(1) 定义1: 对象是具有相同状态的一组操作的集合。 主要是从面向对象程序设计的角度看“对象”。
(2) 定义2: 对象是对问题域中某个东西的抽象,这种 抽象反映了系统保存有关这个东西的信息或与它交互 的能力。也就是说,对象是对属性值和操作的封装。
.
④ 传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 ——
• 稳定性好:软件功能需求的变化不牵动全局, 只需局部修改;
• Class 独立性强:只要修改不涉及class的对外 接口,则内部修改完全不影响外部调用;
• Inheritance和多态性(polymorphism)使其很容 易被修改和扩充;

第九章 面向对象方法学引论

第九章 面向对象方法学引论
以数据为中心。
对象是主动的。
实现了数据封装。 本质上具有并行性。 模块独立性好。
2、面向对象的概念 ——类
类(Class)
具有相同属性和服务的一组对象的集合,它为属于该 类的全部对象提供了统一的抽象描术。其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在客观世界中实际 存在的类的实例。 例如:在学校教学管理系统中,“学生”是一个类,一个 具体学生“张明”是一个对象,也是“学生”类的一个实 例。
同类对象具有相同的属性和服务,是指它们的定义形 式相同,而不是说每个对象的属性值都相同。 类是静态的,类的存在、语义和关系在程序执行前就 已经定义好了。 对象是动态的,对象在程序执行时可以被创建和删除。 在面向对象的系统分析和设计中,并不需要逐个对对 象进行说明,而是着重描述代表一批对象共性的类。
第九章 面向对象方法学引论
黄冈师范学院
主要内容 面向对象方法学概述 面向对象的概念
对象、类、属性、方法、封装、继承、多态、消息等
面向对象建模
对象模型、动态模型、功能模型 可视化建模与Uml语言
3种模型之关的关系
面向对象方法与结构化方法
结构化方法 问题域
自然 语言
面向对象方法
问题域
第9章 课程内容提纲
1 面向对象方法学概述
2 面向对象的概念
3 面向对象建模 4 对象模型 5 态动建模 6 功能建模
7 3种模型之间的关系
2、面向对象的概念 —— 对象
对象(Object)
对象是问题域或实现域中某些事物的一个抽象,它反 映该事物在系统中需要保存的信息和发挥作用;它是 构成系统的一个基本单位,由一组属性和对这组属性 进行操作的一组服务组成。

09面向对象方法学引论

09面向对象方法学引论
Booch方法(1991) Coad-Yourdon方法(1991) Rumbaugh 方法(简称OMT)(Object Modeling Technology,1991) Jacobson 方法(简称OOSE,1992) 由Rumbaugh、Booch、Jacobson提出的统一建模语言 (简称UML) (Unify Modeing Language,1994)
对象模型
表示关系的符号
关系种类 – 关联


关联的属性
进一步说明对象间关联的性质
对象模型
表示关系的符号
关系种类 – 聚合(聚集)
– – 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 包括共享聚合和组合聚合。
对象模型
表示关系的符号
关系种类 – 泛化
– – 继承性的体现。 通常包含一个基类和几个子类。基类表示较为一般、普通的概念; 子类则继承基类的属性和操作,但又具有自身的属性和操作。
面向对象方法学概述
面向对象软件的工程
按人类习惯的思维方法,以现实世界中客观存在的事 物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、 封装等。 以易于理解的方式表达软件系统,建立问题域模型, 使设计出的软件尽可能直接地描述现实世界,具有更 好的可维护性。 面向对象=对象+类+继承+通信 如果一个软件系统采用这些概念来建立模型并予 以实现,那么它就是面向对象的。
面向对象概念
其他概念
继承(inheritance) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9.4.1 类图的基本符号 2. 定义属性
UML描述属性的语法格式如下: [可见性] 属性名: 类型名=初值 {性质串} ——属性的[可见性]:
公有的(public) (+) 、 私有的(private) (-) 保护的(protected) (#) 注意: 没有默认的可见性。

9.2 面向对象的概念



对象 类 类间关系 消息与事件 多态性
9.2 面向对象的概念

对象 在解空间 (计算机系统) 中,对象的非严格记法:

<对象> ::= <接口,数据,行为>
接口 数据
通信消息 行为 接口
对象
9.2 面向对象的概念


对象的基本特征
每个对象均有自己的惟一标识,从而区别于其他对象。 对象之间通过消息进行通信。 对象总是处于一定的状态。 对象有若干种行为。 对象的行为分为三类:创建新对象、与其他对象通信、 改变自身状态。 对象的状态只能被自身的行为所改变。
9.2 面向对象的概念

类间关系

继承 (inheritance) 聚合 (aggregation) 关联 (relationship)
9.2 面向对象的概念

继承的含义

继承是一种“求同存异”的高度抽象方式

相关术语


超类 (super-class) / 父类 (parent class) / 祖先类 (ancestor class) 子类 (sub-class) / 后裔类 (descendant class) 一般化 (generalization) 具体化 (specialization)
(2) 面向对象
UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示 考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极 少使用的符号,也添加了一些新符号。 9.3 面向对象建模
(3) 可视化、表示能力强
系统的逻辑模型或实现模型都能用 UML 模型清晰的表示,可用于 复杂软件系统的建模。
(4) 独立于过程
UML是系统建模语言,独立于开发过程。
(5) 易掌握、易用
由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易于 掌握使用。
9.4 对象模型
对象模型表示静态的、结构化的系统的“数据” 性质。它是对模拟客观世界实体的对象以及对 象彼此间的关系的映射,描述了系统的静态结 构。
用UML表达的对象模型由类图(类和类间关系)构 成.

9.2 面向对象的概念

继承的分类

单继承 多继承

多继承使类层次复杂化 多继承容易产生配置控制方面的潜在问题

继承的图形记法
一般化
具体化
9.2 面向对象的概念

一般化、具体化、继承等术语均是复用思想的体现 一般化和具体化是对同一个类间关系的不同角度审视

父类是子类的一般化 (从父类角度出发) 子类是父类的具体化 (从子类角度出发)
9.2 面向对象的概念

类的两种图形记法:
类名 属性: 操作 属性: 操作:
9.2 面向对象的概念

对象

状态:张三,30岁,计算机系,讲师,1000元 行为:提职称,调工资

类 (教师)

属性:姓名,年龄,系别,职称,工资 操作:提职称,调工资 方法 (指操作的具体代码实现)

实际上,类是创建对象的模板!
--意义

允许每个对象以自己最合适的方式去响应共同的消 息,从而增强软件的灵活性和可复用性。
9.2 面向对象的概念

多态性的示例
游戏中每个对象被双击点击就回答我是谁。
战斗单位
战士
武器
侦察兵
伞兵
飞机
大炮
9.3 面向对象建模
建立问题模型是人们理解表达问题的方法之一。 模型是对事物作出的一种抽象,是对事物的一
9.4.1 类图的基本符号
图9.5 表示类的图
9.4.1 类图的基本符号
为类命名时应该遵守以下几条准则: (1) 使用标准术语。 例如,“交通信号灯”比“信号单元”这个名字好, “传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。 例如,“库房”比“房屋”或“存物场所”更确切。 (3) 必要时用名词短语作名字。 例如,“最小的领土单元”、“储藏室”、“公司员 工”等都是比较恰当的名字。 总之,名字应该是富于描述性的、简洁的而且无二义性的。

继承强调一般化 / 具体化关系中共享属性和操作的机制
9.2 面向对象的概念

聚合的含义

聚合表示“部分——整体”关系
9.2 面向对象的概念

聚合的图形记法
9.2 面向对象的概念

关联的含义

对象实例之间的物理或概念联结被称为链 关联是对一组语义与结构相似的链的抽象 链是关联的实例 项目 ◆ 语言
2001年 计划的重要修订 文字上的修改 没有显著的技 术变化
<documents> UML 1.1 <documents> UML1.0
精华相关
<documents> UML 0.9
<documents> Unified Method 0.8
文档版类
面向对象建模
(1) 统一标准
UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的 正式标准,提供了标准的面向对象的模型元素的定义和表示。
UML(Unified Modeling Language)产生于90年代中期。 它不仅统一了Booch、OMT和OOSE方法中的概念和表 示法,而且对其作了进一步扩展,最终成为在面向对象 技术领域占主导地位的、并被大众所接受的标准建模语 言。 1、UML概述 UML的发展历程(下图) UML是一个通用的标准建模语言,可以对任何具有静态 结构和动态行为的系统进行可视化建模。UML不是一个 开发过程,也不是一个方法,但允许任何一种开发过程 和面向对象方法使用它。
在不同的应用问题中,这3种模型的相对重要程度会有 所不同,对象模型始终都是最重要、最基本、最核心的。 典型的软件系统组合了上述3方面内容: 使用数据结构(对象模型),执行操作(动态模型),并且完 成数据值的变化(功能模型)。 本课程介绍UML作为描述这些模型的语言.
9.3 面向对象建模
统一建模语言UML

9.3 面向对象建模
2000年 (计划的较小修订)
1999
<documents> UML 1.4 <documents> UML 1.3 <documents> UML 1.2 <documents> UML 2.0
1998 1997年9月最后 提交给OMG 1997年1月最 初提交给 OMG 1996 1995
第九章 面向对象方法学引论
9.1 9.2 9.3 9.4 9.5 9.6 9.7 面向对象方法学概述 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 3种模型之间的关系
9.1 面向对象方法学概述
-- 传统的软件工程方法学应用于大型软件产品的开发 时,似乎很少取得成功。 -- 源于20世纪60年代后期出现的面向对象编程语言 Simula-67(类和对象的概念),逐步形成了面向对象 方法学 。到了20世纪90年代,面向对象方法学已经 成为人们在开发软件时首选的范型。
9.1 面向对象方法学概述
与传统方法相反,面向对象方法是一种以数据 或信息为主线,把数据和处理相结合的方法。 面向对象方法把对象作为由数据及可以施加在 这些数据上的操作所构成的统一体。 对象与传统的数据有本质区别,它不是被动地 等待外界对它施加操作,相反,它是进行处理 的主体。

9.1 面向对象方法学概述
9.4.1 类图的基本符号
类图描述类及类与类之间的静态关系。类图是一种 静态模型,它是创建其他UML图的基础。一个系统 可以由多张类图来描述。 1. 定义类 UML中类的图形符号为长方形,用两条横线把长方 形分成上、中、下3个区域(下面两个区域可省 略),3个区域分别放类的名字、属性和服务,如 图9.5所示。
9.2 面向对象的概念



在问题空间中……
类代表着具有类似性质的一组对象 类中的每一个对象即为类的不同实例 (instance)
在解空间 (计算机系统) 中……



类是对一组对象的抽象,集中了该组对象的共同特性。 在构造软件时,类实际上是具有特定功能的模块,其代码由该 种所有对象所共享。 类 vs. 对象:静 vs. 动。
9.1 面向对象方法学概述

面向对象的方法学可以用下列方程来概括:
OO=objects +classes +inheritance +communication with messages
面向对象就是既使用对象又使用类和继承等机 制,而且对象之间仅能通过传递消息实现彼此 通信。 也可以说,只有同时使用对象、类、继承和消 息的方法,才是真正面向对象的方法。
面向对象方法是一种新的思维方法,它是把程 序看作是相互协作而又彼此独立的对象的集合。 这样就减小了语义断层:系统中解空间对象可以 直接模拟问题空间的对象,解空间与问题空间 的结构十分一致。

9.1 面向对象方法学概述
面向对象方法具有下述4个要点: (1)认为客观世界是由各种对象组成的,任何事物都 是对象,复杂的对象可以由比较简单的对象以某种 方式组合而成。因此,面向对象的软件系统是由对 象组成的。 (2)把所有对象都划分成各种对象类,每个对象类 都定义了一组数据和一组方法。数据用于表示其静 态属性,是其状态信息。方法是允许施加于该类对 象上的操作,是该类所有对象共享的,并不需要为 每个对象都复制操作的代码。
相关文档
最新文档