面向对象方法学概述资料

合集下载

面向对象方法学

面向对象方法学
综上所述,面向对象的方法学可以用下列方程来
OO=Objects+Classes+Inheritance+Communication with messages 也就是说,面向对象就是既使用对象又使用类和继承 等机制,而且对象之间仅能通过传递消息实现彼此通
6.2面向对象方法学的主要优点
1. 面向对象的软件技术以对象(Object)为核心,用 这种技术开发出的软件系统由对象组成。对象是对现 实世界实体的正确抽象,它是由描述内部状态表示静 态属性的数据,以及可以对这些数据施加的操作(表示 对象的动态行为),封装在一起所构成的统一体。对象 之间通过传递消息互相联系,以模拟现实世界中不同
从动态角度或对象的实现机制来看,对象是一台 自动机。具有内部状态S,操作fi(i=1,2,…,n),且与 操作fi对应的状态转换函数为gi(i=1,2,…,n)的一个对 象,可以用图6.2所示的自动机来模拟。
图6.2 用自动机模拟对象
3. ·以数据为中心。 ·对象是主动的。 ·实现了数据封装。 ·本质上具有并行性。 ·模块独立性好。
பைடு நூலகம்
面向对象的设计方法与传统的面向过程的方法有 本质不同,这种方法的基本原理是,使用现实世界的 概念抽象地思考问题从而自然地解决问题。它强调模 拟现实世界中的概念而不强调算法,它鼓励开发者在 软件开发的绝大部分过程中都用应用领域的概念去思 考。在面向对象的设计方法中,计算机的观点是不重 要的,现实世界的模型才是最重要的。面向对象的软 件开发过程从始至终都围绕着建立问题领域的对象模 型来进行:对问题领域进行自然的分解,确定需要使 用的对象和类,建立适当的类等级,在对象之间传递 消息实现必要的联系,从而按照人们习惯的思维方式
面向对象的软件技术所实现的可重用性是自然的

5 面向对象方法学

5 面向对象方法学

5 . 4 对象模型
• 描述系统内部对象的静态结构,包括对象 本身的定义、对象的属性和操作、以及对 象与其它对象之间的关系。 • UML 中,对象模型通常由“类图”组成。
5 . 4 . 1 类图的基本符号
5 . 4 . 2 表示关系的符号
• 类和类之间的联系称为“关系”;关系可 以是物理的,也可以是逻辑的。 • 通常分为:关联、范化、依赖和细化四种。
面向对象方法学的优点
• • • • • • 详见教材 P205 一 P208 页 1 、与人类习惯的思维方法一致 2 、稳定性好 3 、可重用性好 4 、较易开发大型软件产品 5 、可维护性好
传统的开发方法与面向对象的开发方法比较
5 . 2 面向对象的概念
• 5 . 2 . 1 对象( objoct ) • 在现实世界中有意义的、与所要解决的问 题有关系的任何事物都可以作为对象,包 括具体的物理实体的抽象、人为的概念、 任何有明确边界和意义的东西。 • 如:一名职工、一本图书、贷款、生产计 划、一场演出等。 • 对象既有静态的属性,又有动态的行为 (操作)。
关系 行为者 方框代表系统
椭圆代表用例
图9.16自动售货机系统用例图
建模实例:某金融贸易系统用例图 (UML )
建模实例:用例图举例( UML )
UML 统一建模语言
• 一种可视化建模 语言,能描述开 发需要的各种视 图,并以此为基 础组建系统。 • 其发展过程如右 图: • 常用的工具: Rational Rose
面向对象的软件开发模型
• • • • 对象模型: 描述系统数据结构的对象模型; 动态模型:描述系统控制结构; 功能模型:描述系统功能。 一个典型的软件系统使用数据结构(对象 模型),执行操作(动态模型),并且完 成数据值的变化(功能模型)。

面向对象方法学的出发点和基本原则

面向对象方法学的出发点和基本原则

面向对象方法学的出发点和基本原则1 面向对象方法学简介面向对象方法学( Object-Oriented Methodology, OOM)是一种软件工程的建模模式,它被广泛应用在软件工程的设计与开发中。

OOM是一种面向对象的分析、设计及编程的过程,用来组织抽象和构造有效的软件系统。

