第9章面向对象方法学

合集下载

软件工程导论第9章

软件工程导论第9章

众所周知,软件系统本质上是信息处理系统。数据 和处理原本是密切相关的,把数据和处理人为地分 离成两个独立的部分,会增加软件开发的难度。与 传统方法相反,面向对象方法是一种以数据或信息 为主线,把数据和处理相结合的方法。面向对象方 法把对象作为由数据及可以施加在这些数据上的操 作所构成的统一体。对象与传统的数据有本质区别, 它不是被动地等待外界对它施加操作,相反,它是 进行处理的主体。必须发消息请求对象主动地执行 它的某些操作,处理它的私有数据,而不能从外界 直接对它的私有数据进行操作。
(3) 按照子类(或称为派生类)与父类(或称为基类)的 关系,把若干个对象类组成一个层次结构的系统 (也称为类等级)。在这种层次结构中,通常下层的 派生类具有和上层的基类相同的特性(包括数据和 方法),这种现象称为继承(inheritance)。但是,如 果在派生类中对某些特性又做了重新描述,则在派 生类中的这些特性将以新描述为准,也就是说,低 层的特性将屏蔽高层的同名特性。
(2) 把所有对象都划分成各种对象类(简称为类, class),每个类都定义了一组数据和一组方法。数 据用于表示对象的静态属性,是对象的状态信息。 因此,每当建立该对象类的一个新实例时,就按照 类中对数据的定义为这个新对象生成一组专用的数 据,以便描述该对象独特的属性值。 类中定义的方法,是允许施加于该类对象上的操作, 是该类所有对象共享的,并不需要为每个对象都复 制操作的代码。

第9章 面向对象的分析设计方法

第9章  面向对象的分析设计方法

第9章 面向对象的分析设计方法
9.1.2 面向对象方法与结构化方法的比 较
结构化方法强调了功能抽象与模块化,程序是一些过程或 子程序的集合,这些过程通过参数传送数据。每个过程操纵它 的参数,有时修改它们,也可能返回一个值。因而结构化方法 看作处理一系列的过程,也就是以模块(即过程)为中心的开 发方法。 在面向对象的系统中,世界被看成是独立对象的集合,对 象之间通过过程(在面向对象术语中称之为消息)相互通讯, 对象具有“智能化”的结构,它将数据和消息“封装” (Encapsulation)在一起,对一个对象的存取或修改仅通过其 外部的接口子程序,其内部的实现细节、数据结构及对它的操 作是不可见的(在面向对象术语中称之为“信息隐藏” Information Hiding)。对象是主动实体而过程(消息)是被动 实体,过程和它们的参数一起从一个对象传递到另一个对象。 一个对象研究对它提出的请求(即过程或消息)并激活它们, 即面向对象是以数据为中心的开发方法。以对象为中心的开发 方法比以过程为中心的开发方法优越。具体表现在如下几个方 面:
第9章 面向对象的分析设计方法
面向对象方法就是以对象为中心、以对象为出发点的方 法。在应用领域中有意义的、与所要解决的问题有关系的任 何人或事物(即我们说的实体)都可以作为对象,它既可以 是具体的物理实体的抽象,也可以是人为的概念,或者是任 何有明确边界和意义的事物或东西。在面向对象方法中,对 象是一组数据(属性)和施加于这些数据上的一组操作代码 (操作)构成的独立类体。换言之,对象是一个有着各种特 殊属性(数据)和行为方式(方法)的逻辑实体。对象是一 个封闭体,它向外界提供一组接口界面,外界通过这些接口 与对象进行交互,这样对象就具有较强的独立性、自治性和 模块性,从而为软件的重用奠定了坚实的基础。

第9-12章 面向对象

第9-12章 面向对象

09-12 面向对象(技术、需求分析、分析、设计与实现)

一、选择题

(1)面向对象的分析方法主要是建立三类模型,即 ( D )。

A.系统模型、ER 模型、应用模型B.对象模型、动态模型、应用模型

C.E-R模型、对象模型、功能模型D.对象模型、动态模型、功能模型

(2)面向对象技术中,对象是类的实例。对象有三种成份:( A )、属性和方法。

A. 标识

B. 规则

C. 封装

D. 消息

(3)( C )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。

A.多态性

B.继承

C.封装

D.消息

(4)消息是对象间交互的一种机制,消息刺激接收对象产生某种行为。消息的构成有三部分:( B ),消息名,若干变元。

