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

合集下载

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.生产率提高的幅度远不能满足需要 •生命周期方法学强调需求分析的重要性,强调 生命周期方法学强调需求分析的重要性, 生命周期方法学强调需求分析的重要性 在每个阶段结束之前必须进行评审, 在每个阶段结束之前必须进行评审,从而提高 了软件开发的成功率,减少了重大返工的次数; 了软件开发的成功率,减少了重大返工的次数; •开发过程中实行严格的质量管理,采用先进的 开发过程中实行严格的质量管理, 开发过程中实行严格的质量管理 技术方法(主要是结构分析、设计、编程技术) 技术方法(主要是结构分析、设计、编程技术) 和软件工具,也都加快了软件开发的速度。 和软件工具,也都加快了软件开发的速度。 •但开发效率的提高仍然很有限,提高的幅度远 但开发效率的提高仍然很有限, 但开发效率的提高仍然很有限 远赶不上对软件产品的需要。 远赶不上对软件产品的需要。 •从用户提出要求到他们最终得到所需要的目标 从用户提出要求到他们最终得到所需要的目标 系统,往往需要经过几年甚至更长的延迟时间。 系统,往往需要经过几年甚至更长的延迟时间。

软件工程 第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)
对象是问题域或实现域中某些事物的一个抽象,它反 映该事物在系统中需要保存的信息和发挥作用;它是 构成系统的一个基本单位,由一组属性和对这组属性 进行操作的一组服务组成。

第9章面向对象方法学

第9章面向对象方法学

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

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) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理

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

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

面向对象方法学的引入
面向对象方法学的优点:
与人类习惯的思维方法一致; 系统稳定性好; 可重用性好; 较易开发大型软件产品; 可维护性好。
面向对象方法学的引入
(1)与人类习惯的思维方法一致
传统的程序设计技术:
以算法为核心,数据和过程相分离。
面向对象的软件技术:
以对象为核心。对象是封装了描述内部状态表 示静态属性的数据及这些对数据施加的操作。
9.1 基本概念
对象 抽象成
对象:山地自行车
型号:28 ……
对象:公主自行车
型号:24 ……

类:自行车
型号 轮子尺寸 排挡 材料
换档 移动 修理
基本概念
练习:
1.分析下列对象之间的关系 家具、沙发、衣柜、电视柜 服装、衬衣,裤子 家用电器、电视、DVD机、组合音响
2.为什么说夏利牌汽车是小汽车类的特化,而发 动机不是小汽车类的特化?
公有的 + 私有的 保护的 #
表示属性的数据类型 该属性所有可能取值
对象模型
定义服务:
UML描述操作的语法格式如下:
可见性 操作名(参数表): 返回值类型{性质串}
公有的
逗号分隔
私有的
的形式参
保护的
数序列
描述参数的语法如下:
参数名:类型名=默认值
对象模型
9.3.2 表示关系的符号
类图由类及类与类之间的关系组成
类与类之间有4种关系: 关联;泛化(继承);依赖;细化。
对象模型
(1)关联
两个类的对象之间存在某种语义上的联系 ① 普通关联:只要类与类之间存在连接关 系就可以用普通关联表示。
符号:连接两个类之间的直线。
普通关联示例 注:、:关联方向。通常关联是双向的,关联方向上可以起名字。

软件工程第九讲--面向对象引论

软件工程第九讲--面向对象引论

The only way to reach the attributes is to go through one of the methods
[ destination, operation, parameters]
Taylor’s notation
A class is a generalized description of a collection of similar objects.
id RM DS CS ds B 通讯地址,是定义1中Oid的具体化 消息集 ReqM + FinM 数据结构集 通信状态集idle+wait 数据DS初始值 对象行为
(2)对象的特点
数据为中心 主动的 数据封装 并行性 模块独立性好
2. 类(Class)
输出
fi ( x,S )
转换:新状态S'= gi ( x,S )
定义1

Object: :=(Oid, DS, OS, MI)
Oid 对象名称(标识) DS={d1,d2,…,dn} 数据结构集 OS={o1,o2,…,om} 操作集 MI={m1,m2,…,mk} 消息名称集
定义2 Ojbect: :=(id, RM, DS, CS, ds, B)
Coad & Yourdon OOM = ① + ② + ③ + ④
相关方法
基于对象的方法 ① + ④ = Object-based
基于类的方法 ① + ④ + ② = Class-based 面向对象方法 ① + ④ + ② + ③ = Object-oriented

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

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

