第1章 面向对象方法概论共61页

合集下载

Part1_Chap01 OO方法概论2014-03-05

Part1_Chap01 OO方法概论2014-03-05
问题域客观存在的事物,以及对所要解决的问题产生 正确的理解,包括弄清事物的属性、行为及彼此之间 的关系,并找出解决问题的方法。
描述:用一种语言把人们对问题域中事物的认识、对问
题及其解决方法的认识描述出来。最终的描述必须使 用一种能被计算机读懂的语言,即计算机语言。
1.2 从认识论看面向对象方法的形成(2)
公司人员 姓名 身份证号码 · · · · · ·
由继承机 制保证
继承简化了人 们对事物的认 识和描述,非 常有益于软件 复用,是OO技 术提高软件开 发效率的重要 原因之一。
15
职员 工资 · · · · · · · · · · · ·
继承关系的语义:“is a kind of”
1.3 面向对象方法的基本概念(4)
卡车 轿车
2. 类
1.3 面向对象方法的基本概念(3)
3. 封装 把对象的属性和操作结合成一个独立的系统单位,
并尽可能隐蔽对象的内部细节。只是向外部提供接 口,降低了对象间的耦合度。
售报亭
报刊A 属 报刊B 性 … 钱箱
顾 客
服 报刊零售 务 款货清点
由封装机制保证: 数据不能被对象的 使用者直接访问。 只允许通过由对象 提供的方法或代码 访问数据。
抽象
属性是用来描述对象性质的 一个数据项。 操作是用来描述对象行为的一个 动作序列。 对象标识就是对象的名字。
1.3 面向对象方法的基本概念(2)
类是具有相同属性和操作的一组对象的集合,它 抽象与分类: 为属于该类的全部对象提供了统一的抽象描述, 抽象忽略事物的 其内部包括属性和操作两个组成部分。类的作用 非本质特征,只 是用来创建对象,对象是类的一个实例。 注意那些与当前 不同程度的抽象可得到不同层次的分类 目标有关的本质 特征,从而找出 运输工具 事物的共性。 较多地注 意事物之 把具有共同性质 间的差别 车辆 较多地忽 轮船 飞机 的事物划分为一 得到较特 略事物之 类,得出一个抽 殊的类 间的差别 汽车 火车 象的概念,叫做 得到较一 般的类 分类。

面向对象技术-01概述

面向对象技术-01概述

1.1 软件危机
图1.1引入同一变动付出的代价随时间变化的趋势
1.2 对软件开发的基本认识
软件系统开发包括:
软件开发过程
软件需求、总体设计、详细设计、代码实现、测试、最 终产品提交、软件维护及再开发。
软件开发过程中所涉及的各种资源

参与开发的各种工作人员
硬件资源 软件资源
这两部分相互作用形成了完整的开发过程。 目前软件开发中存在的问题往往是由于在这两方面上 的控制不当或协调不一致造成的。
目前使用得最广泛的软件工程方法学,分别是传统方 法学和面向对象方法学。
1.6 面向对象技术
软件开发中的两大难题
如何超越程序复杂性障碍 如何在计算机世界中自然地表示客观世界, 即对象模型
面向对象(Object-Oriented,简称OO) 的基本思想是:对问题域进行自然分割, 以更接近人类思维的方式建立问题域模型, 从而使设计出的软件尽可能直接描述现实 世界,具有更好的可维护性,能适应用户 需求的变化。
面向对象技术UML教程
第1章 面向对象技术概述
主讲:严冬梅
第一章 面向对象技术概述
1.1 软件危机 1.2 软件开发的基本认识 1.3 软件的固有复杂性 1.4 控制软件复杂性的基本方法
1.5 消除软件危机的途径
1.6 面向对象技术
1.7 面向对象领域中的基本概念
1.8 面向对象方法学
1.7 面向对象领域中的基本概念
假设类Polygon,表示二维图形,如图所示: 可以为Polygon定义操作getArea,该操作返 回对象的面积。 则我们可派生一些类,如Triangle, Rectangle和Hexagon,都是Polygon的子类。

UML第1章 面向对象方法概论

UML第1章 面向对象方法概论

