面向对象方法概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1.2 面向对象的概念
2、 类(Class) Class) 又称对象类 对象类( Class) 类 又称 对象类 (Object Class), 是 一组具有相同属性和 相同操作的对象的集合。在一个类中,每个对象都是类的实例 相同操作的对象的集合。在一个类中,每个对象都是类的实例 它们都可以使用类中提供的函数。 (instance) ,它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性,类具有操作, 类具有属性,用数据结构来描述类的属性,类具有操作, 它是对象的行为的抽象,操作实现的过程称为方法 (method) ,方法有方法名,方法体和参数。 方法有方法名,方法体和参数。 由于对象是类的实例,在进行分析和设计时, 由于对象是类的实例,在进行分析和设计时,通常把注 意力集中在类上,而不是具体的对象上。 意力集中在类上,而不是具体的对象上。
第 六 章
面向对象方法学
6.1.1 什么是面向对象的开发方法
6.1.1 什么是面向对象的开发方法
OOSD (Object-Oriented Software Development)法是 ObjectDevelopment)
把面向对象的思想应用于软件开发过程, 一种 把面向对象的思想应用于软件开发过程,指导开发活动的 系统方法。 系统方法。 面向对象的方法是一种运用对象、 继承、封装、 面向对象的方法是一种运用对象、类、继承、封装、聚 消息传送、多态性等概念来构造系统的软件开发方法。 合、消息传送、多态性等概念来构造系统的软件开发方法。 什么是面向对象 根据Coad 的定义,按照以下4 根据Coad 和 Yourdon 的定义,按照以下4个概念设计和 实现的系统,称为是面向对象的。 实现的系统,称为是面向对象的。 面向对象= 面向对象=对象 (object) ) +类 (classification) ) 继承( +继承(inheritance) ) +通信 (communication with messages) )
OOA
强调的是对一个系统中的对象特征和行 为的定义。建立系统的三类模型。 为的定义。建立系统的三类模型。 与OOA密切配合顺序实现对现实世界的进 OOA密切配合顺序实现对现实世界的进 一步建模。 一步建模。 是面向对象的技术中发展最快的, 是面向对象的技术中发展最快的,使用 面向对象的程序设计语言,进行编码。 面向对象的程序设计语言,进行编码。
6.1.2 面向对象的基本概念
1、 对象(Object) 对象(Object)是客观事物或概念的抽象表述 对象 ( Object) 是客观事物或概念的抽象表述 , 即 对客 是客观事物或概念的抽象表述, 观存在的事物的描述统称为对象,对象可以是事、 观存在的事物的描述统称为对象,对象可以是事、物、或抽 象概念 ,是将一组数据和使用该数据的一组基本操作或过 程封装在一起的实体。 程封装在一起的实体 对 象 都 存 在 一 定 的 状 态 ( state), 内 部 标 识 state), identity),可以给对象定义一组运算 operation),对象 一组运算( ( identity), 可以给对象定义 一组运算 ( operation), 对象 通过其运算所展示的特定行为称为对象行为 behavior), 对象行为( 通过其运算所展示的特定行为称为对象行为(behavior),对 属性( 象本身的性质称为属性 attribute), 象本身的性质称为 属性 ( attribute), 对象将它自身的属性 及运算“包装起来” 称为“封装” encapsulation). 及运算“包装起来”,称为“封装”(encapsulation). 对象的最基本的特征是封装性和继承性。 对象的最基本的特征是封装性和继承性。
6.1.2 面向对象的概念 对象和类的描述
对象和类的描述 对象和类一般采用“对象图” 对象和类一般采用“对象图” 和 “类图” 来描述。 类图” 来描述。
几何对象
类名
人 姓 名:字符串 字符串 年 龄: 整 型 改换工作 改换地址
文件 文件名 文件大小 最近更新日期 打印 图4.1 对象类的描述 (人) 人 (人) 人 张红兵 28 绘图员 人民路8号 人民路 号 图4.2 对象的描述
6.1.2 面向对象的基本概念
6.1.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向对象的 开发方法是十分重要的。 开发方法是十分重要的。 对象(Object) 类(Class) Class) 继承(Inheritance) Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object) 重载
讲官话,这叫做“低层性质 高层性质” 讲官话,这叫做“低层性质override高层性质” 高层性质 讲土话,这叫做“县官不如现管” 讲土话,这叫做“县官不如现管”
首页
上页
下页
末页
退出
6.1.2 面向对象的概念
3、 继承 (Inheritance) Inheritance) 继承是使用现存的定义作为基础,建立新定义的技术。 继承是使用现存的定义作为基础,建立新定义的技术。是 父类和子类之间共享数据结构和方法的机制, 父类和子类之间共享数据结构和方法的机制,这是类之间的一 种关系。在定义和实现一个类的时候, 种关系。在定义和实现一个类的时候,可以在一个已经存在的 类的基础上来进行, 类的基础上来进行,把这个已经存在的类所定义的内容做为自 己的内容,并加入若干新内容。 己的内容,并加入若干新内容。 继承性分: 继承性分: 单重继承:一个子类只有一个父类。 单重继承:一个子类只有一个父类。即子类只继承一个父类 的数据结构和方法。 的数据结构和方法。 多重继承:一个子类可有多个父类。 多重继承:一个子类可有多个父类。继承多个父类的数据结 构和方法。 构和方法。
6.1.1 什么是面向对象的开发方法
面向对象技术的特点 1、对软件开发过程所有阶段进行综合考虑。 对软件开发过程所有阶段进行综合考虑。 2、软件生存期各阶段所使用的方法、技术具有高度的连续性, 软件生存期各阶段所使用的方法、技术具有高度的连续性, 用符合人类认识世界的思维方式来分析、解决问题。 用符合人类认识世界的思维方式来分析、解决问题。 3、将OOA、OOD、OOP有机地集成在一起。 、 、 有机地集成在一起。 有机地集成在一起 OOA(Object-Oriented Analysis) ( ) OOD(Object-Oriented Design) ( ) OOP(Object-Oriented Program) ( )
1.3.5 面向对象方法及其工作模型
面向对象的方法的代表性成果有: 面向对象的方法的代表性成果有: 1、B.Henderson-sellers 和 J.m.Edwards提出的面向对象软件 、 提出的面向对象软件 生存期喷泉模型及面向对象的系统开发方法。 生存期喷泉模型及面向对象的系统开发方法。 2、G.Booch提出的面向对象的开发方法。 、 提出的面向对象的开发方法。 提出的面向对象的开发方法 3、P.Coad和E.Yourd提出的 、 提出的OOA和OOD法。 和 提出的 和 法 4、J. Rumbaugh等人提出的对象建模技术 、 等人提出的对象建模技术(OMT)。 等人提出的对象建模技术 。 5、Jacobson 提出的面向对象的软件工程(OOSE)。 、 提出的面向对象的软件工程 。 6、G.booch J.Rumbough Jacobson等人在 、 等人在Booch方法、OMT 方法、 等人在 方法 和OOSE的基础上推出了统一建模语言 的基础上推出了统一建模语言UML。 。 的基础上推出了统一建模语言
OOD
OOP OOP
1.3.5 面向对象开发方法的组成
1、OOA法 OOA法
1、OOA法 OOA法 就是要解决“作什么”的问题。 就是要解决“作什么”的问题。OOA 法的基本任务就是要 建立三种模型: 建立三种模型: 对象模型(信息模型) 对象模型(信息模型) 定义构成系统的类和对象,它们的属性与操作。 定义构成系统的类和对象,它们的属性与操作。 状态模型(动态模型) 状态模型(动态模型) 描述任何时刻对象的联系及其联系的改变,即时序。 描述任何时刻对象的联系及其联系的改变,即时序。常 用状态图, 事件追踪图描述。 用状态图, 事件追踪图描述。 处理模型(函数模型) 处理模型(函数模型) 描述系统内部数据的传送处理。 描述系统内部数据的传送处理。 显然,在三大模型中,最重要的是对象模型。 显然,在三大模型中,最重要的是对象模型。
类图
属性 运算
颜色 位置 移动( 移动(delta:矢量) :矢量) 选择(P:指针型):布尔型 选择( 指针型) 布尔型 指针型 角度) 旋转(角度 旋转(角度)
对象图
李军 24 程序员 无
例:
Class 中国人
中国人 Attributes 中国人 Methods Class 杭州人 (子类 子类) 子类 Class 中国人 杭州人 Attributes 杭州人 Methods
基类
现存类定义 父类(基类) 父类(基类)
继Biblioteka Baidu
承
新类定义 子类(派生类) 子类(派生类)
子类A 子类
子类B 子类
图 4.3 继承性
图 4.4 继承性描述
6.1.2 面向对象的概念
4、消息(Message) 消息就是向对象发出的服务请求( 互相联系、 消息就是向对象发出的服务请求 ( 互相联系、协同工 作等) 对象之间的联系可表示为对象间的消息传递, 作等 ) 。 对象之间的联系可表示为对象间的消息传递 , 即 对象间的通讯机制。 对象间的通讯机制。 一个消息应该包含以下信息:消息名、 一个消息应该包含以下信息 : 消息名 、 接收消息对象 的标识、 消息和方法、输入信息、回答信息。 的标识、服务标识 、消息和方法、输入信息、回答信息。 在对象的操作中当一个消息发送给某个对象时, 在对象的操作中当一个消息发送给某个对象时 , 消息 包含接收对象去执行某种操作的消息。 包含接收对象去执行某种操作的消息。 注 意 : 在 并 发 系 统 中 , 多 个 控 制 线 程 ( Thread of Control)并发执行 情况就复杂得多, 并发执行, Control)并发执行,情况就复杂得多,消息可以是发出服 务请求、提交数据、发布事件信息、 务请求、提交数据 、发布事件信息、 或是传递同步控制信 息。
1.3.5 面向对象方法及其工作模型
模型分类续
2、OOD 法 在需求分析的基础上,进一步解决“如何作”的问题, 在需求分析的基础上,进一步解决“如何作”的问题, 法也分为概要设计和详细设计。 OOD 法也分为概要设计和详细设计。 概要设计:细化对象行为,添加新对象,认定类, 概要设计:细化对象行为,添加新对象,认定类,组类 库,确定外部接口及主要数据结构 详细设计:加细对象描述 详细设计: 3、OOP 法 使用面向对象的程序设计语言, C++进行程序设计 进行程序设计。 使用面向对象的程序设计语言,如C++进行程序设计。 Coad和Yourdon给出一个面向对象的定义 给出一个面向对象的定义: Coad和Yourdon给出一个面向对象的定义: 面向对象=对象+ 继承+ 面向对象=对象+类+继承+消息 如果一个软件系统是按照这样四个概念设计和实现的, 如果一个软件系统是按照这样四个概念设计和实现的, 则可以认为这个软件系统是面向对象的。 则可以认为这个软件系统是面向对象的。
6.1.2 面向对象开发方法的组成
OOSD由三部分组成: 由三部分组成: 由三部分组成 OOA(Object-Oriented Analysis)面向对象的分析 面向对象的分析 OOD(Object-Oriented Design)面向对象的设计 面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设计 面向对象的程序设计
张山 (instance)
Class 中国人 张山的 Attributes 李士 (instance) Class 杭州人 中国人李士的 Attributes 杭州人李士的 Attributes
首页
上页
下页
末页
退出
特点: 特点: 杭州人的 中有与中国人的同名, 中有与中国人的同名 若杭州人的 methods中有与中国人的同名,则 时以杭州人为 杭州人为准 不执行中 李士执行该 method 时以杭州人为准,不执行中 国人中定义的同名 国人中定义的同名 method。 。