第九章:面向对象方法学引论
合集下载
软件工程导论课件第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) 类就是对具有相同数据和相同操作的一组相似
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
• 具有相同结构、操作,并遵守相同约束规则 的对象聚合成一组,这组对象集合称为对象 类,简称类。
• 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.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)是在运行时根据对象接收的 消息动态地确定要连接的服务代码。
第09章 面向对象方法学引论(续)

——因为消息表示对象给外界显示的接口,这是它们最重要的特性。 ——因为消息表示对象给外界显示的接口,这是它们最重要的特性。 因为消息表示对象给外界显示的接口
ⅰcontaions(:Object):boolean ⅱelementAt(:int):Object ⅲnumberOfElements():int
第9章 面向对象方法学引论
1、封装
软 件 工 程 导 论
(1)封装(encapsulation), 其含义为把数 )封装( ), 据及其操作放在一起。 据及其操作放在一起。 (2)具体实例 )
定义一个学生类如下: 定义一个学生类如下: class student {private: string s_name; int s_age; char s_id; public: string getname(); int getage(); void setname(char p_name[10]); }
多重继承的优点: 多重继承的优点:
1)它非常强大 ) 2)它允许私有继承 ) 3)它更接近真实情况 ) 4)它允许混合继承 )
多重继承的缺点: 多重继承的缺点:
1)比较复杂(对于设计人员和客户程序员而言) )比较复杂(对于设计人员和客户程序员而言) 2)导致名称冲突 ) 3)导致重复继承 ) 4)使编译器更难编写 ) 5)使运行时系统更难编写 )
第9章 面向对象方法学引论
2、继承
软 件 工 程 导 论
(3)一个继承的例子 )
第9章 面向对象方法学引论
2、继承
软 件 工 程 导 论
(3)一些概念: )一些概念:
1) 父类和子类:继承和派生的概念。 ) 父类和子类:继承和派生的概念。 比如:人和男人,狗和黑狗。 比如:人和男人,狗和黑狗。
ⅰcontaions(:Object):boolean ⅱelementAt(:int):Object ⅲnumberOfElements():int
第9章 面向对象方法学引论
1、封装
软 件 工 程 导 论
(1)封装(encapsulation), 其含义为把数 )封装( ), 据及其操作放在一起。 据及其操作放在一起。 (2)具体实例 )
定义一个学生类如下: 定义一个学生类如下: class student {private: string s_name; int s_age; char s_id; public: string getname(); int getage(); void setname(char p_name[10]); }
多重继承的优点: 多重继承的优点:
1)它非常强大 ) 2)它允许私有继承 ) 3)它更接近真实情况 ) 4)它允许混合继承 )
多重继承的缺点: 多重继承的缺点:
1)比较复杂(对于设计人员和客户程序员而言) )比较复杂(对于设计人员和客户程序员而言) 2)导致名称冲突 ) 3)导致重复继承 ) 4)使编译器更难编写 ) 5)使运行时系统更难编写 )
第9章 面向对象方法学引论
2、继承
软 件 工 程 导 论
(3)一个继承的例子 )
第9章 面向对象方法学引论
2、继承
软 件 工 程 导 论
(3)一些概念: )一些概念:
1) 父类和子类:继承和派生的概念。 ) 父类和子类:继承和派生的概念。 比如:人和男人,狗和黑狗。 比如:人和男人,狗和黑狗。
软件工程 第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)使其很容 易被修改和扩充;
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)
对象是问题域或实现域中某些事物的一个抽象,它反 映该事物在系统中需要保存的信息和发挥作用;它是 构成系统的一个基本单位,由一组属性和对这组属性 进行操作的一组服务组成。
对象是主动的。
实现了数据封装。 本质上具有并行性。 模块独立性好。
2、面向对象的概念 ——类
类(Class)
具有相同属性和服务的一组对象的集合,它为属于该 类的全部对象提供了统一的抽象描术。其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在客观世界中实际 存在的类的实例。 例如:在学校教学管理系统中,“学生”是一个类,一个 具体学生“张明”是一个对象,也是“学生”类的一个实 例。
同类对象具有相同的属性和服务,是指它们的定义形 式相同,而不是说每个对象的属性值都相同。 类是静态的,类的存在、语义和关系在程序执行前就 已经定义好了。 对象是动态的,对象在程序执行时可以被创建和删除。 在面向对象的系统分析和设计中,并不需要逐个对对 象进行说明,而是着重描述代表一批对象共性的类。
第九章 面向对象方法学引论
黄冈师范学院
主要内容 面向对象方法学概述 面向对象的概念
对象、类、属性、方法、封装、继承、多态、消息等
面向对象建模
对象模型、动态模型、功能模型 可视化建模与Uml语言
3种模型之关的关系
面向对象方法与结构化方法
结构化方法 问题域
自然 语言
面向对象方法
问题域
第9章 课程内容提纲
1 面向对象方法学概述
2 面向对象的概念
3 面向对象建模 4 对象模型 5 态动建模 6 功能建模
7 3种模型之间的关系
2、面向对象的概念 —— 对象
对象(Object)
对象是问题域或实现域中某些事物的一个抽象,它反 映该事物在系统中需要保存的信息和发挥作用;它是 构成系统的一个基本单位,由一组属性和对这组属性 进行操作的一组服务组成。
第9章面向对象方法学