1.3
面向对象开发的概念
面向对象开发是现实世界中以抽象为基础的 软件思维的一种崭新方式。面向对象开发的本质 是应用领域概念的鉴别和组织,而不是它们在一 种程序设计语言中的最终表示。
1.3.1
面向对象方法学
• • • •
分析 系统设计 对象设计 实现
1.3.2 • 对象模型 • 动态模型 • 功能模型
• 所谓“描述”是指用一种语言把人们对问题域 中事物的认识、对问题及其解决方法的认识描 述出来。最终的描述必须使用一种能够被机器 读得懂的语言,即编程语言。
1.2.2 • • • • • • 标识 分类 多态性 继承 封装 抽象
对象的特性
1.2.3
软件工程学的作用
• 软件工程学从认识事物方面看,它在分析阶段 提供了一些对问题域的分析认识方法。从描述 事物方面看,它在分析和设计阶段提供了一些 从问题域逐步过渡到编程语言的描述手段 。 • 传统的软件工程方法(图1-1)与面向对象的 软件工程方法(图1-2)比较
问题域 需求分析 总体设计和详细设计 编程和测试 软件维护
图1-1
问题域 自然语言 面向对象的编程语言 OOA OOD OOP OOT 计算机
图1-2
• 传统的软件工程方法: 1)需求分析 2)总体设计和详细设计 3)编程和测试 4)软件维护
• 面向对象的软件工程方法 1)面向对象的分析 2)面向对象设计 3)面向对象的编程 4)面向对象的测试 5)面向对象的软件维护
• 面向对象方法的主要优点是 : (1)与人类习惯的思维方法一致 (2)稳定性好 (3)可重用性好
(4)可维护性好 (5)面向对象的软件稳定性比较好 (6)面向对象的软件容易修改 (7)面向对象的软件容易理解 (8)易于测试和调试

面向对象课件第一章

面向对象课件第一章

要点二
场景二
图形绘制。假设有一个Shape接口作 为父接口,它有一个draw()方法。可 以创建多个实现类如Circle、 Rectangle等,并分别实现draw()方 法来绘制不同的图形。这样可以通过 Shape类型的引用来指向不同的实现 类对象,并调用它们的draw()方法, 从而实现多态。
要点三
将一个复杂对象的构建与它的表 示分离,使得同样的构建过程可 以创建不同的表示,适用于需要 构建复杂对象且构建过程需要灵 活控制的场景。
观察者模式
定义对象间的一种一对多的依赖 关系,当一个对象的状态发生改 变时,所有依赖于它的对象都得 到通知并被自动更新,适用于实 现事件驱动编程、GUI系统、异 步编程等场景。
尽量减小try语句块的范围,只 包含可能抛出异常的代码,避
免捕获不必要的异常。
合适的异常类型
根据具体情况选择合适的异常 类型,避免抛出过于笼统的异 常。
提供详细的错误信息
在抛出异常时,提供详细的错 误信息,有助于定位和解决问 题。
避免空catch块
避免编写空的catch块,应该至 少记录错误信息或采取其他恢 复措施。
实现方式
多态的实现通常依赖于继承和方法重写。当一个子类重写父类的方法时,如果通过父类类型的引用来调用该方法, 将会执行子类中的方法实现。此外,还可以使用接口来实现多态,即一个类可以实现多个接口,并且可以根据实 际对象的类型来调用相应的方法。
应用场景举例
要点一
场景一
动物类与子类。假设有一个Animal类 作为父类,它有一个eat()方法。可以 创建多个子类如Dog、Cat等,并分 别重写eat()方法来实现不同的吃东西 的行为。这样可以通过Animal类型的 引用来指向不同的子类对象,并调用 它们的eat()方法,从而实现多态。

面向对象方法学概述精品PPT课件

面向对象方法学概述精品PPT课件
注意:UML是一种语言规范而不是一种建模方法
用面向对象方法开发软件,通常需要建立3种形式的模 型:描述系统数据结构的对象模型,描述系统控制结构 的动态模型、描述系统功能的功能模型。 在整个开发过程中,3种模型一直都在发展完善。在面向 对象分析中,构造出完全独立于实现的应用域模型;在 面向对象设计过程中,把求解域的结构逐渐加入到模型 中;在实现阶段,把应用域和求解域的结构编成代码并 进行严格的测试验证
面向对象分析设计方法(OOAD): ▪ 兴起于20世纪80年代,从20世纪90年代起至今它已
经在分析设计领域占据了无可争议的主流地位 ▪ 1997年11月,UML被国际对象管理组织(OGM)采
纳,此后UML成了OOAD建模语言的国际标准。 ▪ UML对于OOAD中的语义、图形表示法和使用规则做
了完整而详细的定义。其建模能力超过了以往任何 OOAD方法,当然复杂性也随之膨胀。 ▪ 真正使UML流行的是Rational公司基于UML的建模 工具Rose。
每次重复都会增加或明确一些目标系统的性质,但却不是对先前工 作结果的本质性改动,这样就减少了不一致性,降低了出错的可能。 P22喷泉模型
面向对象方法的特点
1. 通用组织方法 2. 抽象 3. 封装或信息隐蔽 4. 继承 5. 多态 6. 消息通信 7. 关联 8. 复用
1. 通用组织方法
通用组织方法用于协助组织信息系统模型以及最终编写的软件。包 括: 对象及其属性或者特征。 整体和部分(is a part of)。 类和成员(is a member of) 。 2. 抽象 忽略问题域的无关部分而集中考虑关键部分的原则
第一章 面向对象方法学引论
传统方法学的缺点
僵化的瀑布模型 瀑布模型意味着生命周期各阶段间存在着严

第一章面向对象方法

第一章面向对象方法