2 出发点及基本原则OOM的基本出发点是,让计算机能够更好的处理真实世界中复杂的问题。

它通过把巨大而复杂的系统分解为由许多独立的概念实体组成的、耦合度较低的“对象”来实现这一目标。

OOM的基本原则是要使组件(或对象)具有封装性、继承性和多态性:1. 封装性:能够将某些属性或功能封装到一个单一的实体之中,以达到良好的模块独立性、维护性等目的。

2. 继承性:直接通过之前定义的对象可以定义一个新的对象,新的对象将具有之前定义的对象的所有功能,从而极大的提高开发效率。

3. 多态性:每个子类可以具备不同的实现,以提高代码的可重用性。

3 典型应用OOM在软件工程设计与开发过程中被广泛应用。

一些软件语言,如C++、Java等都是面向对象编程语言,这些语言的使用都可以根据OOM的原则来实现。

此外,OOM的思想也可以被应用到其它的计算机应用领域。

例如,它可以用来设计具有分布式功能的大型系统,例如银行的信息系统等。

它也可以用来设计新的知识表示方法和面向对象数据库,以满足要求表示和处理复杂现实存在的事物与概念。

4 结论面向对象方法学是一种非常有效且实用的软件工程模式,它能够帮助程序员开发出更高质量的程序。

OOM的组件(或对象)具有封装性、继承性和多态性,这使得它能够更好的模拟真实世界中复杂的对象,并为实现这些对象的功能提供了一种有效的方法。

面向对象方法学概述精品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. 抽象 忽略问题域的无关部分而集中考虑关键部分的原则
第一章 面向对象方法学引论
传统方法学的缺点
僵化的瀑布模型 瀑布模型意味着生命周期各阶段间存在着严

面向对象方法概述

面向对象方法概述

张山 (instance)
Class 中国人 张山的 Attributes 李士 (instance) Class 杭州人 中国人李士的 Attributes 杭州人李士的 Attributes
首页
上页
下页
末页
退出
特点: 特点: 杭州人的 中有与中国人的同名, 中有与中国人的同名 若杭州人的 methods中有与中国人的同名,则 时以杭州人为 杭州人为准 不执行中 李士执行该 method 时以杭州人为准,不执行中 国人中定义的同名 国人中定义的同名 method。 。
OOD
OOP OOP
1.3.5 面向对象开发方法的组成
1、OOA法 OOA法
1、OOA法 OOA法 就是要解决“作什么”的问题。 就是要解决“作什么”的问题。OOA 法的基本任务就是要 建立三种模型: 建立三种模型: 对象模型(信息模型) 对象模型(信息模型) 定义构成系统的类和对象,它们的属性与操作。 定义构成系统的类和对象,它们的属性与操作。 状态模型(动态模型) 状态模型(动态模型) 描述任何时刻对象的联系及其联系的改变,即时序。 描述任何时刻对象的联系及其联系的改变,即时序。常 用状态图, 事件追踪图描述。 用状态图, 事件追踪图描述。 处理模型(函数模型) 处理模型(函数模型) 描述系统内部数据的传送处理。 描述系统内部数据的传送处理。 显然,在三大模型中,最重要的是对象模型。 显然,在三大模型中,最重要的是对象模型。
6.1.2 面向对象的基本概念
6.1.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向对象的 开发方法是十分重要的。 开发方法是十分重要的。 对象(Object) 类(Class) Class) 继承(Inheritance) Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object) 重载

第三篇 面向对象方法学PPT课件

第三篇 面向对象方法学PPT课件
4
结构化方法学与面向对象方法学
假如数据结构复杂且变换并不多,那么 如以过程主导分析和设计,一旦有系统 变更就会给下游开发带来极大混乱。
由于对过程的理解不同,面向过程的功 能细分所分割出的功能模块有时会因人 而异。而面向对象的对象细分,从同一 问题领域的对象出发,不同人得出相同 结论的比率较高。
分成两类。
圆 圆心坐标 半径 可见性 显示() 隐藏
弧 圆心半径 半径 起始角度 结束角度 可见性 显示 隐藏
16
17
设计类等级
除了把对象分类之外,还应该进一 步按照子类(派生类)与父类(基 类)的关系,把若干个相关的对象 类组成一个层次结构的系统(类等 级)。
在这种层次结构中,下层的派生类 自动具有和上层基类相同的特定 (包括数据和操作),这种现象称 为继承。
(3)按照子类与父类的关系,把若干个 对象类组织成一个层次结构的系统(类 等级)。
23
面向对象方法学的要点
(4)对象之间仅能通过传递消息互相通信。
“面向对象=对象+类+继承+消息”
24

