第九章:面向对象方法学引论
软件工程导论课件第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 面向对象方法学引论
• 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) 父类和子类:继承和派生的概念。 ) 父类和子类:继承和派生的概念。 比如:人和男人,狗和黑狗。 比如:人和男人,狗和黑狗。
软件工程 第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章面向对象方法学
(三) 面向对象的概念
1. 对象
在应用领域中有意义的、与所要解决的 问题有关系的任何事物都可以作为对象。 它既可以是具体的物理实体的抽象,也 可以是人为的概念,或者是任何有明确边界和 意义的东西。
客观世界的问题看成对象取决于应用的 视角和问题的性质。 当你在路上找人,你看到的对象就是流 动的人群; 当你需要出租车,你看到的对象就是过 往的车辆。
当对象 MyCircle 接受到这个消息后, 执行Circle类中所定义的 Show 操作。 注意: 1)消息由接受消息的对象来解释。 (MyCircle 就是接受消息的对象) 2)一个对象需要另一个对象服务时,就向 它发出请求服务的消息。这时,接受消息 的对象响应消息,触发所要求服务的操作 的方法来完成服务。
OO技术以对象(object)为核心,把静态 属性的数据,和对这些数据施加的操作封装在 一起所构成的统一体。
2. 稳定性好 面向对象的软件系统的结构是根据问题 领域的模型建立起来的。 (而传统方法是基于系统的功能的分解。) 当对系统的功能需求变化时并不会引起 软件结构的整体变化。因此,以对象为中心构 造的软件系统也是比较稳定的。
7. 封装(encapsulation) 从字面上理解,所谓封装就是把某个事物 包起来,使外界不知道该事物的具体内容。 对象具有封装性的条件如下: (1) 有一个清晰的边界。 (2) 有确定的接口。这些接口就是对象可 以接受的消息,只能通过向对象发送消息来使 用它。 (3) 受保护的内部实现。实现对象功能的 细节(私有数据和代码)不能在定义该对象的 类的范围外访问。
一. 传统方法学的问题
(一) 软件不能真正满足用户需求
1. 软件开发效率低 2. 软件不能满足“需求变化”、“需求模糊” 和“需求灵活性” 3. 软件重用度低 4. 软件仍然很难维护
09面向对象方法学引论
对象模型
表示关系的符号
关系种类 – 关联
–
–
关联的属性
进一步说明对象间关联的性质
对象模型
表示关系的符号
关系种类 – 聚合(聚集)
– – 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 包括共享聚合和组合聚合。
对象模型
表示关系的符号
关系种类 – 泛化
– – 继承性的体现。 通常包含一个基类和几个子类。基类表示较为一般、普通的概念; 子类则继承基类的属性和操作,但又具有自身的属性和操作。
面向对象方法学概述
面向对象软件的工程
按人类习惯的思维方法,以现实世界中客观存在的事 物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、 封装等。 以易于理解的方式表达软件系统,建立问题域模型, 使设计出的软件尽可能直接地描述现实世界,具有更 好的可维护性。 面向对象=对象+类+继承+通信 如果一个软件系统采用这些概念来建立模型并予 以实现,那么它就是面向对象的。
面向对象概念
其他概念
继承(inheritance) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理
第9章面向对象方法学引论
面向对象方法学的引入
面向对象方法学的优点:
与人类习惯的思维方法一致; 系统稳定性好; 可重用性好; 较易开发大型软件产品; 可维护性好。
面向对象方法学的引入
(1)与人类习惯的思维方法一致
传统的程序设计技术:
以算法为核心,数据和过程相分离。
面向对象的软件技术:
以对象为核心。对象是封装了描述内部状态表 示静态属性的数据及这些对数据施加的操作。
9.1 基本概念
对象 抽象成
对象:山地自行车
型号:28 ……
对象:公主自行车
型号:24 ……
类
类:自行车
型号 轮子尺寸 排挡 材料
换档 移动 修理
基本概念
练习:
1.分析下列对象之间的关系 家具、沙发、衣柜、电视柜 服装、衬衣,裤子 家用电器、电视、DVD机、组合音响
2.为什么说夏利牌汽车是小汽车类的特化,而发 动机不是小汽车类的特化?
公有的 + 私有的 保护的 #
表示属性的数据类型 该属性所有可能取值
对象模型
定义服务:
UML描述操作的语法格式如下:
可见性 操作名(参数表): 返回值类型{性质串}
公有的
逗号分隔
私有的
的形式参
保护的
数序列
描述参数的语法如下:
参数名:类型名=默认值
对象模型
9.3.2 表示关系的符号
类图由类及类与类之间的关系组成
类与类之间有4种关系: 关联;泛化(继承);依赖;细化。
对象模型
(1)关联
两个类的对象之间存在某种语义上的联系 ① 普通关联:只要类与类之间存在连接关 系就可以用普通关联表示。
符号:连接两个类之间的直线。
普通关联示例 注:、:关联方向。通常关联是双向的,关联方向上可以起名字。
张海藩《软件工程导论》(第6版)(课后习题 第9章 面向对象方法学引论)【圣才出品】
第9章面向对象方法学引论1.什么是面向对象方法学?它有哪些优点?答:(1)面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致的方法学科。
(2)面向对象方法学优点:①与人类习惯的思维方法一致。
②面向对象软件稳定性好。
③面向对象软件可重用性好。
④较易开发大型软件产品。
⑤可维护性好。
2.什么是“对象”?它与传统的数据有何异同?答:(1)对象是对问题域中某个实体的抽象。
(2)相对于传统数据结构的静态被处理,对象既有静态的属性,也有动态的行为,是进行处理的主体。
3.什么是“类”?答:类是对具有相同数据结构和相同操作的一组组相似对象的定义,即类是对具有相同属性和行为的一个或多个对象的描述,包括对怎样创建该类的新对象的说明。
4.什么是“继承”?答:继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。
5.什么是模型?开发软件为何要建模?答:(1)模型是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。
模型是一种思考工具,利用这种工具可以把知识规范地表示出来。
(2)由于建模忽略了事物的非本质属性,因此模型比原始事物更容易操作。
对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,模型通过吧系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。
6.什么是对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?答:(1)对象模型表示静态的、结构化的系统的数据性质。
它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
(2)通常使用UML提供的类图来建立对象模型。
(3)在UML中“类”的实际含义是。
软件工程九章面向对象方法学
4
2.软件重用程度很低 重用也称为再用或复用,是指同一事物不经修改或 稍加改动就多次重复使用。 软件重用是节约人力,提高软件生产率的重要途径。 结构分析、结构设计和结构程序设计(简写为 SA- SD-SP)技术,虽然给软件产业带来了巨大进步, 但却没能很好地解决软件 重用问题。 几乎每次开发一个新的软件系统时,都要针对这个 具体的系统作大量重复而又繁琐的工作。
14
原型法的基本思想: 首先建立一个能反映用户主要需求的原型系统,让 用户在计算机上运行、试用这个原型系统,通过实 践,了解未来系统的概貌,提出许多修改意见,根 据这些意见,快速修改原型系统,然后用户再次试 用修改后的原型系统„ 用户在试用原型系统的过程中,很容易判断它是否 真正满足自己的业务工作需要。 软件开发人员首先向用户提供一个“样品”(即原 型系统),用户经过试用向开发人员作出“反馈”。 通过“试用一反馈一修改”的多次反复,最终开发 出真正符合用户需要的应用系统,这就是用原型法 开发软件的优点。
7
出现问题的原因
1.僵化的设计模型 瀑布模型意味着在生命周期各阶段间存在着严格的 顺序性和依赖性。生命周期方法学特别强调预先定 义需求的重要性。 要求在着手进行具体的开发工作之前,必须通过需 求分析预先定义并“冻结”软件需求,然后再一步 一步地实现这些需求。
8
实践表明,在系统建立起来之前,往往很难仅仅 依靠分析就确定出一套完整、准确、一致、有效 的应用需求,这种预先定义需求的方法更不能适 应用户需求不断变化的情况: 预先定义需求的策略所作的假设,只对某些 软件成立,对于多数软件并不成立。人们为了 充实和细化他们的初步设想,通常需要经过在 某个能运行的系统上的实践过程。 项目参与者之间存在通信鸿沟 良好的通信和相互理解对于保证工程成功是至 关重要的。 各种文档,本质上是被动、静止的通信工具, 9 通过它们来理解一个动态系统是困难的。
软件工程导论第9章面向对象方法学引论
软件⼯程导论第9章⾯向对象⽅法学引论第9章⾯向对象⽅法学引论传统的软件⼯程⽅法学曾经给软件产业带来巨⼤进步,部分地缓解了软件危机,使⽤这种⽅法学开发的许多中、⼩规模软件项⽬都获得了成功。
但是,⼈们也注意到当把这种⽅法学应⽤于⼤型软件产品的开发时,似乎很少取得成功。
在20世纪60年代后期出现的⾯向对象编程语⾔Simdla_67中⾸次引⼊了类和对象的概念,⾃20世纪80年代中期起,⼈们开始注重⾯向对象分析和设计的研究,逐步形成了⾯向对象⽅法学。
到了20世纪90年代,⾯向对象⽅法学已经成为⼈们在开发软件时⾸选的范型。
⾯向对象技术已成为当前最好的软件开发技术。
9.1⾯向对象⽅法学概述9.1.1 ⾯向对象⽅法学的要点⾯向对象⽅法学的出发点和基本原则,是尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界解决问题的⽅法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能⼀致。
客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。
我们把客观世界中的实体抽象为问题域中的对象(object)。
因为所要解决的问题具有特殊性,因此,对象是不固定的。
⼀个雇员可以作为⼀个对象,⼀家公司也可以作为⼀个对象,到底应该把什么抽象为对象,由所要解决的问题决定。
从本质上说,⽤计算机解决客观世界的问题,是借助于某种程序设计语⾔的规定,对计算机中的实体施加某种处理,并⽤处理结果去映射解。
我们把计算机中的实体称为解空间对象。
显然,解空间对象取决于所使⽤的程序设计语⾔。
例如,汇编语⾔提供的对象是存储单元;⾯向过程的⾼级语⾔提供的对象,是各种预定义类型的变量、数组、记录和⽂件等等。
⼀旦提供了某种解空间对象,就隐含规定了允许对该类对象施加的操作。
从动态观点看,对对象施加的操作就是该对象的⾏为。
在问题空间中,对象的⾏为是极其丰富多彩的,然⽽解空间中的对象的⾏为却是⾮常简单呆板的。
9面向对象方法学引论
在创建类的实例时应给其属性赋值,如果给某个 属性定义了初值,则该初值可作为创建实例时这个属 性的默认值。类型名和初值之间用等号(=)隔开。 用花括号括起来的性质串明确地列出该属性所有 可能的取值。例如,“发货单”类的属性“管理员”, 在UML类图中像下面那样描述: -管理员: String=“未定”
0„1 0„*或* 表示0到1个对象 表示0到多个对象
1+或1„*
1„15
表示1到多个对象
表示1到15个对象
3
表示3个对象
如果图中未明确标出关联的重数,则默认重 数是1。
淮海工学院━软件工程
(2) 关联的角色
在任何关联中都会涉及到参与此关联的对象所扮演的 角色(即起的作用),在某些情况下显式标明角色名有助 于别人理解类图。下图是一个递归关联(即一个类与它本 身有关联关系)的例子。一个人与另一个人结婚,必然一 个人扮演丈夫的角色,另一个人扮演妻子的角色。如果没 有显式标出角色名,则意味着用类名作为角色名。
Polygon类的子类 Quadrilateral
淮海工学院━软件工程
多态性(Polymorphism)
在面向对象的软件技术中,多态性是指子 类对象可以象父类对象那样使用,同样的消 息既可以发送给父类对象也可以发送给子类
对象。
多态性机制不仅增加了面向对象软件系
统的灵活性,进一步减少了信息冗余,而且
• 组织机构:有关机构,如公司、部门、小 组等;
• 地点或位置:用做系统环境或问题上下文 的场所、位置,如客户地址、收件人地址 等; • 操作规程:如操作菜单、某种数据输入过 程等。
淮海工学院━软件工程
类(class)
• 类是一组具有相同数据结构和相同操作的对象的 集合。 • 类的定义包括一组数据属性和在数据上的一组合 法操作。 • 类定义可以视为一个具有类似特性与共同行为的 对象的模板,可用来产生对象。
张海藩《软件工程导论》(第6版)(章节题库 第9章 面向对象方法学引论)【圣才出品】
圣才电子书 十万种考研考证电子书、题库视频学习平台
7.通过执行对象的操作改变该对象的属性,但它必须通过( )的传递。 A.接口 B.消息 C.信息 D.操作 【答案】B 【解析】对象之间进行通信的构造叫做消息。在对象的操作中,当一个消息发送到某个 对象时,消息包含接收对象去执行某种操作的信息。接收信息的对象经过解释,然后给予响 应。这种通信机制称为信息传递。所以必须通过消息的传递,才能通过执行对象的操作改变 对象的属性。
14.主要的对象类型有_____、_____、_____和_____。 【答案】有形实体;作用;事件;性能说明
15.在类描述模板中,应该给出每个属性的详细说明,主要包括下述信息:_____、_____、 _____、_____。
【答案】属性的说明;属性的数据类型;属性所体现的关系;实现要求及其他 二、填空题 1.对象模型的描述工具是( )。 A.状态图 B.数据流图 C.对象图 D.结构图 【答案】C 【解析】对象模型描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的 操作。对象模型表示结构上的、系统的“数据”特征。对象模型用包含对象和类的对象图来 表示。
6.在软件工程学中,我们把一组具有相同数据结构和相同操作对象的集合定义为 ( ),此定义包括一组数据属性和在数据上的一组合法操作。
A.类 B.属性 C.对象 D.消息 【答案】A 【解析】具有相同数据结构和操作的对象被定义为类;对象的特性、状态称为属性;对 象是类的一个实例;消息是对象之间信息传递的方式。
圣才电子书 十万种考研考证电子书、题库视频学习平台
第 9 章 面向对象方法学引论
一、选择题 1.对象的抽象是_____,类的实例化是_____。 【答案】类;对象
第9章 面向对象方法学引论PPT课件
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.2 面向对象的概念 9.2.1 对象(Object) 对象是面向对象方法中使用的最基本的概念。
在应用领域(用户业务范围)中有意义的、 与所要解决的问题有关系的, 任何事物都可以作为对象。
结构化方法存在的问题 1)开发的软件不能满足用户的最终的需求
① 不能正确理解用户的需求 由于开发人员往往不是领域专家,他们对业务的理解有限,
对用户需求的理解不全面,使得开发的软件与用户的 实际需求有差别,不能满足用户的需要。 ② 不能适应用户需求的变化。 由于软件开发周期较长, 使得最终开发出的软件满足用户的初始需求, 而不满足用户的最终需求。 或者说,开发出的软件不能适应用户需求的变化。
图2
事实上,一个对象好像是一个黑盒子, 实现对象操作的代码和数据是隐藏在对象内部, 使用对象时只知道它向外部提供的接口形式 而无需知道它的内部细节。 在C++中,
属性是:所有的数据成员; 操作(外部提供的接口):是公有的成员函数说明(public)
操作的实现是:函数定义,代码实现过程。
李光.调工资(+50)
尽可能模拟人类习惯的思维方式,
使开发软件的方法与过程,
尽可能接近人类认识世界解决问题的方法与过程。
面向对象方法学的4个要点: 1)对象:
认为客观世界是由各种对象组成的,任何事物都是对象。 面向对象的软件系统是由对象组成的, 软件中的任何元素都是对象, 复杂的软件对象由比较简单的对象组合而成。 OO方法用“对象分解”取代了传统方法的“功能分解”。
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.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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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完成通信; ⑤ 模块独立性好:内聚强( ① )、耦合松( ③ ④ )