软件⼯程导论第9章⾯向对象⽅法学引论第9章⾯向对象⽅法学引论传统的软件⼯程⽅法学曾经给软件产业带来巨⼤进步,部分地缓解了软件危机,使⽤这种⽅法学开发的许多中、⼩规模软件项⽬都获得了成功。

但是,⼈们也注意到当把这种⽅法学应⽤于⼤型软件产品的开发时,似乎很少取得成功。

在20世纪60年代后期出现的⾯向对象编程语⾔Simdla_67中⾸次引⼊了类和对象的概念,⾃20世纪80年代中期起,⼈们开始注重⾯向对象分析和设计的研究,逐步形成了⾯向对象⽅法学。

到了20世纪90年代,⾯向对象⽅法学已经成为⼈们在开发软件时⾸选的范型。

⾯向对象技术已成为当前最好的软件开发技术。

9.1⾯向对象⽅法学概述9.1.1 ⾯向对象⽅法学的要点⾯向对象⽅法学的出发点和基本原则,是尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界解决问题的⽅法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能⼀致。

客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。

我们把客观世界中的实体抽象为问题域中的对象(object)。

因为所要解决的问题具有特殊性,因此,对象是不固定的。

⼀个雇员可以作为⼀个对象,⼀家公司也可以作为⼀个对象,到底应该把什么抽象为对象,由所要解决的问题决定。

从本质上说,⽤计算机解决客观世界的问题,是借助于某种程序设计语⾔的规定,对计算机中的实体施加某种处理,并⽤处理结果去映射解。

我们把计算机中的实体称为解空间对象。

显然,解空间对象取决于所使⽤的程序设计语⾔。

例如,汇编语⾔提供的对象是存储单元;⾯向过程的⾼级语⾔提供的对象,是各种预定义类型的变量、数组、记录和⽂件等等。

⼀旦提供了某种解空间对象,就隐含规定了允许对该类对象施加的操作。

从动态观点看,对对象施加的操作就是该对象的⾏为。

在问题空间中,对象的⾏为是极其丰富多彩的,然⽽解空间中的对象的⾏为却是⾮常简单呆板的。

9面向对象方法学引论

9面向对象方法学引论
淮海工学院━软件工程
在创建类的实例时应给其属性赋值,如果给某个 属性定义了初值,则该初值可作为创建实例时这个属 性的默认值。类型名和初值之间用等号(=)隔开。 用花括号括起来的性质串明确地列出该属性所有 可能的取值。例如,“发货单”类的属性“管理员”, 在UML类图中像下面那样描述: -管理员: String=“未定”
0„1 0„*或* 表示0到1个对象 表示0到多个对象
1+或1„*
1„15
表示1到多个对象
表示1到15个对象
3
表示3个对象
如果图中未明确标出关联的重数,则默认重 数是1。
淮海工学院━软件工程
(2) 关联的角色
在任何关联中都会涉及到参与此关联的对象所扮演的 角色(即起的作用),在某些情况下显式标明角色名有助 于别人理解类图。下图是一个递归关联(即一个类与它本 身有关联关系)的例子。一个人与另一个人结婚,必然一 个人扮演丈夫的角色,另一个人扮演妻子的角色。如果没 有显式标出角色名,则意味着用类名作为角色名。
Polygon类的子类 Quadrilateral
淮海工学院━软件工程
多态性(Polymorphism)
在面向对象的软件技术中,多态性是指子 类对象可以象父类对象那样使用,同样的消 息既可以发送给父类对象也可以发送给子类
对象。
多态性机制不仅增加了面向对象软件系
统的灵活性,进一步减少了信息冗余,而且
• 组织机构:有关机构,如公司、部门、小 组等;
• 地点或位置:用做系统环境或问题上下文 的场所、位置,如客户地址、收件人地址 等; • 操作规程:如操作菜单、某种数据输入过 程等。
淮海工学院━软件工程
类(class)
• 类是一组具有相同数据结构和相同操作的对象的 集合。 • 类的定义包括一组数据属性和在数据上的一组合 法操作。 • 类定义可以视为一个具有类似特性与共同行为的 对象的模板,可用来产生对象。

