09 面向对象方法学引论
第九章面向对象方法学引论

– 模型化是理解一个复杂系统的工具; – 模型是系统早期抽象的重要结构;
• 常用的面向对象分析与设计模型
– – – – Rumbaugh 等人的 OMT 模型 Coad 和 Yourdon 的模型 Booch 开发模型 UML 统一建模语言
Rumbaugh的对象模型化技术OMT (object modeling technique) • 对象模型化技术的三类模型:对象 模型、动态模型和功能模型。
商品查询
查询商品价格 查询商品成分
顾客
查询商品信息
库存系统
出售商品
预售商品
售货员
网上销售商品
售货管理
总账系统
打折销售商品
用况规格说明:销售商品
说明 顾客持所欲购买的商品至收银台结帐,店员刷商品条 码后,根据数量及单价计算总金额商品售出后,商品 编码、单价、总金额存入电脑,数据记载到“库存系 统”和“总帐系统”中(含预售、网络购物、打折销 售)。。
部署图
活动图
团队 团队标识 承担工作
部门 部门标识 部门名称
1 0..* 项目
0..* 1..* 雇员
雇员标识: char 姓名: char 职务: char 工资: long 0..*
1
1..*
客户 客户标识 客户名称 客户地址 客户电话 客户代表
1..*
1
0..* 项目标识 项目名称
1 1..*
设计模型
实现模型
用户、顾客、开发者等
软件工程方法的一个重要概念 : 事务分离原则
分析模型与设计模型分开建立。 分析模型主要描述系统将要做什么,完全 不考虑具体的实现方法和技术细节。 设计模型描述在给定的实现环境下如何创 建一个特定的软件系统。 前者确定系统的行为,后者给出系统实现的 蓝图。 需求定义模型主要用于获取和处理系统的整 体需求。
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
• 具有相同结构、操作,并遵守相同约束规则 的对象聚合成一组,这组对象集合称为对象 类,简称类。
第九章 面向对象方法学引论

对象是主动的。
实现了数据封装。 本质上具有并行性。 模块独立性好。
2、面向对象的概念 ——类
类(Class)
具有相同属性和服务的一组对象的集合,它为属于该 类的全部对象提供了统一的抽象描术。其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在客观世界中实际 存在的类的实例。 例如:在学校教学管理系统中,“学生”是一个类,一个 具体学生“张明”是一个对象,也是“学生”类的一个实 例。
同类对象具有相同的属性和服务,是指它们的定义形 式相同,而不是说每个对象的属性值都相同。 类是静态的,类的存在、语义和关系在程序执行前就 已经定义好了。 对象是动态的,对象在程序执行时可以被创建和删除。 在面向对象的系统分析和设计中,并不需要逐个对对 象进行说明,而是着重描述代表一批对象共性的类。
第九章 面向对象方法学引论
黄冈师范学院
主要内容 面向对象方法学概述 面向对象的概念
对象、类、属性、方法、封装、继承、多态、消息等
面向对象建模
对象模型、动态模型、功能模型 可视化建模与Uml语言
3种模型之关的关系
面向对象方法与结构化方法
结构化方法 问题域
自然 语言
面向对象方法
问题域
第9章 课程内容提纲
1 面向对象方法学概述
2 面向对象的概念
3 面向对象建模 4 对象模型 5 态动建模 6 功能建模
7 3种模型之间的关系
2、面向对象的概念 —— 对象
对象(Object)
对象是问题域或实现域中某些事物的一个抽象,它反 映该事物在系统中需要保存的信息和发挥作用;它是 构成系统的一个基本单位,由一组属性和对这组属性 进行操作的一组服务组成。
09面向对象方法学引论