A.发出消息的对象 B.接收消息的对象 C.消息编号 D.时间

(5)面向对象设计准则包括:模块化,抽象,( A ),弱耦合,强内聚和可重用。

A.信息隐藏 B.可继承 C.封装性 D.实例化

(6)( A )意味着一个操作在不同的类中可以有不同的实现方式。

A.多态性 B.多继承 C.类的复用 D.封装

(7)软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫( B )。

A.生存期 B.面向对象分析

C.面向对象程序设计 D.面向对象设计

(8)把一组具有相似特性的对象的描述,称之为( C )。

A. 多态性

B.继承性

C.类

D.消息

(9)面向对象分析的独到之处在于( A )。

A.将数据和操作结合在一起而不是分离 B.仅考虑数据结构

C.数据和操作分别独立考虑 D.仅考虑操作过程

《实用软件工程》第9章 面向对象设计

《实用软件工程》第9章 面向对象设计
9
第三节 面向对象设计的过程与规则
9.3.1 面向对象设计的过程
• (1)建立软件体系结构环境图

在软件体系结构设计开始的时候,设计应该定义与软件进行交互的外部实体(其
他系统、设备和人员等)以及交互的特性。一般在分析建模阶段可以获得这些信息,
并使用软件体系结构环境图对环境进行建模,描述系统的出人信息流、用户界面和相
2
目录
9.1 面向对象设计与结构化设计
9.2 面向对象设计与面向对象分析的关系
9.3 面向对象设计的过程与规则
9.4 面向对象设计的启发规则
9.5 系统设计
9.6 对象设计
3
第一节 面向对象设计与结构化设计
9.1 面向对象设计与结构化设计
• 与结构化的设计相比,面向对象的设计更符合复杂的、随机性较强 和考虑并发性的系统软件设计,而不适合逻辑性很强的系统软件设计。结 构化软件设计一般从系统功能入手,按照需求将系统功能分为若干个子功 能模块。但是,用户的需求是在不断变化的。需求的改变往往会对功能模 块产生影响,从而对整个系统产生影响,而面向对象的设计基于类、对象、 封装、继承等概念,相比之下,需求的变化对系统的局部影响并不容易扩 展到全局。因此,面向对象设计方法比结构化设计方法更具有优势,使用 范围更广。
15
9.3.1 面向对象设计的过程
• (4)对象设计及优化

第9章 面向对象编程习题及答案

第9章 面向对象编程习题及答案

1、关于python类说法错误的是:

A 类的实例方法必须创建对象后才可以调用

B 类的实例方法必须创建对象前才可以调用

C 类的类方法可以用对象和类名来调用

D 类的静态属性可以用类名和对象来调用

答案:B

2、如下类的定义,下列描述错误的是?

class A(object):

pass

class B(A):

pass

b=B()

A、i sinstance(b,A)==True

B、isinstance(b,object)==True

C、i ssubclass(B,A)==True

D、i ssubclass(b,B)==True

答案:D

3、定义类如下

class Hello():

def __init__(self,name)

=name

def showInfo(self)

print()

下面代码能正常执行的:

A、h = Hello

h.showInfo()

B、h = Hello()

h.showInfo(‘张三’)

C、h = Hello(‘张三’)

h.showInfo()

D、h = Hello(‘admin’)

showInfo

答案:C

4、导入模块的方式错误的是:

A、i mport mo

B、from mo import *

C、i mport mo as m

D、i mport m from mo

答案:D

5、以下关于模块说法错误的是:

A、一个xx.py就是一个模块

B、任何一个普通的xx.py文件可以作为模块导入

C、模块文件的扩展名不一定是 .py

D、运行时会从制定的目录搜索导入的模块,如果没有,会报错异常答案:C

6、多重继承的执行顺序,请解答以下输出结果是什么?并解释。class A(object):

黄梯云《管理信息系统》笔记和课后习题详解(面向对象的系统开发)

黄梯云《管理信息系统》笔记和课后习题详解(面向对象的系统开发)

第9章面向对象的系统开发

9.1 复习笔记

一、面向对象方法的基础理论

1.面向对象的基本概念

(1)对象(Object)

①概念

对象泛指所要研究的具体事物、抽象概念等。在面向对象的系统中,问题对象是基本的运行实体,由一组数据和施加于这些数据上的一组操作封装而成。

②构成对象的基本要素

a.标识

标识即对象的名称,用来在问题域中区分其他对象。