软件工程导论(第9章)

软件工程导论(第9章)

与传统程序的“调用/返回”所不同的是,
对于传来的消息,对象可以返回相应的回答
信息,也可以不返回。
一个消息由三个部分组成:
1)接收信息的对象;
2)信息选择符(即消息名);
3)零个或多个变元(参数)。
如:MyCircle.Show(GREEN);
4、方法(Method)
方法,是对象所能执行的操作。
C++中把方法称为成员函数,如Circle类中
丈夫
结婚 图9.7 关联的角色 上图是一个递归关联的例子。
这种情况下,标明角色名有助于理解类图。
3)限定关联
目录
保存 被保存 普通关联 1…*
文件
目录
文件名
文件
图9.8 限定关联
利用限定词把一对多关系简化成了一对一关系。
4)关联类
队列 电梯控制器 4 电梯
*
按钮 图9.9 关联类示例
控制器对象和电梯对象之间的连接,对应着一个队列 (对象),它存储着控制器和电梯内部按钮的请求信息。
2)运算符重载 指同一运算符可以施加于不同类型的操作数 上面。当被操作数类型不同时,运算符的含义
是不同的。
编译时根据被操作数的类型,决定使用算符
的哪种语义。
另外,在实现一个类成员函数时,必须通过用类名
限定函数名来告诉编译器这个函数属于哪个类。
如,编写qput( )函数:
Void Queue :: qput (int i) { if (sloc = =100) {cout << “Queue if full” ; return; }
层次的类中,虚函数实现算法不同,在运行时根据
接收消息的对象所属于的类来决定执行虚函数的版 本,称为动态联编。

张海藩《软件工程导论》(第6版)(章节题库 第9章 面向对象方法学引论)【圣才出品】

张海藩《软件工程导论》(第6版)(章节题库 第9章 面向对象方法学引论)【圣才出品】
5 / 17
圣才电子书 十万种考研考证电子书、题库视频学习平台

7.通过执行对象的操作改变该对象的属性,但它必须通过( )的传递。 A.接口 B.消息 C.信息 D.操作 【答案】B 【解析】对象之间进行通信的构造叫做消息。在对象的操作中,当一个消息发送到某个 对象时,消息包含接收对象去执行某种操作的信息。接收信息的对象经过解释,然后给予响 应。这种通信机制称为信息传递。所以必须通过消息的传递,才能通过执行对象的操作改变 对象的属性。

14.主要的对象类型有_____、_____、_____和_____。 【答案】有形实体;作用;事件;性能说明
15.在类描述模板中,应该给出每个属性的详细说明,主要包括下述信息:_____、_____、 _____、_____。
【答案】属性的说明;属性的数据类型;属性所体现的关系;实现要求及其他 二、填空题 1.对象模型的描述工具是( )。 A.状态图 B.数据流图 C.对象图 D.结构图 【答案】C 【解析】对象模型描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的 操作。对象模型表示结构上的、系统的“数据”特征。对象模型用包含对象和类的对象图来 表示。
6.在软件工程学中,我们把一组具有相同数据结构和相同操作对象的集合定义为 ( ),此定义包括一组数据属性和在数据上的一组合法操作。
A.类 B.属性 C.对象 D.消息 【答案】A 【解析】具有相同数据结构和操作的对象被定义为类;对象的特性、状态称为属性;对 象是类的一个实例;消息是对象之间信息传递的方式。
圣才电子书 十万种考研考证电子书、题库视频学习平台

第 9 章 面向对象方法学引论
一、选择题 1.对象的抽象是_____,类的实例化是_____。 【答案】类;对象

第9章 面向对象方法学引论PPT课件

第9章 面向对象方法学引论PPT课件
7
4 较易开发大型软件产品 用面向对象方法学开发软件时,构成
软件系统的每个对象就像一个微型程序, 有自己的数据、操作、功能和用途。一 个大型软件产品分解成一系列本质上互 相独立的小产品来处理,这不仅降低了 开发的技术难度,而且也使得对开发工 作的管理变得容易。因此,面向对象范 型优于结构化范对象的概念
9.2.1对象 ▪ 可以是具体的物理实体的抽象 ▪ 可以是人为的概念 ▪ 可以是任何有明确边界和意义的东西 例如:一名职工、一家公司、一个窗口、 一座图书馆、一本图书、贷款、 借款等等。
10
1 对象的形象表示
❖ 一个对象好像一个黑盒子,表示它内部的数 据和实现各个操作的代码及局部数据,都被 封装在这个黑盒子内部,在外部是看不见的, 更不能从外部去访问或修改这些数据代码。
5.属性:是类中所定义的数据,是对客观实体 所具有的性质抽象。半径、圆心、颜色
6.封装:是把某个事务包起来,使外界不知道 该事物的具体内容。封装的条件:
(1)有一个清晰的边界
14
(2)有确定的接口
(3)受保护的内部实现
7.继承
(1)继承是子类自动地共享基类中定义的数据和 方法的机制,其特性是:一个类的上层可以有 父类,下层可以有子类。
种抽象反映了系统保存有关这个东西的 信息或与它交互的能力 定义3:对象::=<ID,MS,DS,MI> 名字 操作集合 数据结构 对外接口
12
3.对象的特点
(1)以数据为中心
(2)对象是主动的
(3)实现了数据封装
(4)本质上具有并行性
(5)模块独立性好
4.其他概念
(1)类:是对具有相同数据和相同操作的一组相 似对象的定义。人(黄皮肤,黑头发,黑眼睛)

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

第9章_面向对象方法学引论
相关功能在每次迭代中随之加入演进的系统; 无缝:是指在开发活动,
即分析、设计和编程之间不存在明显的边界。 面向对象方法在概念和表示方法上的一致性, 保证了在各项开发活动之间的无缝过渡。
9.2 面向对象的概念 9.2.1 对象(Object) 对象是面向对象方法中使用的最基本的概念。
在应用领域(用户业务范围)中有意义的、 与所要解决的问题有关系的, 任何事物都可以作为对象。
结构化方法存在的问题 1)开发的软件不能满足用户的最终的需求
① 不能正确理解用户的需求 由于开发人员往往不是领域专家,他们对业务的理解有限,
对用户需求的理解不全面,使得开发的软件与用户的 实际需求有差别,不能满足用户的需要。 ② 不能适应用户需求的变化。 由于软件开发周期较长, 使得最终开发出的软件满足用户的初始需求, 而不满足用户的最终需求。 或者说,开发出的软件不能适应用户需求的变化。
图2
事实上,一个对象好像是一个黑盒子, 实现对象操作的代码和数据是隐藏在对象内部, 使用对象时只知道它向外部提供的接口形式 而无需知道它的内部细节。 在C++中,
属性是:所有的数据成员; 操作(外部提供的接口):是公有的成员函数说明(public)
操作的实现是:函数定义,代码实现过程。
李光.调工资(+50)
尽可能模拟人类习惯的思维方式,
使开发软件的方法与过程,
尽可能接近人类认识世界解决问题的方法与过程。
面向对象方法学的4个要点: 1)对象:
认为客观世界是由各种对象组成的,任何事物都是对象。 面向对象的软件系统是由对象组成的, 软件中的任何元素都是对象, 复杂的软件对象由比较简单的对象组合而成。 OO方法用“对象分解”取代了传统方法的“功能分解”。