对象模型
表示关系的符号
关系种类 – 关联
–
–
关联的属性
进一步说明对象间关联的性质
对象模型
表示关系的符号
关系种类 – 聚合(聚集)
– – 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 包括共享聚合和组合聚合。
对象模型
表示关系的符号
关系种类 – 泛化
– – 继承性的体现。 通常包含一个基类和几个子类。基类表示较为一般、普通的概念; 子类则继承基类的属性和操作,但又具有自身的属性和操作。
面向对象方法学概述
面向对象软件的工程
按人类习惯的思维方法,以现实世界中客观存在的事 物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、 封装等。 以易于理解的方式表达软件系统,建立问题域模型, 使设计出的软件尽可能直接地描述现实世界,具有更 好的可维护性。 面向对象=对象+类+继承+通信 如果一个软件系统采用这些概念来建立模型并予 以实现,那么它就是面向对象的。
面向对象概念
其他概念
继承(inheritance) – 在现存类定义的基础上,建立新定义类的技术。 – 新类的定义可以是现存类所声明的数据、定义与新 类所增加的声明的组合。新类复用现存类的定义, 而不要求修改现存类。 – 现存类可当作父类(泛化类、基类或超类)来引用 , 则新类相应地可当作子类(特化类、子女类或派生 类)来引用。 – 实现继承机制的原理
张海藩《软件工程导论》(第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.2.2 其它概念
2、实例(instance) 对象泛指一般的对象,实例指一个具体的对象。 3、消息(message) 消息就是要求某个对象执行在定义它的那个类中 所定义的某个操作的规格说明。由3部分组成: 接收消息的对象 消息选择符 零个或多个变元。 如:MyCircle.Show(GREEN);
OOA
OOD
OOP
现实世界
面 向 OOA 对 象 开 OOD 发 方 法 OOP
结 构 化 开 发 方 法
结构化 分析
结构化 设计
结构化 编程
计算机世界
9.1.1 面向对象方法学的要点
1、OOA法 就是要解决“做什么”的问题。OOA 法的基本任务就是要建 立三种模型:
对象模型(信息模型) 定义构成系统的类和对象,它们的属性与操作。 状态模型(动态模型) 描述任何时刻对象的联系及其联系的改变,即时序。常 用状态图, 事件追踪图描述。 功能模型(函数模型) 描述系统内部数据的传送处理。 显然,在三大模型中,最重要的是对象模型。
9.3 面向对象建模
在整个开发过程中,3种模型一直都在发展、完善。 在面向对象分析过程中,构造出完全独立于实现的 应用域模型;在面向对象设计过程中,把求解域的 结构逐渐加入到模型中;在实现阶段,把应用域和 求解域的结构都编成程序代码并进行严格的测试验 证。 下面分别介绍上述3种模型。
第9章 面向对象方法学引论
现存类定义 父类(基类) 新类定义 子类(派生类)
子类A
子类B
继承性
继承性描述
9.2.2 其它概念
8、多态性(polymorphism) 多态性是指相同的操作或函数,过程作用于不同的对象上并 获得不同的结果。即相同的操作的消息发送给不同的对象时, 每个对象将根据自己所属类中所定义的操作去执行,故产生不 同的结果。 C++语言中,多态性是通过虚函数来实现的。虚函数机制使 得程序员能在一个类等级中使用相同函数的多个不同版本,在 运行时刻才根据接收消息的对象所属于的类,决定到底执行哪 个特定的版本,这称为动态联编,也叫滞后联编。
软件工程导论第9章面向对象方法学引论

软件⼯程导论第9章⾯向对象⽅法学引论第9章⾯向对象⽅法学引论传统的软件⼯程⽅法学曾经给软件产业带来巨⼤进步,部分地缓解了软件危机,使⽤这种⽅法学开发的许多中、⼩规模软件项⽬都获得了成功。
但是,⼈们也注意到当把这种⽅法学应⽤于⼤型软件产品的开发时,似乎很少取得成功。
在20世纪60年代后期出现的⾯向对象编程语⾔Simdla_67中⾸次引⼊了类和对象的概念,⾃20世纪80年代中期起,⼈们开始注重⾯向对象分析和设计的研究,逐步形成了⾯向对象⽅法学。
到了20世纪90年代,⾯向对象⽅法学已经成为⼈们在开发软件时⾸选的范型。
⾯向对象技术已成为当前最好的软件开发技术。
9.1⾯向对象⽅法学概述9.1.1 ⾯向对象⽅法学的要点⾯向对象⽅法学的出发点和基本原则,是尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界解决问题的⽅法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能⼀致。
客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。
我们把客观世界中的实体抽象为问题域中的对象(object)。
因为所要解决的问题具有特殊性,因此,对象是不固定的。
⼀个雇员可以作为⼀个对象,⼀家公司也可以作为⼀个对象,到底应该把什么抽象为对象,由所要解决的问题决定。
从本质上说,⽤计算机解决客观世界的问题,是借助于某种程序设计语⾔的规定,对计算机中的实体施加某种处理,并⽤处理结果去映射解。
我们把计算机中的实体称为解空间对象。
显然,解空间对象取决于所使⽤的程序设计语⾔。
例如,汇编语⾔提供的对象是存储单元;⾯向过程的⾼级语⾔提供的对象,是各种预定义类型的变量、数组、记录和⽂件等等。
⼀旦提供了某种解空间对象,就隐含规定了允许对该类对象施加的操作。
从动态观点看,对对象施加的操作就是该对象的⾏为。
在问题空间中,对象的⾏为是极其丰富多彩的,然⽽解空间中的对象的⾏为却是⾮常简单呆板的。