b.数据

数据也称状态,用于描述对象属性的存储或数据结构。

c.操作

操作即对象的行为,对象运动特性的描述。

d.接口

接口是指对象接受外部消息所指定的操作名称集合。

③记录对象禁止特征的数据类型

a.公共数据

对外界是可见的,用于对象间信息的传递。

b.私有数据

是对象操作实现过程中的局部信息,外界不可见。

④数据和操作间的相互作用

图9-1说明了对象的内部组织以及与其他对象的联系机制。

图9-1 对象的内部组织以及与其他对象的联系机制(2)类(Class)

类是相似对象的集合,现实世界中由许多内部状态和外部行为相似的对象构成的集合就是类。

①标识

标识即类的名称,用以区分其他类。

②继承

继承描述子类承袭父类的名称,以及结构与功能。

③数据结构

数据结构是对该类数据包含数据项的描述。

④操作

操作是该类通用功能的具体实现方法。

⑤接口

接口是面向其他类的统一的外部通信协议。

(3)消息(Message)

消息是实现对象与对象间相互合作的通信载体,是连接对象的纽带,也是请求对象执行某个处理或提供某些信息的要求。

①消息传递

当消息发送给某个对象时,接收到消息的对象经过解释予以响应,对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息传递”。

Python程序设计基础与实战 第9章 面向对象程序设计

Python程序设计基础与实战 第9章 面向对象程序设计

6. s1 = Student(100)
7. print(s1._Student__score)
8. print(s1._Student__get_score())
私有属性和私有方法不能直接访 问,否则就会报错。通过加上类名的 形式进行访问,能够成功访问,但是 并不建议这种访问方式。
#访问私有属性__score #访问私有方法__get_score()
面向对象是一种自底而上的设计方法。面向对象程序设计(Object-Oriented Programming,OOP)用于描述客观世界中的事物,每一个具体的事物都是一个对象,同类型的对 象拥有共同的属性和行为,则形成了类,这一过程就是抽象。抽象是面向对象程序设计的本质,类 是其关键,类与对象是抽象与具体的对应。面向对象程序设计将数据和操作看成一个整体,可以提 高程序的开发效率,使得程序结构清晰,增加程序的可维护性,提高代码的可复用性。
100 100
初心至善 匠心育人
9.2 封装
9.2.2 @property的使用
@property是Python内置的装饰器,能够修改属性的读写权限
1. class Score: 2. def __init__(self,data):
定义私有属性self.__data, @property将其变为只读的
初心至善 匠心育人
9.1 面向对象概述

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

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

交 互

注 释
用 对 构 实 类 例 象 件 施 图 图 图 图 图 节 点 顺 协 状 活 序 作 态 动 图 图 图 图
用 接 类 例 口
协 作
活 动 类
组 件
面向对象建模
(1) 统一标准
UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的 正式标准,提供了标准的面向对象的模型元素的定义和表示。
9.2.4 消息
消息就是向对象发出的服务请求(互相联系、 协同工作等)。一个消息包含3个部分:接收 消息的对象,消息名,消息变元。 例如,MyCircle是Circle类的一个实例,发送 消息如下: MyCircle.show(GREEN);
9.2.5 方法
方法就是对象所能执行的操作,也就是类 中所定义的服务。 方法描述了对象执行操作的算法,响应消 息的方法。在C++语言中把方法称为成员 函数。
(2) 面向对象
UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示 考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极 少使用的符号,也添加了一些新符号。
(3) 可视化、表示能力强
系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于 复杂软件系统的建模。
(4) 独立于过程
9.2.1 对象(I)
是客观事物或概念的抽象表述,即对客观存在的 事物的描述统称为对象 对象可以是事、物、或抽象概念 ,是将一组数据 和使用该数据的一组基本操作或过程封装在一起 的实体。

第9章面向对象方法学

第9章面向对象方法学