(三) 面向对象的概念
1. 对象
在应用领域中有意义的、与所要解决的 问题有关系的任何事物都可以作为对象。 它既可以是具体的物理实体的抽象,也 可以是人为的概念,或者是任何有明确边界和 意义的东西。
客观世界的问题看成对象取决于应用的 视角和问题的性质。 当你在路上找人,你看到的对象就是流 动的人群; 当你需要出租车,你看到的对象就是过 往的车辆。
当对象 MyCircle 接受到这个消息后, 执行Circle类中所定义的 Show 操作。 注意: 1)消息由接受消息的对象来解释。 (MyCircle 就是接受消息的对象) 2)一个对象需要另一个对象服务时,就向 它发出请求服务的消息。这时,接受消息 的对象响应消息,触发所要求服务的操作 的方法来完成服务。
OO技术以对象(object)为核心,把静态 属性的数据,和对这些数据施加的操作封装在 一起所构成的统一体。
2. 稳定性好 面向对象的软件系统的结构是根据问题 领域的模型建立起来的。 (而传统方法是基于系统的功能的分解。) 当对系统的功能需求变化时并不会引起 软件结构的整体变化。因此,以对象为中心构 造的软件系统也是比较稳定的。
7. 封装(encapsulation) 从字面上理解,所谓封装就是把某个事物 包起来,使外界不知道该事物的具体内容。 对象具有封装性的条件如下: (1) 有一个清晰的边界。 (2) 有确定的接口。这些接口就是对象可 以接受的消息,只能通过向对象发送消息来使 用它。 (3) 受保护的内部实现。实现对象功能的 细节(私有数据和代码)不能在定义该对象的 类的范围外访问。
一. 传统方法学的问题
(一) 软件不能真正满足用户需求
1. 软件开发效率低 2. 软件不能满足“需求变化”、“需求模糊” 和“需求灵活性” 3. 软件重用度低 4. 软件仍然很难维护
09面向对象方法学引论