面向对象方法学过程
一般说来,使用面向对象方法学开发软件时, 工作重点应该放在生命周期中的分析阶段。这 种方法在开发的早期阶段定义了一系列面向问 题的对象,并且在整个开发过程中不断充实和 扩充这些对象。
25
面向对象方法学过程
迭代是软件开发过程中普遍存在的 一种内在属性。经验表明,软件过 程各个阶段之间的迭代或一个阶段 内各个工作步骤之间的迭代,在面 向对象范型中比在结构化范型中更 常见,也更容易实现。
喷泉模型是典型的面向对象生命周 期模型。
26
6.3 面向对象方法学的主要优点
与人类习惯的思维方法一致 面向对象的软件开发过程从始至终都围绕着建

面向对象方法学引论.pptx

面向对象方法学引论.pptx
第34页/共67页
图9.14 多重继承示例
第35页/共67页
完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定{完全}约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,随着对问题理解的深入,可不断补充和维护,这为日后系统的扩充和维护带来很大方便。不完全继承是一般情况下默认的继承关系。
第2页/共67页
Message
Send by method
对象Object
Object
= 属性Attribute
Attributes: location; employee; ……
+ 操作Method
Methods: send; sell; ……
注意:对象内部的属性不允许外部用户直接改动,只有当它提供了相应的服务操作时,用户才能通过发送消息来提请它执行。
④ 消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。
第4页/共67页
OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。
表示关系的符号
第17页/共67页
类1
类2
角色
角色
关联名
角色表示该类在这个关联中的作用。如果没有显式标出角色名,则意味着用类名作为角色名。重数:该类有多少个对象与对方的一个对象连接。
关联
重数
1、关联
第18页/共67页
在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:0…1 表示0到1个对象0…*或* 表示0到多个对象1+或1…* 表示1到多个对象1…15 表示1到15个对象3 表示3个对象如果图中未明确标出关联的重数,则默认重数是1。

第1章 面向对象的方法学

第1章 面向对象的方法学
为了在程序中使用cin/cout,必须在程序中包含iostream库
的相关头文件
#include<iostream>
计算机科学与工程学院
西安理工大学
C++流类库简介
iostream类同时从istream(输入流)类和ostream(输出 流)类派生而来,允许双向输入/输出。输入由重载的操作 符>>完成,输出由重载的操作符<<来完成。 cin>>变量名; cout<<变量名或常量;
对象
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。 对象是我们认识世界的基本单元,可以是人,也可以是物,还可以是一 件事。 术语“对象”既可以是指一个具体的对象,也可以泛指一般的对象。
实例
实例是一个类所描述的一个具体的对象。
例如,通过“大学生”类定义一个具体的对象学生王明就是大学生类的 一个实例,就是一个对象。 类和对象之间的关系是抽象和具体的关系。
面向对象分析
分析是问题抽象(即做什么)。 结构化方法采用面向过程的方法对问题进行分解 面向对象分析是指在深入、全面理解问题本质需求的基础上,准确地抽象出 系统必须做什么。
面向对象设计
分析是提取和整理用户需求,建立问题精确模型的过程,即做什么。设计是 问题求解 (即怎么做),是对分析阶段所建立的模型进行精雕细凿,并逐渐扩 充的一个过程。
[例9-5] 简单输出实例1。
[例9-6] 简单输出实例2。
计算机科学与工程学院
西安理工大学
基本输入流
流输入可以用流读取运算符——即重载的>>(右移位运算
符)来完成。 注意:
输入运算符>>也支持级联输入。在默认情况下,运算符>>跳过空格,读 入后面与变量类型相应的值。因此给一组变量输入值时,用空格或换行 将输入的数值间隔开,例如:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9.1 面向对象方法学概述
9.2 面向对象的概念
9.3 面向对象建模
9.4 对象模型
9.5 动态模型
9.6 功能模型
9.7 3种模型之间的关系
传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。