5. 方法(method) 方法就是对象所能执行的操作,也就是 类中所定义的服务。在C++语言中把方法称 为成员函数,在Java中称作方法。 6. 属性(attribute) (attribute) 属性就是类中所定义的数据(又称作属 性名),它是对客观世界实体所具有的性 质的抽象。类的每个实例都有自己特有的 属性值。 在C++语言中把属性称为数据成员
小结
近年来,面向对象方法学日益受到人们 的重视,对于大型软件产品来说,面向对 象范型明显优于结构化范型。此外,使用 面向对象范型能够开发出稳定性好、可重 用性好和可维护性好的软件,这些都是面 向对象方法学的突出优点。 面向对象方法学比较自然地模拟了人类 认识客观世界的思维方式。
用面向对象观点建立系统的模型,它们 分别是描述系统静态结构的类模型(对象 模型)、描述系统控制结构的动态模型(比 如状态模型)、以及描述系统计算结构的功 能模型。其中,对象模型(类模型)是最基本、 ( ) 最核心、最重要的。
4. OOP(面向对象实现)
OOP是简单而直接的, 主要是把设计模型 转换成某种编程语言。 1) 早期方法是根据OOD的设计结果, 选用一 种OOPL直接写出对应源代码, 然后进行测试、 编译和执行。 2) 目前比较常用的方法是将OOD设计结果转 化成某种关系数据库,再通过成熟的数据库设 计方法完成。 3) 软件工程发展趋势是使用UP过程,即用例 驱动、以体系结构为中心,反复迭代来完成软 件实施。

第九章软件工程面向对象实现

第九章软件工程面向对象实现
考虑类库时,不仅应考虑语言是否提供了类库,还应考虑类库中 提供了哪些有价值的类。
随着类库的日益成熟和丰富,需要开发人员自己编写的代码将 越来越少。
为便于积累可重用的类和重用已有的类,在开发环境中,除提 供基本软件工具外,还应提供使用方便的类库编辑工具和浏览工 具。(类库浏览工具应具有较强的联想功能)
⑦ 利用继承机制 是实现共享和提高重用程度的主要途径。
◆ 调用子过程 将公共代码分离出来(最简单做法),构成一个被其他方法调用的公用方 法,并在基类中定义这个公用方法,供派生类中的方法调用。 ◆ 分解因子
有时是提高“相似类”代码可重用性的一个有效途径。 从不同类的相似方法中分解出不同的“因子”(即不同的代码),余 下的代码作为公用方法中的公共代码。将分解出的因子作为名字相同而算 法不同的方法,放在不同类中定义,并被这个公用方法调用。(基类)
④ 精心确定公有方法 公有方法是公开的接口,对这类方法的修改往往会涉及许多其
他类,因而修改公有方法的代价通常都比较高。 为提高可修改性,降低维护成本,须精心选择和定义公有方法。
私有方法是仅在类内部使用的方法,通常可利用私有方法来实现 公有方法。删除、增加或修改私有方法所涉及的面要窄得多,因而 代价也较低。
2、面向对象的集成测试
◆ 传统的自顶向下和自底向上的集成策略失去意义
--- 面向对象的软件中不存在层次的控制结构。

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

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

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

1.什么是面向对象方法学?它有哪些优点?

答:(1)面向对象方法学是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致的方法学科。

(2)面向对象方法学优点:

①与人类习惯的思维方法一致。

②面向对象软件稳定性好。

③面向对象软件可重用性好。

④较易开发大型软件产品。

⑤可维护性好。

2.什么是“对象”?它与传统的数据有何异同?

答:(1)对象是对问题域中某个实体的抽象。

(2)相对于传统数据结构的静态被处理,对象既有静态的属性,也有动态的行为,是进行处理的主体。

3.什么是“类”?

答:类是对具有相同数据结构和相同操作的一组组相似对象的定义,即类是对具有相同属性和行为的一个或多个对象的描述,包括对怎样创建该类的新对象的说明。

4.什么是“继承”?

答:继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。

5.什么是模型?开发软件为何要建模?

答:(1)模型是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。模型是一种思考工具,利用这种工具可以把知识规范地表示出来。

(2)由于建模忽略了事物的非本质属性,因此模型比原始事物更容易操作。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,模型通过吧系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。

管理信息系统第九章 面向对象的分析与设计

管理信息系统第九章 面向对象的分析与设计