ch9 面向对象方法引论xin

ch9 面向对象方法引论xin

9.1 面向对象பைடு நூலகம்法学概述
❖ 9.1.1 面向对象方法学的要点
面向对象方法学的出发点和基本原则,是尽可能 模拟人类习惯的思维方式
把客观世界中的实体抽象为问题域中的对象 (object)
一个雇员可以作为一个对象,一家公司也可以作 为一个对象,到底应该把什么抽象为对象,由所 要解决的问题决定。
9.1.1 面向对象方法学的要点
public getRadius(){ return radius
} }
9.1.1 面向对象方法学的要点
❖ 面向对象的方法学可以用下列方程来概括: OO=objects+classes+inheritance+communi cation with messages
❖ 也就是说,面向对象就是既使用对象又使用 类和继承等机制,而且对象之间仅能通过传 递消息实现彼此通信。
也就是说,一切局部于该对象的私有信息,都被 封装在该对象类的定义中,就好像装在一个不透 明的黑盒子中一样,在外界是看不见的,更不能 直接使用,这就是“封装性”。
如何访问私有数据
public class Circle { static double PI = 3.14159265; private int radius; public double circumference() { return 2 * PI * radius; } public setRaduis(int r){ this.radius=r; }
可以把一个大型软件产品分解成一系列本质上相互独立 的小产品来处理,这就不仅降低了开发的技术难度,而 且也使得对开发工作的管理变得容易多了。
9.1.2 面向对象方法学的优点
❖ 由于下述因素的存在,使得用面向对象方法 所开发的软件可维护性好:

第9章-面向对象方法学引论

第9章-面向对象方法学引论

9.2.2 其他概念
2. 实例(instance)
实例就是由某个特定的类所描述的一个具体的 对象。类是对具有相同属性和行为的一组相似 的对象的抽象。 类在现实世界中并不能真正存在。 类可以理解为“样板”,按照这个样板可以建 立一个个具体的实例。
9.2.2 其他概念
3. 消息(message)
消息就是要求某个对象执行在定义它的那个类 中的某个操作的规格说明。通常,一个消息由 下述3部分组成:
9.4.1 类图的基本符号
类名是一类对象的名字。为类命名时应该遵守 的几条准则: (1) 使用标准术语。应该使用在应用领域中人 们习惯的标准术语作为类名,不要随意创造名 字。例如,“交通信号灯”比“信号单元”这 个名字好,“传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。尽量使用能表 示类的含义的日常用语作名字,不要使用空洞 的或含义模糊的词作名字。例如,“库房”比 “房屋”或“存物场所”更确切。
9.4.1 类图的基本符号
(3) 必要时用名词短语作名字。为使名字的含 义更准确,必要时用形容词加名词或其他形式 的名词短语作名字。例如,“最小的领土单 元”、“储藏室”、“公司员工”等都是比较 恰当的名字。 (4) 名字要准确而简要。
9.4.1 类图的基本符号
2. 定义属性
UML描述属性的语法格式如下: 可见性 属性名: 类型名=初值{性质串} 属性的可见性有3种:
9.2.1 对象
1. 对象的形象表示
为有助于读者理解对象的概念,图9.2形象地描 绘了具有3个操作的对象。
9.2.1 对象
2. 对象的定义
人们从不同角度给出对象的不同定义。这些定 义虽然形式不同,但基本含义是相同的。 (1) 定义1: 对象是具有相同状态的一组操作 的集合。 (2) 定义2: 对象是对问题域中某个东西的抽 象,这种抽象反映了系统保存有关这个东西的 信息或与它交互的能力。也就是说,对象是对 属性值和操作的封装。 (3) 定义3: 对象∷=〈ID,MS,DS,MI〉。ID是 对象的标识或名字,MS是对象中的操作集合, DS是对象的数据结构,MI是对象受理的消息名 集合。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“语义断层”
通常,客观世界中的实体既具有静态的属性又具有动态 的行为。
传统语言提供的解空间对象实质上却仅是描述实 体属性的数据,必须在程序中从外部对它施加操 作,才能模拟它的行为。
面向对象方法把对象作为由数据及可以施加在这些 数据上的操作所构成的统一体。
它不是被动地等待外界 对它施加操作,相反, 它是进行处理的主体。
3. 可重用性好
用已有的零部件装配新的产品,是典型的重用技术。
传统的软件重用技术的实现方法:利用标准函数库,也就是 用标准函数库中的函数作为“预制件”来建造新的软件系统。 缺点:标准函数缺乏必要的“柔性”,不能适应不同应用场合 的不同需要,不是理想的可重用的软件成分。
在面向对象方法所使用的对象中,数据和操作正是作为平 等伙伴出现的。此外,对象固有的封装性和信息隐藏机制, 使得对象的内部实现与外界隔离,具有较强的独立性。继 承性机制使得在父类代码的基础上方便地修改和扩充,这 种修改并不影响对原有类的使用。
面向对象方法学的发展史: 20世纪60年代后期出现的面向对象编程语言Simula67中首次引入了类和对象的概念; 20世纪90年代,面向对象方法学已经成为人们在开 发软件时首选的范型。
面向对象技术已成为当前最好的软件开发技术。
9.1
9.1.1
面向对象方法学概述
面向对象方法学的要点
面向对象方法学的出发点和基本原则,是尽可 能模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过 程。
建模的优点:
(1)在对目标系统进行分析的初始阶段,面对大量模 糊的、涉及众多专业领域的、错综复杂的信息。
模型提供了组织大量信息的一种有效机制。
(2)一旦建立起模型之后,这个模型就要经受用户和 各个领域专家的严格审查。由于模型的规范化和系统化 .
比较容易暴露出系统分析员对目标系统认识的 片面性和不一致性。
类是建立对象时使用的“样 板”,按照这个样板所建立的 一个个具体的对象,就是类的 实际例子,通常称为实例。


3. 消息(message) 消息就是要求某个对象执行在定义它的那个类中所 定义的某个操作的规格说明。
通常,一个消息由下述3部分组成: 接收消息的对象; 消息选择符(也称为消息名); 零个或多个变元。 例:MyCircle.Show(GREEN)
9.2.2
其他概念
1. 类(class) 类是对具有相同属性和行为的一个或多个对象的描述。
类是对具有相同属性和行为的 一个或多个对象的描述,通常 在这种描述中也包括对怎样创 建该类的新对象的说明。
2. 实例(instance) 实例就是由某个特定的类所描述的一个具体的对象。类 在现实世界中并不能真正存在。
图9.1 喷泉模型
9.2
面向对象的概念 对象
9.2.1
对象是对问题域中某个实体的抽象,设立某个对象 就反映了软件系统具有保存有关它的信息并且与它 进行交互的能力。 在面向对象分析和面向对象设计中,通常把对象的 操作称为服务或方法。
1. 对象的形象表示
优点: (1)使用对象时只需 知道它向外界提供的 接口形式而无须知道 它的内部实现算法。 (2)当对象处于不 同状态时,做同一个 操作所得到的效果也 是不同的。
4. 较易开发大型软件产品
用面向对象方法学开发软件时,构成软件系统的每个 对象就像一个微型程序,有自己的数据、操作、功能 和用途.
可以把一个大型软件产品分解成一系列本质上相互独立 的小产品来处理,这就不仅降低了开发的技术难度,而
且也使得对开发工作的管理变得容易多了。
5. 可维护性好
(1) 面向对象的软件稳定性比较好。
8. 多态性(polymorphism) 多态性是指子类对象可以像父类对象那样使用,同样的 消息既可以发送给父类对象也可以发送给子类对象。
多态性机制的优点: (1)增加了面向对象软件系统的灵活性,显著提高了 软件的可重用性和可扩充性。 (2)当扩充系统功能时,只须派生出与新实体类相 应的新的子类,并定义符合该类需要的虚函数。 9. 重载(overloading) 函数重载是指在同一作用域内的若干个参数特征不同的函数
2. 对象的定义 定义1:对象是具有相同状态的一组操作的集合。 从面向对象程序设计的角度 看“对象”。
定义2: 对象是对问题域中某个东西的抽象,这种抽象反映 了系统保存有关这个东西的信息或与它交互的能力。也就 是说,对象是对属性值和操作的封装。
从信息模拟的角度看待 “对象”。 定义3: 对象∷=〈ID,MS,DS,MI〉。其中,ID是对象的标识 或名字,MS是对象中的操作集合,DS是对象的数据结构, MI是对象受理的消息名集合(即对外接口)。 一个形式化的定义。
9.1.3
喷泉模型
迭代是软件开发过程中普遍存在的一种内在属性。 经验表明:软件过程各个阶段之间的迭代,在面向对象 范型中比在结构化范型中更常见。一般说来,使用面向 对象方法学开发软件时,工作重点应该放在生命周期中 的分析阶段。
在整个开发过程中都使用统一的概念“对象”,自然就很容易 实现各个开发步骤的多次反复迭代,达到认识的逐步深化。 所有其他概念都是围绕对象组成的。
2. 稳定性好
传统的软件开发方法以算法为核心,开发过程基于 功能分析和功能分解。用传统方法所建立起来的软 件系统的结构紧密依赖于系统所要完成的功能,当 功能需求发生变化时将引起软件结构的整体修改。 因此,这样的软件系统是不稳定的。
面向对象方法对象为中心构造软件系统。它的基本做 法是用对象模拟问题领域中的实体,以对象间的联系 刻画实体间的联系。总之,由于现实世界中的实体是 相对稳定的,因此,以对象为中心构造的软件系统也 是比较稳定的。
可以使用相同的函数名字;
运算符重载是指同一个运算符可以施加于不同类型的操作
数上面。
9.3
面向对象建模
所谓模型,就是为了理解事物而对事物作出的一种 抽象,是对事物的一种无歧义的书面描述。 组成:模型由一组图示符号和组织这些符号的规则 组成,利用它们来定义和描述问题域中的术语和概 念。 作用:模型可以帮助我们思考问题、定义术语、在 选择术语时作出适当的假设,并且可以帮助我们保 持定义和假设的一致性。

为了开发复杂的软件系统,系统分析员应该从 不同角度抽象出目标系统的特性,使用精确的 表示方法构造系统的模型,验证模型是否满足 用户对目标系统的需求,并在设计过程中逐渐 把和实现有关的细节加进模型中,直至最终用 程序实现模型。
对于那些因过分复杂而不能直接理解的系统,特
别需要建立模型,建模的目的主要是为了减少复杂 性。人的头脑每次只能处理一定数量的信息,模型 通过把系统的重要部分分解成人的头脑一次能处理 的若干个子部分,从而减少系统的复杂程度。
只有同时使用对象、类、继承和消息的方法,才 是真正面向对象的方法。
9.1.2
面向对象方法学的优点
1. 与人类习惯的思维方法一致
传统的程序设计技术是面向过程的设计方法,这种方法 以算法为核心,把数据和过程作为相互独立的部分。
使数据和操作保持一致,是程序员的一个沉重负担。
结论:只有把描述事物静态属性的数据结构和表示事物 动态行为的操作放在一起构成一个整体,才能完整、自 然地表示客观世界中的实体。
这每次反复都会增加或明确一些目标系统的性质,但却 不是对先前工作结果的本质性改动,这样就减少了不一 致性,降低了出错的可能性。
由于各阶段都使用统一的概念和表示符号,这自然就很 容易实现各个开发步骤的多次反复迭代,达到认识的逐 步深化。 每次反复都会增加或明确一些目标系统的性质,但却不 是对先前工作结果的本质性改动,这样就减少了不一致 性,降低了出错的可能性。
第9章
9.1 9.2 9.3 9.4 9.5 9.6 9.7
面向对象方法学引论
面向对象方法学概述 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 3种模型之间的关系
传统软件工程方法学的优点:曾经给软件产业带来巨大 进步,部分地缓解了软件危机,使用这种方法学开发的 许多中、小规模软件项目都获得了成功。 缺点:当把这种方法学应用于大型软件产品的开发时, 似乎很少取得成功。
该方法的基本原理是:使用现实世界的概念抽象地思考 问题从而自然地解决问题。它强调模拟现实世界中的概 念而不强调算法,它鼓励开发者在软件开发的绝大部分 过程中都用应用领域的概念去思考。
面向对象的软件开发过程: 从始至终都围绕着建立问题领域的对象模型来进行。
面向对象方法学的基本原则是按照人类习惯的思维 方法建立问题域的模型,开发出尽可能直观、自然 地表现求解方法的软件系统。
(2) 面向对象的软件比较容易修改。 (3) 面向对象的软件比较容易理解。 用面向对象的软件技术所建立的软件系统的结构与问题 空间的结构基本一致。因此,面向对象的软件系统比较 容易理解。 (4) 易于测试和调试。 维护主要通过从已有类派生出一些新类来实现。因此, 维护后的测试和调试工作也主要围绕这些新派生出来的 类进行。
向着减少语义断层的方向迈了一大步, 在许多系统中解空间对象都可以直接 模拟问题空间的对象,解空间与问题 空间的结构十分一致,因此,这样的 程序易于理解和维护。
面向对象方法具有下述4个要点:
用对象分解取代了传 统方法的功能分解。
(1) 认为客观世界是由各种对象组成的。 (2) 把所有对象都划分成各种类(class),每个类都定 义了一组数据和一组方法。 (3) 按照子类与父类的关系,把若干个对象类组成一个 层次结构的系统(也称为类等级)。 (4) 对象彼此之间仅法成功地开发软件的关键,同 样是对问题域的理解。面向对象方法最基 本的原则,是按照人们习惯的思维方式,
用面向对象观点建立问题域的模型,开发 出尽可能自然地表现求解方法的软件。
对象模型始终都是 最重要、最基本、 最核心的

3. 对象的特点
(1)以数据为中心。
相关文档
最新文档