面向对象技术概述
面向对象技术的概说
的 关 键 技 术 及 其 3 模 型 的 关 系 、建 模 语 言 的 优 点 和 体 现 在 面 向 对 象 程 序 设 计 语 言 中 的 基 本 特 征 。 种
计算机 程序 设计 的一种 新颖 的思 维方 法 .是 解 决软 件 开发 所 面临 困难 的最 有希 望 的方法 之一
1 2 设 计 类 等 级 .
强 的表达能力 、更 符合 人类 的思维 模式 ,问题 的关
键 即是 如 何 提 升 计 算 环 境 的抽 象 层 次 面 向对 象 技 术 ( jc—retdTcnlg) 调 O etOin e ehooy强 b 在 软 件 开 发 过 程 中 面 向 客 观 世 界 或 问 题 域 中 的 事
2 1年 2月 01
Fe b.2 l 01
热 带 农 业 工 程
T ROP C I AL AGRI CUI URAL ENGI J T NEERI NG
第 3 5卷第 1 期
Vo . 5,No 1 13 .
面 向对 象技术的概说①
王 秀 明②
( 南大学信 息科 学技 术 学院 海 南海 口 5 10 ) 海 7 7 0
软件是 对客 观世 界 中问题空 间与解 空 间的具 体 描 述 .是 客观 事 物 的 一 种 反 映 ,是 知 识 的 提 炼 和 “ 固化 ” 。客观世 界是 不 断变化 的 ,因此 。构 造性 和 演化 性是软 件 的本质特 征 如何 使软件 模 型具 有更
法 的提 出 ,是软 件开 发方法 的一 次革 命 .它代 表 了
面向对象技术在软件开发中的应用
面向对象技术在软件开发中的应用随着计算机技术的发展和计算机的广泛应用,软件应用越来越广泛,人们对于软件开发的要求也越来越高。
在软件开发中,面向对象技术被广泛应用,成为开发的重要手段之一。
本文将详细介绍面向对象技术在软件开发中的应用。
一、面向对象技术的概念面向对象技术是一种基于对象的程序设计方法,它将系统看作一组对象的集合,每个对象都有自己的状态和行为,通过对对象的状态和行为进行抽象和封装,实现代码的重用和更好的可维护性。
面向对象技术主要包括以下三个特性:封装:在面向对象技术中,每个对象都有自己的数据和方法,并将其封装起来,以避免其他对象直接访问和改变它们的值。
继承:通过继承可以将一个类的属性和方法继承到另一个类中,实现代码的复用,减少代码的冗余。
多态:多态是指同一种方法可以被不同的对象以不同方式调用,通过多态可以提高代码的可扩展性。
二、面向对象技术在软件开发中有以下几个常见的应用:1.面向对象分析(OOA)面向对象分析(OOA)是一种软件开发方法,其主要目的是将问题域转换为面向对象的模型。
通过面向对象分析,可以将需求变成可执行的模型,同时有效的抵制需求波动造成的影响。
在OOA中,首先需要对问题进行分析,确定系统的需求和功能,然后通过细化这些需求和功能,逐步将其转化为面向对象的模型。
最终得到的模型就可以直接映射到程序代码中。
2.面向对象设计(OOD)面向对象设计(OOD)是一种根据面向对象技术的相关规定对编程进行设计的方式。
这种设计方式将业务领域中的复杂性进行分析与设计,将其转化为面向对象的模型。
在面向对象设计中,首先要创建一个类图,根据需求,在类图上添加所需的类,然后建立类之间的关系。
在建立好类图之后,开始设计每个类的成员方法和属性,最终得到模型,可以直接映射到程序代码中。
3.面向对象编程(OOP)面向对象编程(OOP)是一种开发应用程序的编程技术,通过面向对象编程,可以将任务的操作对象看作是一个独立的对象。
面向对象技术概述
1.1 知识要点1.面向对象技术的基本概念∙面向对象技术是以对象为基础、以事件或者消息来驱动对象执行处理的程序设计技术。
∙对象是包含客观事物特征的抽象实体,是属性和行为的封装体。
在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。
∙类是对具有相同属性和行为的一组对象的抽象描述。
∙事件是系统产生的动作或是运行应用程序产生的动作。
事件通过消息描述,消息是描述事件发生的信息。
∙消息是对象间交互的手段,是要求某个对象执行某个操作的规格说明。
2.面向对象技术的基本特征∙抽象性是指忽略事物中与当前目标无关的非本质特征,而强调本质特征的特征。
∙封装性是指把对象的属性和行为封装在一起,并尽可能隐藏对象的内部细节的特征。
∙继承性是指特殊类的对象拥有其一般类的属性和行为的类与类之间层次关系的特征。
∙多态性是指不同对象收到相同消息时可以产生多种不同的行为方式的特征。
【重点】∙面向对象技术的概念。
∙类与对象的概念及关系。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
面向对象技术与Visual C++学习指导2【难点】∙类与对象的概念。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
1.2 习题解答1.什么是面向对象技术?【问题解答】面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。
它具有抽象性、封装性、继承性及多态性。
2.面向对象与面向过程程序设计有什么不同?【问题解答】面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。
(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。
(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。
面向对象的软件测试技术(转)
面向对象的软件测试技术(转)面向对象的软件测试技术相关知识点-面象对象(=objectoriented)技术1.对象和类l面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息l类就是一种代莱数据类型,就是设计的核心,就是通过抽象数据类型的方法去同时实现的一种数据类型l类是对某一对象的抽象,对象是某一类的实例,两者密切相关2.PCB、承继和多态性(1)封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难(2)承继:可以从一个类衍生至另一个类,派生类承继了父类和祖先类的数据成员和函数,减少了软件的可扩充性,并为代码器重提供更多了强有力的手段(3)多态性:多种表现形式,可以用‘一个对外接口,多个内在实现方法’表示。
一.面向对象测试模型1.面向对象测试的分类依据面向对象研发模型(面向对象分析、面向对象设计、面向对向编程),分成:(1)面向对象分析的测试(ooatest)、面向对象设计的测试(oodtest):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试(2)面向对象编程的测试(ooptest):对编程风格和程序代码同时实现展开测试,主要的测试内容在oounittest和oointegratetest中彰显(3)面向对象单元测试(oounittest):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是oointegratetest的基础(4)面向对象内置测试(oointergratetest):对系统内部的相互服务展开测试,例如成员函数间的相互作用,类间的消息传递。
不仅必须基于oounittest,还要参照ood、oodtest的结果(5)面向对象确认测试(oosystemtest)、面向对象系统测试(oosystemtest):最后阶段的测试,以用户需求为测试标准,借鉴ooa、ooatest的结果二.面向对象软件的测试策略1.面向对象分析的测试(1)面向对象分析是把e-r图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。
面向对象技术与UML
继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
电力系统面向对象技术基本概念(自学)
2014-5-27
张沛超,上海交通大学电气工程系
25
面向对象方法的主要特点:
8、通过关联(association)表达对象 之间的静态关系。
2014-5-27
张沛超,上海交通大学电气工程系
26
什么是面向对象
若根据面向对象方法的特征来加以定义, 可给出如下定义: 面向对象方法学是一种运用对象、类、 继承、封装、聚合、消息发送、多态 等概念来构造系统的软件开发方法。 Coad和Yourdon给出了一个定义: “面向对象=对象+类+继承+通信”。
2014-5-27 张沛超,上海交通大学电气工程系 23
面向对象方法的主要特点:
6、复杂的对象可以用简单的对象作为 其构成部分,称为聚合(aggregation)。
2014-5-27
张沛超,上海交通大学电气工程系
24
面向对象方法的主要特点:
7、对象之间通过消息(message)进行 通信,以实现对象之间的动态联系。
2014-5-27 张沛超,上海交通大学电气工程系 22
面向对象方法的主要特点:
5、通过在不同程度上运用抽象的原则(较 多或较少的忽略事物之间的差异),可 以得到较一般的类和较特殊的类。特殊 类继承(inheritance)一般类的属性和 服务。面向对象方法支持对这种继承关 系的描述和实现,从而简化系统的构造 过程及其文档。 特殊类和一般类虽然具有同名的服务, 但其具体含义在特殊类中可能有所不同, 这种现象成为多态(polymorphism)。
张沛超,上海交通大学电气工程系
15
传统方法学的主要问题
4 软件往往不能真正满足需要
很多软件工程师在回顾往事时,最
第2章 面向对象技术与UML-郭
在结构化方法中,现实世界被映射为功能(函数)的集合。
结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程和 算法的分解上(功能分解)。 缺点:需求变动、维护困难
2.1 面向对象技术概述
面向对象方 法的引入: 软件复杂性 的增长, 使软件开发 越来越困难。 面向对象的 方法按照人 类的自然思 维的方式, 面对客观世 界建立软件 模型。
对象的标识(名字)
每一个对象都有一个唯一的标识, 即使其状态有可 能与其它对象一样。
no1 no2 no3
对象的状态(数据属性)
一个对象的状态是它反映于现实世界的一系列 属性:
基本描述 载客人数 它与其它对象的关系 任一时刻的历史状态
飞机类型 飞机驾驶员 所属的航空公司
可能的状态: 停泊 班机 747 飞行 着陆
继承的描述
子类可以继承父类的全部属性与操作,并 可以添加或重新定义所继承的方法。 如果是重新定义,称为覆盖。
注意:覆盖和重载是不同的。
覆盖的例子
重载的例子
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(){ return “address is”+address; } }
6. 多态性
定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫
《面向对象技术4》
2、思维组织模式 系统分析的本质是一种思维过程,就是考虑问题的次 序、条理、层次等方面的模式。在传统的分析模式中, 从问题空间到分析结果的映射是间接的,因为分析方法 所决定的思维模式与人们所采用的思维模式有一定的距 离,为了减少这些距离,只好进行转换,以利于分析结 果的传递。
从根本上统一思维模式的方法是在系统开发的各个环 节中,统一采用人类原有的思维组织模式。人类典型的 思维过程是由三部分来进行组织的: (1)从现实世界中区分出特定的客体及其属性; (2)对客体的整体和组成部分加以区分; (3)对不同种类的客体给出表示,在此基础上并加以区 分。 面向对象的分析方法就是建立在这3个来自人类自己思 维组织模式之上,依照客观世界本来的规律来开发应用 系统的。
3)对候选对象考察什么? 对候选对象,能否认定它是一个对象,要考虑: (1)需要记忆:即系统是否有必要记忆对象的某些或全 部成分; (2)需要服务:即系统是否有必要对该对象的行为提供 服务; (3)多于一个属性:若只有一个属性的对象,通常应看 成其它对象的属性; (4)共有属性:即对于一种对象所有的实例,能否认定 一组为这些实例所共有的属性;
一、主要数据结构(多层次多组元的模型) 面向对象的分析和面向对象的设计之间并没有象传统开发方法那 样有明显的界限,但的确存在差别,即在抽象程度上、先后顺序及 侧重点的差别。这种特点与采用了一致的思维方式有关,也与面向 对象模式本身就状态交换和进化的认识有关。 在Coad方法的面向对象的分析中,有5种活动: (1)标识对象; (2)识别类的结构; (3)确定主题; (4)定义属性; (5)定义服务。
(3)图:能收集到一切图,如结构图、接口图、系统构 件图、高层次的数据流图和控制流图等,根据这些图再 用图表和联线画出内容丰富的图来,以形成问题空间的 初始框架。
面向对象技术
二面向对象技术的基本概念
1.对象 对象是客观世界中的一个实体,它具有以下特性: (1)有一个名字以区别其它对象; (2)有一个状态用来描述它的某些特征; (3)有一组操作,每个操作决定对象的一种功能或行为; (4)对象的操作可分为两类:一类是自身所承受的操作, 一类是施加于其它对象的操作。 简而言之,对象是其自身具有的状态特征及可以对这 些状态施加的操作结合在一起所所构成的独立实体。 在面向对象技术中的“对象”术语,既可能泛指客观 世界中的某些事物,也可能专指它们在系统中的抽象。 在系统中,对象是系统中用来描述客观事物的一个实 体,它是构成系统的一个基本单位。一个对象有一组 属性和对属性进行操作的一组方法构成。
(3)面向对象的实现 面向对象的实现(编程)是要在面向对象设计的 基础上,选择一种面向对象的编程语言(c++,Java 等),把设计作适当映射并改写成相应的程序。 (4)面向对象的测试 面向对象的测试是指在测试过程中运用面向对象 技术,进行以对象(或类)为核心的测试。 (5)面向对象的维护 面向对象的维护是指在软件运行之后的正常活动, 软件维护不是一种“简单”的修理,而是一种复杂的 开发活动,它同样需要经过分析、设计、实现和测试, 因此是一种系统更新的迭代过程。
(1)一个清楚的边界,所有对象内部组件的范围被限定 在这个边界内; (2)一个接口,这个接口描述这个对象和其它对象之间 的相互作用; (3)受保护的内部实现,这个实现给出了由软件对象提 供的功能的细节,实现细节不能在这个的范围被限定 在定义这个对象的类的外面访问。 面向对象系统中的封装单位是对象,即主要是对象的 封装。 6.继承 继承:继承所表达的就是一种对象类之间的相互关系, 它使得某类对象可以继承另外一类对象的特征和能力。 若类间具有继承关系,则它们之间应具有下列几个特 征:
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
习题-8-面向对象技术概述-参考答案
第八章习题参考答案1.请描述面向对象分析设计方法与结构化分析设计方法的特点与区别。
答:1)面向对象软件过程方法是把系统看成对象的集合,系统功能通过对象协作完成;2)结构化思想,是把系统看成方法调用的集合,系统功能通过过程分级调用完成;3)面向对象软件过程方法设计过程是自底向上的。
逐步构建出系统框架;结构化思想是自顶向下的逐步细化的过程。
2.请简单论述一下你对面向对象基本概念的理解。
答:主要是对面向对象的概念进行解释。
包括封装、继承、多态、重载等。
具体解释请参考教材。
3.请举例说明依赖、关联、聚集、组合之间的区别。
答:(1)关联是表明对象之间存在的结构性关系。
例如,一个班级由多名学生组成,则班级与学生之间存在关联关系。
一般表现为学生是班级的一个属性。
(2)依赖是比关联关系弱的一种关系,它只出现在类方法的参数或局部变量中。
例如,人和螺丝刀存在类的依赖关系,人的使用工具方法中会带入螺丝刀做为参数。
(3)聚集关系是一种特殊的关联关系,它表明整体与局部之间的关系。
例如,键盘和计算机之间存在聚集关系,因为键盘是计算机的一个组成部分。
(4)组合关系是一种强烈的部分和整体之间的关系,是一种特殊的聚集关系。
如果整体不存在,则部分就没有存在的意义了。
例如,鸟和翅膀之间的关系即为组合关系。
4.请运用一种学习过的面向对象语言编写一段代码,让它能够表示出来家庭与孩子之间的关系。
答:(提示,家庭与孩子之间是聚集关系)。
5.UML的英文全称是什么?它是由谁提出来的?答:UML的英文全称是Unified Modeling Language,作为Booch、OOSE和OMT方法的主要作者,Grady Booch、Ivar Jacoboson和James Rumbaugh一起工作,创立了UML (统一建模语言)0.9版本。
6.请简单描述一下什么是“UML4+1视图”,并对视图中的每个组成部分进行解释。
答:(略)。
面向对象技术概述
常用软件开发方法
面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。
消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。
面向对象分析
对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。
软件工程面向对象分析技术
的 个问题,才能最终把模型建立进来。
基
本
过
程
前一页
需求陈述
主
要
▪ 书写要点
内 容
▪ 例子
前一页
书写要点
需求陈述的内容包括:
需 求
• 问题范围
陈
• 功能范围
述
• 性能需求
• 应用环境
• 假设条件等
前一页
书写要点
需
求
书写需求陈述时,应该慎重选用名 词、动词、形容词和同义词;不可将实
陈 际需求和设计混为一谈。
软件工程学系列
软件工程面向对象分析技术
面向对象分析
分析的过程都是通过理解、表达和验证,提 取系统需求的过程。
首先,系统分析员通过与用户及领域专家的 充分交流,力求完全理解用户需求和该应用领域 的背景知识,并用某种无二义性的方式把这种理
解表达成文档资料。分析过程得出的最重要的文 档资料是软件需求规格说明(在面向对象分析中, 主要由对象模型、动态模型和功能模型组成)。
型,取款额,账单,访问。
前一页
建 立 对 象 模 型
前一页
筛选的标准
冗余:
如果两个类表达了同样的信息,则保留 在此问题域中最富于描述力的名称。
例如:用非正式分析法得出了34个候选 的类,其中储户与用户,现金兑换卡与磁卡 及副本分别描述了相同的二类信息,因此, 应该去掉“用户”、“磁卡”、“副本”等 冗余的类,仅保留“储户”和“现金兑换卡” 这两个类 。
对 能促使分析员考虑问题域的边缘情况,有
象 助于发现那些尚未被发现的类—&—对象。
模
在分析确定关联的过程中,不必花过
型
多的精力去区分关联和聚集。事实上,聚 集不过是一组特殊的关联,是关联的一个
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
面向对象的基本概念
在一般与特殊关系中,子类是父类的一个特例, 所以父类对象可以出现的地方,也允许其子类对 象出现。因此在运行过程中,当一个对象发送消 息请求服务时,要根据接收对象的具体情况将请 求的操作与实现的方法进行连接,即动态绑定
16
17
面向对象分析
Peter Coad和Edward Yourdon提出用下列等式识认面向对象 方法:
面向对象= 对象(object)+ 类(class)+ 继承(inheritance) + 通过消息的通信(communication with messages)
可以说,采用这四个概念开发的软件系统是面向对象的
是一种信息隐蔽技术,用户只能看见对象封装界面上的 信息,对象的内部实现对用户是隐蔽的。封装的目的是 使对象的使用者和生产者分离,使对象的定义和实现分 开
一个对象通常可由对象名、属性和操作三部分组 成
10
面向对象的基本概念
消息(message)
消息传递是对象间通信的手段,一个对象通过向另一个 对象发送消息来请求其服务。一个消息通常包括接收对 象名、调用的操作名和适当的参数(如果有必要的话)。 消息只告诉接收对象需要完成什么操作,但并不指示接 收者怎样完成操作。消息完全由接收者解释,接收者独 立决定采用什么方法完成所需的操作
6
面向对象的基本概念
7
面向对象的基本概念
类(class)
类是一组具有相同属性和相同操作的对象的集合。一个 类中的每个对象都是这个类的一个实例(instance)
类是创建对象的模板,从同一个类实例化的每个对源自都 具有相同的结构和行为8
面向对象的基本概念
9
面向对象的基本概念
封装(encapsulation)
面向对象技术概述
胡伟 (whu@)
什么是面向对象方法
一种软件开发方法。 面向对象方法的出发点和基本准则,是尽可能模
拟人类习惯的思维方式,使开发软件的方法与过 程尽可能接近人类认识世界解决问题的方法与过 程,也就是是描述问题的问题空间与实现解法的 解空间在结构上尽可能一致
2
什么是面向对象方法
11
面向对象的基本概念
继承(inheritance)
继承是类间的基本关系,它是基于层次关系的不同类共 享数据和操作的一种机制。父类中定义了其所有子类的 公共属性和操作,在子类中除了定义自己特有的属性和 操作外,可以继承其父类(或祖先类)的属性和操作, 还可以对父类(或祖先类)中的操作重新定义其实现方 法
19
注意,执行者与用户是不同的两个概念,一个用 户可以扮演几个角色(执行者),一个执行者可 以是用户,也可以是其他系统(应用程序或设 备)。得到的用况必须进行复审,以使需求完整
20
分析过程
标识类和对象
类和对象来自问题领域 可以先标识候选类,然后进行筛选
21
定义类的结构和层次
类的结构主要有两种: 一般— 特殊(generalization— specialization)结构和整体—部分(whole—part)结构
12
面向对象的基本概念
13
面向对象的基本概念
多态性(polymorphism)
多态性是指同一个操作作用于不同的对象上可以有不同 的解释,并产生不同的执行结果。例如“画”操作,作 用在“矩形”对象上,则在屏幕上画一个矩形,作用在 “圆”对象上,则在屏幕上画一个圆。也就是说,相同 操作的消息发送给不同的对象时,每个对象将根据自己 所属类中定义的这个操作去执行,从而产生不同的结果
1. 获取客户对系统的需求:包括标识场景和用况, 以及建造需求模型
2. 用基本的需求为指南,来确定类和对象(包括属 性和操作)
3. 定义类的结构和层次(继承关系) 4. 建造对象—关系模型 5. 建造对象—行为模型 6. 利用用况/场景来复审分析模型
18
分析过程
获取客户对系统的需求
需求获取必须让客户与开发者充分地交流,这里介绍一 种采用用况来收集客户需求的技术。分析员首先标识使 用该系统的不同的执行者(actor),这些执行者代表使 用该系统的不同的角色。每个执行者可以叙述他如何使 用系统,或者说他需要系统提供什么功能。执行者提出 的每一个使用场景(或功能)都是系统的一个用况的实 例,一个用况描述了系统的一种用法(或一个功能), 所有执行者提出的所有用况构成系统的完整的需求
一般—特殊结构是一种分类结构,反映了类间的一般与 特殊的关系。一般类与特殊类之间是一种“is a”的关系, 如:汽车是一种交通工具。同样,特殊类还可以分为更 特殊的类,这样可形成类的层次结构
整体—部分结构反映了类间的整体与部分关系。值得注 意的是,整体—部分关系是对对象而言的,而不是对类 的。整体—部分关系是一种“has a ”的关系,如“汽车” 有“发动机”。同样,整体—部分结构也具有层次结构
3
面向对象方法优点
从认知学的角度来看,面向对象方法符合人们对 客观世界的认识规律。
面向对象方法开发的软件系统易于维护,其体系 结构易于理解、扩充和修改。
面向对象方法中的继承机制有力支持软件的复用
4
面向对象的基本概念
对象/实例(object/ instance) 类(class) 封装(encapsulation) 继承(inheritance) 多态(polymorphism) 动态联编(dynamic binding) 消息(message)
14
面向对象的基本概念
动态绑定(dynamic binding)
动态绑定是指在程序运行时才将消息所请求的操作与实 现该操作的方法连接起来
传统的程序设计语言的过程调用与目标代码的连接(即 调用哪个过程)放在程序运行前(即编译链接时)进行 (称为静态绑定),而动态绑定则是把这种连接推迟到 运行时才进行
5
面向对象的基本概念
对象(object)
对象是指一组属性以及这组属性上的专用操作的封装体 属性(attribute)(对象的静态特征)通常是一些数据,
有时它也可以是另一个对象。每个对象都有它自己的属 性值,表示该对象的状态。对象中的属性只能通过该对 象所提供的操作来存取或修改。 操作(operation)(对象的动态特征,也称方法或服务) 规定了对象的行为,表示对象所能提供的服务