对象、类和消息传递
二、类的继承 -1
类的层次
实际应用中,事物分类很难一蹴而就,往往要先进行粗分 类,再进一步细分,最终使分类相互联系而形成完整系统结构.继 承是类之间的重要关系,依赖继承机制,可由类产生对象,或由已 知类定义其它类.
继承是指一个类(即称子类)因承袭而具有另一个类 (或称父类)的能力和特征的机制或关系。
四、 面向对象的含义
面向对象是一种认识客观世界的认知方法学 ➢ 这种认识方法将客观世界看成是由许许多多不同对象构 成的,每一个对象都有自己的运动规律和内部状态,不 同对象间的相互作用和通讯构成了完整的客观世界。
面向对象亦是一种解决问题的思维方法 ➢ 从组织结构模型化客观世界,将对象作为需求分析和系 统设计的核心或主体,把整个问题域抽象成为相互通讯 的一组对象集合,并引用科学方法论中的分类思想,将 相似或相近的一组对象聚合成类,采用各种手段将相似 的类组织起来,实现问题空间到解空间的映射。
OOD是把系统所要求解的问题分解为一些对象及对象间传 递消息的过程;
结构化方法VS面向对象方法
结构化方法
结构化分析方法 结构化设计方法 结构化编程方法
面向对象方法 面向对象分析方法 面向对象设计方法 面向对象编程方法
结构化方法
结构化分析 ➢面向数据流的分析方法
结构化设计 ➢将数据流程图转换为模块结构图 ➢根据E-R图及数据字典设计数据库 ➢系统功能的实现靠模块之间的调用实 现

软件工程导论第1章(第4版)

 软件工程导论第1章(第4版)

一. 瀑布模型
瀑布模型(Waterfall Model)也称为线性顺序 模型或生存周期模型, 一直是软件工程中应用 得最广泛的过程模型。
传统软件工程方法 学的软件过程,基本上 可以用瀑布模型来描述。
瀑布模型的特点:
1. 阶段间具有顺序性和依 赖性
顺序性:
①必须等前一阶段的工作完 成之后,才能开始后一阶段 的工作;
②前一阶段的输出文档就 是后一阶段的输入文档。
依赖性:
只有前一阶段的输出文档正 确,后一阶段的工作才能获 得正确的结果。
瀑布模型的特点:
2. 推迟实现的观点
系统分析与系统设计阶 段只考虑目标系统的逻辑模 型,不涉及软件的物理实现。
把逻辑设计与物理设计 清楚地划分开,尽可能推迟 程序的物理实现,是瀑布模 型软件开发的一条重要的指 导思想。
机程序和使程序正常执行所需要的数据,加上描述 程序的操作和使用的文档。
2.软件的特征 计算机软件是一个逻辑的而不是物理的系统元素。 (1)软件无明显重要的制造阶段,所有代价都集中 在计划开发和维护上; (2)软件不会用旧,在软件世界中不存在备件; (3)软件维护通常包括对设计的修改和提高改进。
二. 软件危机
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的

9面向对象方法学与UML

9面向对象方法学与UML
8
二、出现问题的原因
僵化的瀑布模型 结构化技术的特点
9
原因1、僵化的瀑布模型
瀑布模型特别强调预先定义需求的重要 性,并在着手具体开发之前冻结需求。 实践表明:很难。
某些类型的系统需求是模糊的 项目参与者之间存在通信鸿沟 预先定义的需求可能是过时的
10
原因2、 结构化技术的特点
结构化的本质:功能分解、功能与数据 结构分离。 有如下缺点:
开发效率的提高仍然有限
1955年~1985年,经过30年,美国的软件生产率 只翻了将近2番。
供求之间的不平衡
5
问题2、 软件重用程度很低
软件重用(软件再用):软件不加修改或稍加 修改就可以构成新的软件。分为三个层次:
知识的再用:指软件蕴涵的启发性知识与算法的再 用; 方法和标准的再用:指软件设计方法、软件规范标 准的再用; 软件成分的再用:指实现软件功能的具体代码的再 用。
软件重用是提高设计效率,避免重复劳动、尤 其是低水平重复劳动的好途径。结构化方法没 能很好的解决软件重用问题。
6
问题3、 软件仍然很难维护
结构化软件的可维护性有比较明显的提高,软 件从不能维护到基本可以维护。 但维护成本仍然很高,维护的生产率比软件开 发的生产率低几十倍。 维护代价:1970:35-40% 1980:4060% 1990:70-80% 例如,据Gausler在1976年的报道,美国空 军的飞行控制软件每条指令的开发成本是75美 元,然而维护成本大约是每条指令4000美元, 也就是说,生产率下降了50倍以上。

c++面向对象课后答案第9章

c++面向对象课后答案第9章

1.概念填空题

1.1 C++支持两种多态性,分别是编译时和运行时.

1。2在编译时就确定的函数调用称为静态联编,它通过使用函数重载,模板等实现。

1.3在运行时才确定的函数调用称为动态联编,它通过虚函数来实现。