Booch方法(1991) Coad-Yourdon方法(1991) Rumbaugh 方法(简称OMT)(Object Modeling Technology,1991) Jacobson 方法(简称OOSE,1992) 由Rumbaugh、Booch、Jacobson提出的统一建模语言 (简称UML) (Unify Modeing Language,1994)
对象模型
表示关系的符号
关系种类 – 关联
–
–
关联的属性
进一步说明对象间关联的性质
对象模型
表示关系的符号
关系种类 – 聚合(聚集)
– – 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 包括共享聚合和组合聚合。
对象模型
表示关系的符号
关系种类 – 泛化
– – 继承性的体现。 通常包含一个基类和几个子类。基类表示较为一般、普通的概念; 子类则继承基类的属性和操作,但又具有自身的属性和操作。
面向对象方法学概述
面向对象软件的工程
按人类习惯的思维方法,以现实世界中客观存在的事 物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、 封装等。 以易于理解的方式表达软件系统,建立问题域模型, 使设计出的软件尽可能直接地描述现实世界,具有更 好的可维护性。 面向对象=对象+类+继承+通信 如果一个软件系统采用这些概念来建立模型并予 以实现,那么它就是面向对象的。
面向对象概念
其他概念
继承(inheritance) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理
对象模型
表示关系的符号
关系种类 – 关联
–
–
关联的属性
进一步说明对象间关联的性质
对象模型
表示关系的符号
关系种类 – 聚合(聚集)
– – 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 包括共享聚合和组合聚合。
对象模型
表示关系的符号
关系种类 – 泛化
– – 继承性的体现。 通常包含一个基类和几个子类。基类表示较为一般、普通的概念; 子类则继承基类的属性和操作,但又具有自身的属性和操作。
面向对象方法学概述
面向对象软件的工程
按人类习惯的思维方法,以现实世界中客观存在的事 物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、 封装等。 以易于理解的方式表达软件系统,建立问题域模型, 使设计出的软件尽可能直接地描述现实世界,具有更 好的可维护性。 面向对象=对象+类+继承+通信 如果一个软件系统采用这些概念来建立模型并予 以实现,那么它就是面向对象的。
面向对象概念
其他概念
继承(inheritance) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.2面向对象的概念
9.2.2 其他概念
7、继承(Inheritance):子类自动共享父类的attributes 和methods ,而不必重复定义。 例:
Class 中国人
中国人 Attributes 中国人 Methods Class 杭州人 (子类) Class 中国人
张山 (instance)
9.2面向对象的概念
9.2.2 其他概念
8、多态性(Polymorphism): 多态性是指子类对象可以像父类对象那样使用,同样的消 息既可以发送给父类对象也可以发送给子类对象。不同层次的 classes 可共享一个method名,但按各自的方式来实现这种 method。当对象接收到发送给它的消息时,根据该对象所属于 的类动态选用在该类中定义的实现算法。 C++ 中定义了虚函数(virtual function)来实现这态联编(dynamic binding)或滞后联编(late binding)。 多态性机制不仅增加了面向对象软件系统的灵活性,进一 步减少了信息冗余,而且显著提高了软件的可重用性和可扩充 性。
9.1面向对象方法学概述
9.1.1 面向对象方法学的要点
面向对象方法学的出发点和基本原则,是尽可能模拟人 类习惯的思维方式,使开发软件的方法与过程尽可能接近人 类认识世界解决问题的方法与过程,也就是使描述问题的问 题空间(也称为问题域)与实现解法的解空间(也称为求解域) 在结构上尽可能一致。 与传统方法相反,OOM以数据或信息为主线,把数据和 处理结合构成统一体 —— 对象。这时程序不再是一系列工 作在数据上的过程或函数集合,而是相互协作又彼此独立的 对象的集合。
9.1面向对象方法学概述
9.1.2 面向对象方法学的优点
② 稳定性好 传统方法:结构依赖于功能,不稳定。 OOM:以object模拟实体,需求变化不会引起结构的整体变 化,因为实体相对稳定,故系统也相应稳定。 ③可重用性好 传统方法:通过建立标准函数库来重用软构件。但标准函数 缺少必要的“柔性”,难以适应不同场合的不同需要。 OOM:一个class所有的 实例 都可重用它的代码;由 继承 派生出的新的 class 可重用其父类的代码,并且可以修改、 扩充而不影响其父类的使用。
5、属性(Attribute):object 的固有数据; 6. 封装(encapsulation):数据和实现操作的代码集中起来放 在对象内部。
对象具有封装性的条件如下: (1)有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个 边界内,从外面看不见更不能直接访问。 (2)有确定的接口(即协议)。这些接口就是对象可以接受的消息,只能 通过向对象发送消息来使用它。 (3)受保护的内部实现。实现对象功能的细节(私有数据和代码)不能在 定义该对象的类的范围外访问。
9.1面向对象方法学概述
图9.1 喷泉模型
9.2面向对象的概念
9.2.1 对象
1.对象的形象表示:一个对象很像一台录音机。
9.2面向对象的概念
9.2.1 对象
2. 对象的定义 (1) 定义1: 对象是具有相同状态的一组操作的集合。 这个定义主要是从面向对象程序设计的角度看“对象”。 (2) 定义2: 对象是对问题域中某个东西的抽象,这种抽象反 映了系统保存有关这个东西的信息或与它交互的能力。也就是 说,对象是对属性值和操作的封装。 这个定义着重从信息模拟的角度看待“对象”。 (3) 定义3: 对象∷=〈ID,MS,DS,MI〉。其中,ID是对象的标 识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI 是对象受理的消息名集合(即对外接口)。 这个定义是一个形式化的定义。
9.1面向对象方法学概述
9.1.1 面向对象方法学的要点 OOM的四要素:
③ 继承(inheritance):类可分层,下层子类与上层父类有 相同特征,称为继承。 按照子类(或称为派生类)与父类(或称为基类)的关系, 把若干个对象类组成一个层次结构的系统(也称为类等级)。 ④ 消息(message):对象间只能通过发送消息进行联系,外 界不能处理对象的内部数据,只能通过消息请求它进行处理 (如果它提供相应消息的话)。
容易理解:符合人们习惯的思维方式 容易测试、调试:对面向对象的软件进行维护,主要通过从已 有类派生出一些新类来实现。
9.1面向对象方法学概述
9.1.2 面向对象方法学的优点
OOM并不是减少了开发时间,而是通过提高可重用性、可
维护性,进行扩充和修改的容易程度等,从长远角度改进了
软件的质量。
9.1面向对象方法学概述
第九章 面向对象方法学引论
(Object - Oriented Methodology)
9.1 9.2 9.3 9.4 9.5 9.6 9.7
面向对象方法学概述 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 3种模型之间的关系
第九章 面向对象方法学引论
(Object - Oriented Methodology)
9.1.3 喷泉模型
喷泉模型认为软件自下而上周期的各阶段是相互重叠和多 次反复的,就像水喷上去可以落下来,既可以落在中间,也可 以落在最底部,类似一个喷泉。 喷泉模型对软件复用和生存周期中多项开发活动的集成提 供了支持,主要支持面向对象的开发方法。系统某个部分常常 重复工作多次,相关功能在每次迭代中随之加入演进的系统。 在开发活动,即分析、设计和编码之间不存在明显的边界。
9.3. 对象建模技术OMT(Object Modeling Technique)
所谓模型,就是为了理解事物而对事物作出的一种抽象, 是对事物的一种无歧义的书面描述。通常,模型由一组图示符 号和组织这些符号的规则组成,利用它们来定义和描述问题域 中的术语和概念。更进一步讲,模型是一种思考工具,利用这 种工具可以把知识规范地表示出来。 用面向对象方法开发软件,通常需要建立3种形式的模型: ① 描述系统数据结构的对象模型(object model). ② 描述系统控制结构的动态模型(dynamic model). ③ 描述系统功能的功能模型(function model).
9.2面向对象的概念
9.2.1 对象
2. 对象的定义 总之,对象是封装了数据结构及可以施加在这些数据结构 上的操作的封装体,这个封装体有可以惟一地标识它的名字, 而且向外界提供一组服务(即公有的操作)。对象中的数据表示 对象的状态,一个对象的状态只能由该对象的操作来改变。每 当需要改变对象的状态时,只能由其他对象向该对象发送消息。 对象响应消息时,按照消息模式找出与之匹配的方法,并执行 该方法。 从动态角度或对象的实现机制来看,对象是一台自动机。
9.1面向对象方法学概述
9.1.2 面向对象方法学的优点
④较易开发大型软件产品 用面向对象方法学开发软件时,构成软件系统的每个对 象就像一个微型程序,有自己的数据、操作、功能和用途, 因此,可以把一个大型软件产品分解成一系列本质上相互独 立的小产品来处理,这就不仅降低了开发的技术难度,而且 也使得对开发工作的管理变得容易多了。
传统的软件工程方法学曾经给软件产业带来巨大进步, 部分地缓解了软件危机,使用这种方法学开发的许多中、小 规模软件项目都获得了成功。但是,人们也注意到当把这种 方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula67中首次引入了类和对象的概念,自20世纪80年代中期起, 人们开始注重面向对象分析和设计的研究,逐步形成了面向 对象方法学。到了20世纪90年代,面向对象方法学已经成为 人们在开发软件时首选的范型。面向对象技术已成为当前最 好的软件开发技术。
9.2面向对象的概念
9.2.2 其他概念
9、重载( Overloading ): 有两种重载: 函数重载:是指在同一作用域内的若干个参数特征不同的 函数可以使用相同的函数名字; 运算符重载:是指同一个运算符可以施加于不同类型的操 作数上面。 当然,当参数特征不同或被操作数的类型不同时,实现函 数的算法或运算符的语义是不相同的。 在C++语言中函数重载是通过静态联编(也叫先前联编)实现 的,也就是在编译时根据函数变元的个数和类型,决定到底使 用函数的哪个实现代码;对于重载的运算符,同样是在编译时 根据被操作数的类型,决定使用该算符的哪种语义。
OOM = 对象+类+继承+消息传递
9.1面向对象方法学概述
9.1.2 面向对象方法学的优点
① 与人类习惯的思维方法一致 传统方法:面向过程设计,以计算为核心,数据与操作分离, 不易理解。 OOM:以object 为核心,强调对现实概念的模拟而不强调算 法。“面向对象方法学的基本原则,是按照人们习惯的思维 方式建立问题域的模型,开发出尽可能直观、自然地表现求 解方法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction)
9.1面向对象方法学概述
9.1.1 面向对象方法学的要点 OOM的四要素: ①对象(object):世界由对象组成。 任何事物都是对象,复杂的对象可以由比较简单的对象 以某种方式组合而成。因此,面向对象的软件系统是由对象 组成的,软件中的任何元素都是对象,复杂的软件对象由比 较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传统方法的 功能分解。 ② 类 (class) :对象可划分为类;单个对象可视为某一类 的实例 (instance)。 每个对象类都定义了一组数据和一组方法。数据用于表 示对象的静态属性,是对象的状态信息。
9.2面向对象的概念
9.2.1 对象
3. 对象的特点 ① 以数据为中心,不设与数据无关的操作; ② Object主动处理而不 被动地等待被处理,外部只能通过 message请求操作; ③ 具有黑盒性:外部操作时,无须知道该object内部的数据 结构及算法; ④ 具有并行性:不同object各自独立地处理自身数据,彼此 间仅通过传递message完成通信; ⑤ 模块独立性好:内聚强( ① )、耦合松( ③ ④ )