1.类图和对象图
(b)对象图
(a)类图
a)有属性的类图
(b)有属性的对象图
类图如图1.2(a)所示,属性置于类的框符 的第2部分,用一条横线与表示类名的第 1部分隔开,类型是可选的,若给出的话, 用冒号分隔; 对象图如图1.2(b)所示,没有横线,将属 性值列于对象名下即可。

2.连接和关联
1.3.2 动态模型
对象的状态以及对象之间的相互关系如 何变化。这就产生了一种与静态结构即 对象模型相对应的动态模型,用来描述 一个系统是如何变化的。 动态模型涉及的主要概念是对象的状态 以及描述对象之间相互作用的事件

1.事件和状态
在对象模型技术中,对象的属性值和对 象之间的连接称为对象的状态。 对象之间的相互作用,导致对象状态的 一系列变化。对象从一个状态到另一个 状态的变迁称为一个事件。

消息具有如下性质:
同一个对象可以接受不同形式的多个消息,产 生不同的响应。 相同形式的消息可以发送给不同的对象。不同 的对象对其做出的响应可以是截然不同的。 消息的发送者可以不考虑消息的具体接受者。 对象可以响应消息,也可以对消息不予理会, 对消息的响应并不是必须的。

2.公有消息和私有消息

层级二:专家经验(C++/OOP)

More Effective C++中文版,侯俊杰,培生 2000. 318页 Effective C++ 2/e 中文版,侯俊杰,培生 2000.256 页 Exceptional C++中文版,侯俊杰,培生 2000.248 页

例:给出了一个类的继承结构
结构与连接 (Structure & Connection)

(一)第一章 面向对象方法概述

(一)第一章 面向对象方法概述

面向对象分析与设计第一章面向对象方法概述1.1面向对象方法学⒈什么是面向对象?面向对象(object oriented, OO)是一种风范(paradigm),是认识系统和描述系统的一种方法论。

该方法认为,系统是由一系列相互联系、相互作用的对象(object)组成的。

⒉为什么要面向对象?⑴面向对象技术将带来软件生产方式的根本改变。

⑵面向对象技术对提高软件的质量和生产效率效果显著。

⒊面向对象方法的特征①类(class)②继承(inheritance)③多态性④一般性⑤对象标识⑥状态保持⑦消息⑧信息/实现隐藏⑨封装1.2 面向对象方法学的发展历史1.2.1 OOPL对面向对象程序设计语言的产生影响较大的语言有:·Simula 67;·CLU, Pascal, Ada, Modula-2;·SmallTalk·Objective-C, Object Pascal, Eiffel;·C++;·Java.1.2.2 几种流行的面向对象方法BoochGrady BoochOMT:对象建模技术(Object Modeling Technique, OMT)James RumbaughOOSE (object oriented software engineering)Ivar JacobsonFusionHewlett-Packard (D.Colema, 1994)OOA/OODCoad/Yourdon1.3 UML简介统一建模语言(Unified Modeling Language, UML)UML 是一种基于面向对象的可视化图形建模语言,用于对软件系统进行说明、构造和文档建立。

1.3.1 UML的发展过程第一阶段:专家的联合行动1994年,Grady Booch 和James Rumbaugh 在Rational 软件公司开始创建UML的工作。

第1章 面向对象方法概论

第1章 面向对象方法概论

信息建模法(information modeling) 信息建模法(information modeling)
强调对信息实体建模,而不是对象建模。 对象只有属性,而无服务。 父类与子类之间也只有属性继承。 没采用消息通讯。
有限状态机方法
基于现实的行为视图,状态是这类系统的构造块,并且所操 作的数据是独立于状态的。 基于系统状态的处理。 这一方法没有涉及数据管理。
面向对象方法的要点
(3) 对象的属性与服务结合为一体,成为一 个独立的、不可分的实体,对外屏蔽其内部 细节。(对象的封装) (4) 对事物进行分类。把具有相同属性和相 同服务的对象归为一类,类是这些对象的抽 象描述,每个对象是它的类的一个实例。 (分类) (5) 复杂的对象可以用简单的对象作为其构 成部分。(聚合)
信息建模=实体(对象)+属性+关系+父类型 /子类型+关联对象 由实体-关系法(E-R方法)发展而来。 与数据库设计有很深的渊源。 核心概念是实体和关系。
– 实体描述问题域的事物,含有属性; – 关系描述事物之间在数据方面的联系,也可以带有属 性。
发展之后的方法也把实体称作对象,并使用了类 型和子类型的概念,作为实体(对象)的抽象描 述。
当时软件职业者和研究人员认为数据是 “企业应 用”中最稳定的部分,并且关系数据库有一个极 ” 好的数学基础,在二十世纪八十年代大多数公司 使用数据建模方法开发软件。 结构化的方法实际上帮助开发者处理数据,但数 据建模方法不能帮助开发者较好的控制功能。
信息建模法(information modeling) 信息建模法(information modeling)
数据流法(data 数据流法(data flow approach) approach)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档