1.4虚函数的声明方法是在函数原型前加上关键字virtual。在基类中含有虚函数,在派生类

中的函数没有显式写出virtual关键字,系统依据以下规则判断派生类的这个函数是否是虚函数:该函数是否和基类的虚函数同名 ;是否与基类的虚函数参数个数相同、类型;是否与基类的虚函数相同返回类型。如果满足上述3个条件,派生类的函数就是虚函数。并且该函数覆盖基类的虚函数.

1。5当通过引用或指针使用虚函数时,C++会在与对象关联的派生类中正确的选择重定义的函数.实现了运行时时多态。而通过对象使用虚函数时,不能实现运行时时多态。

1。6 纯虚函数是一种特别的虚函数,它没有函数的函数体部分,也没有为函数的功能提供实现的代码,它的实现版本必须由派生类给出,因此纯虚函数不能是友元函数。拥有纯虚函数的类就是抽象类类,这种类不能实例化.如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是抽象.

1.7 类的构造函数不可以 (可以/不可以)是虚函数,类的析构函数可以(可以/不可以)是

虚函数。当类中存在动态内存分配时经常将类的析构函数函数声明成虚函数。

2.简答题

2。1在C++中,能否声明虚构造函数?为什么?能否声明虚析构函数?为什么?

2。2 什么是抽象类?抽象类有何作用?可以声明抽象类的对象吗?为什么?

2。3多态性和虚函数有何作用?

第9章 面向对象方法学

第9章 面向对象方法学

第9章面向对象方法学

一、填空题(10小题)

1、对象具有状态,描述对象的状态用它的()。

答案:属性值

2、类具有属性,描述类的属性用()。

答案:数据结构

3、子类自动共享父类的属性和操作的机制称为()。

答案:继承

4、封装性是指所有软件部件内部都有明确的()以及清楚的()。每个软件部件都有友好的(),软件部件的()与()分离。

答案:范围、外部边界、界面接口、内部实现、外部可访问性

5、结构化方法的本质是(),其()、可修改性和可重用性都比较差。答案:功能分解、稳定性

6、动态模型描述了系统的()。

答案:动态行为

7、类具有属性,它是对象的()的抽象,用()来描述类的属性。

答案:状态、数据结构

8、动态模型描述了系统的()结构。

答案:控制

9、对象具有状态,对象用()来描述它的状态。

答案:数据值

10、在C++和C中有一个()函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。

答案:main()

二、单项选择题(20小题)

1、在确定类时,所有()是候选的类。

A、名词

B、形容词

C、动词

D、代词

答案:A

2、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。

A、传递性

B、继承性

C、复用性

D、并行性

答案:B

3、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组()和它可以执行的一组操作来定义。

A、服务

B、参数

C、属性

D、调用

答案:C

4、面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9.1 面向对象方法学概述
与传统方法相反,面向对象方法是一种以数据 或信息为主线,把数据和处理相结合的方法。 面向对象方法把对象作为由数据及可以施加在 这些数据上的操作所构成的统一体。 对象与传统的数据有本质区别,它不是被动地 等待外界对它施加操作,相反,它是进行处理 的主体。

9.1 面向对象方法学概述
9.2 面向对象的概念


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

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

多态性的示例
海尔 长虹 TCL
9.3 面向对象建模
建立问题模型是人们理解表达问题的方法之一。 模型是对事物作出的一种抽象,是对事物的一
种形式化的描述。 模型常由专门的语言 (一组图示符号和规则)来 描述. 面向对象建模就是根据面向对象观点(模拟人类 习惯的思维方式)建立问题的解模式. 面向对象的 实现能将此模式在计算机上实施.
统一建模语言UML

UML(Unified Modeling Language)产生于90年代中期。 它不仅统一了Booch、OMT(对象建模技术)、和 OOSE方法中的概念和表示法,而且对其作了进一步扩 展,最终成为在面向对象技术领域占主导地位的、并被 大众所接受的标准建模语言。 1、UML概述 UML的发展历程(下图) UML是一个通用的标准建模语言,可以对任何具有静态 结构和动态行为的系统进行可视化建模。UML不是一个 开发过程,也不是一个方法,但允许任何一种开发过程 和面向对象方法使用它。
9.1 面向对象方法学概述
面向对象方法具有下述4个要点(续): (3) 按照子类(或称为派生类)与父类(或称为基类)的 关系,把若干个对象类组成一个层次结构的系统 (也称为类等级)。在这种结构中,下层的派生类自 动具有和上层的基类相同的特性,这种现象称为继 承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。一 切局部于该对象的私有信息,都被封装在该对象类 的定义中,就好像装在一个不透明的黑盒子中一样, 在外界是看不见的,更不能直接使用,这就是“封 装性”。
面向对象方法是一种新的思维方法,它是把程 序看作是相互协作而又彼此独立的对象的集合。 这样就减小了语义断层:系统中解空间对象可以 直接模拟问题空间的对象,解空间与问题空间 的结构十分一致。