但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。

在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。

到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。

面向对象技术已成为当前最好的软件开发技术。

9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点
面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。

面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。

应该使这些解空间对象与问题空间对象尽可能一致。

这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。

也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。

概括地说,面向对象方法具有下述4个要点:
(1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。

按照这种观点,可以认为整个世界就是一个最复杂的对象。

因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。

由此可见,面向对象方法用对象分解取代了传统方法的功能分解。

(2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。

数据用于表示对象的静态属性,是对象的状态信息。

因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。

(3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。

在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance)。

(4) 对象彼此之间仅能通过传递消息互相联系。

对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。

重点:如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。

只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。

9.1.2 面向对象方法学的优点
1. 与人类习惯的思维方法一致
2. 稳定性好
3. 可重用性好(重点)
用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。

重用是提高生产率的最主要的方法。

传统的软件重用技术是利用标准函数库,也就是试图用标准函数库中的函数作为“预制件”来建造新的软件系统。

但是,标准函数缺乏必要的“柔性”,不能适应不同应用场合的不同需要,并不是理想的可重用的软件成分。

实际的库函数往往仅提供最基本、最常用的功能,在开发一个新的软件系统时,通常多数函数是开发者自己编写的,甚至绝大多数函数都是新编的。

面向对象的软件技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。

有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它;另一种方法是从它派生出一个满足当前需要的新类。

4. 较易开发大型软件产品
在开发大型软件产品时,组织开发人员的方法不恰当往往是出现问题的主要原因。

用面向对象方法学开发软件时,构成软件系统的每个对象就像一个微型程序,有自己的数据、操作、功能和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。

这就是为什么对于大型软件产品来说,面向对象范型优于结构化范型的原因之一。

5. 可维护性好
用传统方法和面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,是软件危机的突出表现。

由于下述因素的存在,使得用面向对象方法所开发的软件可维护性好:
(1)面向对象的软件稳定性比较好。

(2)面向对象的软件比较容易修改。

(3)面向对象的软件比较容易理解。

(4)易于测试和调试。

9.1.3 喷泉模型
迭代是软件开发过程中普遍存在的一种内在属性。

经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。

图示:喷泉模型结构。

9.2 面向对象的概念
主要讲授:对象、类、继承、封装、重载。

9.3 面向对象建模
为了更好地理解问题,人们常常采用建立问题模型的方法。

所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。

通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。

更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。

为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。

对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了减少复杂性。

人的头脑每次只能处理一定数量的信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少系统的复杂程度。

9.4 对象模型
对象模型表示静态的、结构化的系统的“数据”性质。

它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。

强调:面向对象方法强调围绕对象而不是围绕功能来构造系统。

对象模型为建立动态模型和功能模型,提供了实质性的框架。

在建立对象模型时,我们的目标是从客观世界中提炼出对具体应用有价值的概念。

为了建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。

在此简要地介绍UML的类图的以下内容:类图的基本符号、表示关系的符号。

9.5 动态模型
动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。

一旦建立起对象模型之后,就需要考察对象的动态行为。

所有对象都具有自己的生命周期(或称为运行周期)。

对一个对象来说,生
命周期由许多阶段组成,在每个特定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范该对象的行为。

生命周期中的阶段也就是对象的状态。

重点:状态和响应。

9.6 功能模型
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。

通常,功能模型由一组数据流图组成。

注:在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。

一般说来,与对象模型和动态模型比较起来,数据流图并没有增加新的信息,但是,建立功能模型有助于软件开发人员更深入地理解问题域,改进和完善自己的设计。

因此,不能完全忽视功能模型的作用。

补充:UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。

在UML中把用用例图建立起来的系统模型称为用例模型。

用例模型描述的是外部行为者(actor)所理解的系统功能。

用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。

9.7 3种模型之间的关系
在此,对三种模型做一下总结:面向对象建模技术所建立的3种模型,分别从3个不同侧面描述了所要开发的系统。

这3种模型相互补充、相互配合,使得我们对系统的认识更加全面:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。

在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成3种模型的集成。

相关文档
最新文档