9.1 面向对象方法学概述
面向对象方法具有下述4个要点: (1)认为客观世界是由各种对象组成的,任何事物都 是对象,复杂的对象可以由比较简单的对象以某种 方式组合而成。因此,面向对象的软件系统是由对 象组成的。 (2)类(class)是对一组对象的抽象,集中了该组对象 的共同特性(一组数据和一组方法)。对象是类的 实例。
交 互

注 释
用 对 构 实 类 例 象 件 施 图 图 图 图 图 节 点 顺 协 状 活 序 作 态 动 图 图 图 图
用 接 类 例 口
协 作
活 动 类
组 件
统一建模语言UML
(1) 统一标准
UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的 正式标准,提供了标准的面向对象的模型元素的定义和表示。
(2) 面向对象
UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示 考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极 少使用的符号,也添加了一些新符号。 9.3 面向对象建模
(3) 可视化、表示能力强
9.3 面向对象建模
面向对象方法需要建立3种形式的模型:
1)描述系统数据结构的对象模型 2)描述系统控制结构的动态模型 3)描述系统功能的功能模型
在不同的应用问题中,这3种模型的相对重要程度会有 所不同,对象模型始终都是最重要、最基本、最核心的。 典型的软件系统组合了上述3方面内容: 使用数据结构(对象模型),执行操作(动态模型),并且完 成数据值的变化(功能模型)。 本课程介绍UML作为描述这些模型的语言.
事件指对象之间一次消息的传递

多个事件按照时间顺序可构成事件序列
消息 vs. 事件:静 vs. 动
9.2 面向对象的概念

消息与对象

一个对象能接收不同形式不同内容的多个消息。 相同形式的消息可以送往不同的对象。 对于相同形式的消息,不同对象可以有 不同的解释,可以作出 不同的反映。

消息与方法


对象接收到有效消息后,总会以某种行为做出适当反映。期间, 对象行为复用了类操作的代码实现 (即类方法)。 在某种程度上,消息与方法可视为同义词。但是,必须牢记: 消息与代码无关,而方法是操作的代码实现。
9.2 面向对象的概念
多态性( polymorphism) --含义



同一个操作可以是多个不同类的行为。 不同对象接收到同一个消息后,可产生完全不同的 反映。 同一个消息可调用不同的方法。
9.1 面向对象方法学概述

面向对象的方法学可以用下列方程来概括:
OO=objects +classes +inheritance +communication with messages
面向对象就是既使用对象又使用类和继承等机 制,而且对象之间仅能通过传递消息实现彼此 通信。 也可以说,只有同时使用对象、类、继承和消 息的方法,才是真正面向对象的方法。
3. 定义服务 服务也就是操作,UML描述操作的语法格式如下: 可见性 操作名(参数表): 返回值类型{性质串} 参数表是用逗号分隔的形式参数的序列。描述一个参数的 语法如下: 参数名: 类型名=默认值 当操作的调用者未提供实在参数时使用默认值。 与属性类似,在类中也可定义类作用域操作:这种操作只 能存取本类的类作用域属性。 “- set_counters(Integer=0, Integer): Integer {-1,0}”
9.1 面向对象方法学概述

对象?(面向对象语言)
在问题空间中,对象是…… • 现实世界中存在的实体 • 应用所关心的抽象概念、规则、事件、或者具有明 确边界和意义的具体事物
在解空间 (计算机系统) 中,对象是…… • 问题空间中的对象在计算机系统中的表示 • 封装 (encapsulation) 了数据和行为的通信单位
9.1 面向对象方法学概述
•面向对象方法学的要点
现实世界
领域知识 抽象
生成知识 设计知识 模拟 解空间 (计算机系统) 实现域
问题空间 问题域百度文库
9.1 面向对象方法学概述

客观世界中的实体既具有静态的属性又具有动 态的行为。然而传统语言提供的解空间对象实 质上却仅是描述实体属性的数据,必须在程序 中从外部对它施加操作,才能模拟它的行为。
9.4.1 类图的基本符号 2. 定义属性
UML描述属性的语法格式如下: [可见性] 属性名: 类型名=初值 {性质串} ——属性的[可见性]:
公有的(public) (+) 、 私有的(private) (-) 保护的(protected) (#) 注意: 没有默认的可见性。
——类型名表示该属性的数据类型,它可以是基本数据 类型,也可以是用户自定义的类型。 ——{性质串}明确地列出该属性所有可能的取值,也可 以说明属性的其他性质。 e.g. “+婚否:布尔=假{真,假}”
9.2 面向对象的概念

类的两种图形记法:
类名 属性:
例: Teacher类
teacher
操作
Username Password
属性: classes 操作:
Addclass() Removeclass()
9.2 面向对象的概念

对象

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



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



类是对一组对象的抽象,集中了该组对象的共同特性。 在构造软件时,类实际上是具有特定功能的模块,其代码由该 种所有对象所共享。 类 vs. 对象:静 vs. 动。
9.4 对象模型
对象模型表示静态的、结构化的系统的“数据” 性质。它是对模拟客观世界实体的对象以及对 象彼此间的关系的映射,描述了系统的静态结 构。
用UML表达的对象模型由类图(类和类间关系)构 成.
9.4.1 类图的基本符号
类图描述类及类与类之间的静态关系。类图是一种 静态模型,它是创建其他UML图的基础。一个系统 可以由多张类图来描述,一个类也可以出现在几张 类图中。 1. 定义类 UML中类的图形符号为长方形,用两条横线把长方 形分成上、中、下3个区域(下面两个区域可省 略),3个区域分别放类的名字、属性和服务,如 图9.5所示。
统一建模语言UML
2000年 (计划的较小修订) 1999
<documents> UML 1.4 <documents> UML 1.3 <documents> UML 1.2 <documents> UML 1.1 <documents> UML1.0 <documents> UML 2.0
1998 1997年9月最后 提交给OMG 1997年1月最 初提交给 OMG 1996 1995

类 (教师)

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

实际上,类是创建对象的模板!
9.2 面向对象的概念

消息和事件(message & event) 消息是对象之间进行通信的构造或结构

消息分为请求消息和完成消息两种 (由消息模式描述) 消息模式:发送对象、接收对象、内容
第九章 面向对象方法学引论
9.1 9.2 9.3 9.4 9.5 9.6 9.7 面向对象方法学概述 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 3种模型之间的关系
9.1 面向对象方法学概述
-- 源于20世纪60年代后期出现的面向对象编程语言 Simula-67(类和对象的概念),逐步形成了面向对象 方法学 。到了20世纪90年代,面向对象方法学已经 成为人们在开发软件时常选的范型。
9.4.1 类图的基本符号 2. 定义属性
UML描述属性的语法格式如下: [可见性] 属性名: 类型名=初值 {性质串} ——类的属性中还可以有一种能被该类所有对象共享的 属性,称为类的作用域属性,也称为类变量。C++语言 中静态数据成员就是这样的属性,在类图中表示为带下 划线的属性。 例如:发货单类的类变量“货单数”: -货单数:Integer
2001年 计划的重要修订 文字上的修改 没有显著的技 术变化
精华相关
<documents> UML 0.9
<documents> Unified Method 0.8
文档版类
UML
事物
关系

结构 事物
行为 事物 状 态 机
组织 事物
辅助 事物
关联 关系
依赖 关系
泛化 关系
实现 关系
静态 图
动态 图
9.4.1 类图的基本符号
图9.5 表示类的图
9.4.1 类图的基本符号
为类命名时应该遵守以下几条准则: (1) 使用标准术语。 例如,“交通信号灯”比“信号单元”这个名字好, “传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。 例如,“库房”比“房屋”或“存物场所”更确切。 (3) 必要时用名词短语作名字。 例如,“最小的领土单元”、“储藏室”、“公司员 工”等都是比较恰当的名字。 总之,名字应该是富于描述性的、简洁的而且无二义性的。

9.2 面向对象的概念


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

对象 定义:是类的实例,是属性+方法封装在一起构 成的实体。 对象的三要素是:名称+属性+方法
例:三角形对象
triangle (10,50) (30,60) (20,30) Draw Move(Δx, Δy) Contains?(a point)
相关文档
最新文档