《专题面向对象技术》由会员分享,可在线阅读,更多相关《专题面向对象技术(75页珍藏版)》请在金锄头文库上搜索。
1、专题专题10:面向对象技术:面向对象技术Topic:Object Oriented Technique信息科学与技术学院信息科学与技术学院用工程化的方法开发软件系统用工程化的方法开发软件系统用工程化的方法开发软件系统用工程化的方法开发软件系统OO专题要点专题要点?面向对象的产生和思想面向对象的产生和思想?面向对象的核心概念面向对象的核心概念?面向对象的分析方法(OOA)面向对象的分析方法(OOA)?面向对象的设计方法(OOD)面向对象的设计方法(OOD)1 OO的历史的历史?20世纪60年代中,20世纪60年代中,Simula67Simula67(仿真程序设 计语言)标志了面向对象的起源,给出
2、了 封装等概念;(仿真程序设 计语言)标志了面向对象的起源,给出了 封装等概念;(挪威奥斯陆大学和挪威计 算中心研制)(挪威奥斯陆大学和挪威计 算中心研制)?80年代中后,80年代中后,SmallTalkSmallTalk的出现是一个重 要的里程碑;的出现是一个重 要的里程碑;?90年代以后,OOA/OOD方法逐渐走向实用。90年代以后,OOA/OOD方法逐渐走向实用。2 OO的思想的思想抽象R现实世界(问题域)现实世界(问题域)软件系统软件系统EOO v.s. 结构化方法结构化方法?结构化方法结构化方法采用了许多符合人类思维习惯 的原则与策略(如采用了许多符合人类思维习惯 的原则与策略(如自
3、顶向下、逐步求精自顶向下、逐步求精)?面向对象方法面向对象方法更强调运用人类在日常的逻 辑思维中经常采用的思想方法与原则, (如更强调运用人类在日常的逻 辑思维中经常采用的思想方法与原则, (如抽象、分类、继承、聚合、封装抽象、分类、继承、聚合、封装等)等)OO语言语言 v.s. 其他语言其他语言?为了求解,要借助计算机语言提供的实体,并 可对其施加相关动作为了求解,要借助计算机语言提供的实体,并 可对其施加相关动作实例化、操 作、消息实例化、操 作、消息申请、打 开、关闭申请、打 开、关闭寻址寻址动作动作对象、属性变量、数 组、记录、 文件对象、属性变量、数 组、记录、 文件寄存器, 存储单
4、元寄存器, 存储单元实体实体OO过程式过程式汇编汇编3 OO的核心概念的核心概念?对象(Object)对象(Object)?类(Class)类(Class)?继承(Inheritance)继承(Inheritance)?消息消息?多态多态面向对象的定义面向对象的定义?一种使用对象(它将属性与操作封装为一 体)、消息传递、类、继承、多态等来开 发问题论域模型的解的范型。一种使用对象(它将属性与操作封装为一 体)、消息传递、类、继承、多态等来开 发问题论域模型的解的范型。?一种基于对象、类、实例和继承等概念的 技术。一种基于对象、类、实例和继承等概念的 技术。?用对象作为建模的基本单位。用对象作为
5、建模的基本单位。3.1 何为何为“对象对象”??是对现实世界中个体、事物的抽象表示。是对现实世界中个体、事物的抽象表示。?具体包含具体包含属性属性和与之相关的和与之相关的操作操作(方法)。(方法)。 e.g.e.g. 一个人是一个对象,有外貌,身高等 属性,有衣、食、住、行等行为(或操作)一个人是一个对象,有外貌,身高等 属性,有衣、食、住、行等行为(或操作)3.2 何谓何谓“类类”??抽取某些对象的共同特征后的表示;抽取某些对象的共同特征后的表示;?对象是类的实例(Instance);对象是类的实例(Instance);?类是对象的模板;类是对象的模板; e.g.e.g. 学生是一类人的代表
6、,有上课、实验、 运动等行为;而李蕾、戴明是学生的一个 实例;学生是一类人的代表,有上课、实验、 运动等行为;而李蕾、戴明是学生的一个 实例;李蕾 属性 李蕾 女 上海 化学 1982.4 20#楼128室 服务 看书 实验 上课 运动运动运动运动上课上课上课实验实验实验看书看书看书服务服务服务学生戴明 属性属性属性 戴明 男男 湖南 计算机软件 1981.1 5#楼302室王建平王建平广东 国际金融 1981.12 5#楼212室姓名 性别 籍贯 专业 出生年月 住址类的表示类的表示类名属性类名属性:操作操作:类名属性类名属性:操作操作:操作: 3.3 继承继承?一个类(子类)可以沿用其他类
7、(父类) 的某些特征;即复用父类的属性和操作;一个类(子类)可以沿用其他类(父类) 的某些特征;即复用父类的属性和操作;?类似现实世界中的遗传关系;类似现实世界中的遗传关系;例如:例如: 汽车类可衍生出卡车、轿车、面包车汽车类可衍生出卡车、轿车、面包车椅子的实例超类家具的子集桌子椅子书桌桌子和椅子 上的东西家具(超集)3.4 消息消息?对象间交互的唯一途径,对象间通信的手 段,可通过消息向其他对象请求服务,或 响应请求。对象间交互的唯一途径,对象间通信的手 段,可通过消息向其他对象请求服务,或 响应请求。?定义了一个操作名和一个参数表;定义了一个操作名和一个参数表;message:destin
8、ation,operation,parameters 发送者对象属性:操作:接受者对象属性:操作:消息:receiver,opreation,parameters消息:sender,erturnvalue(s)消息传递将面向对象系统连在一起消息传递将面向对象系统连在一起ABCDop1op2op3op4op5op6 op7op10op11消息返回值op9op8 返回值3.5 其他其他?封装封装:将数据和对其施加的操作形成一个 整体,这也是OO的一个基本思想;:将数据和对其施加的操作形成一个 整体,这也是OO的一个基本思想;?多态多态:父类可衍生出多个子类,多态的表现;父类可衍生出多个子类,多态的
9、表现;实际参数可能是属于一个特定类型集合 的任何几个类型的一个实例;实际参数可能是属于一个特定类型集合 的任何几个类型的一个实例;?动态联编动态联编客运工具轮船客车客轮货轮OO小结小结?是一种重要的分析、设计、实现的方法, 而不仅仅是语言本身;是一种重要的分析、设计、实现的方法, 而不仅仅是语言本身;?包含:类、对象、封装、继承、消息等重 要概念(均体现结构化思想的重要原则);包含:类、对象、封装、继承、消息等重 要概念(均体现结构化思想的重要原则);?面向对象对象类继承消息;面向对象对象类继承消息;OO的开发过程的开发过程?OO方法改进了在生命周期各个阶段之间的 接口,因为各个阶段所开发出来
10、的OO方法改进了在生命周期各个阶段之间的 接口,因为各个阶段所开发出来的“部件部件” 都是类;都是类;?类成为分析、设计和实现的基本单元。类成为分析、设计和实现的基本单元。OO开发方法构造的软件具有以下特点OO开发方法构造的软件具有以下特点?面向对象的技术建立的模型与客观世界一致, 因而便于理解。面向对象的技术建立的模型与客观世界一致, 因而便于理解。?适应变化的需要,修改局限在模块中。适应变化的需要,修改局限在模块中。?具有可复用性。具有可复用性。OO的软件生命周期OO的软件生命周期客户输入信息系 统描述论域 分析应用 分析高层 设计类开 发实例 建立 组装 测试 维 护类的生命周期类的生命
11、周期类的规格 说明从既存类 演变既存类 的复用从废弃 型开发实现渐增式的 实现渐增式的 测试测试用例和 测试的开发求精和 维护面向对象系统的体系结构面向对象系统的体系结构处理1处理2处理3IPCIPCIPC类的定义类的实例软件库IPC处理间 的通信4 面向对象的分析方法4 面向对象的分析方法?利用OO的概念和方法构建软件的需求模型;利用OO的概念和方法构建软件的需求模型;将现实世界的将现实世界的“视图视图”转化为用对象来描述的模型转化为用对象来描述的模型描述对象之间的各种关系,以满足软件系统的要求。描述对象之间的各种关系,以满足软件系统的要求。?主要工作主要工作理解理解表达表达验证验证具体任务
12、具体任务?必须在客户和开发者之间进行充分沟通,了解 基本的用户需求必须在客户和开发者之间进行充分沟通,了解 基本的用户需求?必须标识类和对象(即定义其属性和方法)必须标识类和对象(即定义其属性和方法)?必须刻划类层次必须刻划类层次?应当表示对象-对象关系(即对象连接)应当表示对象-对象关系(即对象连接)?必须建模对象行为必须建模对象行为?上述过程递进地反复使用,直至完成建模上述过程递进地反复使用,直至完成建模?基本步骤基本步骤识别对象、属性、对外的服务;识别对象、属性、对外的服务;识别类及其结构;识别类及其结构;定义对象间的相互关系;定义对象间的相互关系;?现实情况下,各个步骤是交织、迭代、并
13、行进 行的,并不能截然分开;现实情况下,各个步骤是交织、迭代、并行进 行的,并不能截然分开;4.1 识别对象4.1 识别对象?1 标识潜在对象标识潜在对象?源于对用户需求的语法分析,名词、名词短语源于对用户需求的语法分析,名词、名词短语潜在对象动词、含动作潜在对象动词、含动作对象的操作对象的操作?用户需求描述中的对象形式:用户需求描述中的对象形式:外部实体;外部实体;有关的组织机构;有关的组织机构;目标系统中的聚集的实体;目标系统中的聚集的实体;4.1 识别对象4.1 识别对象?2 筛选对象2 筛选对象?筛选的基本规则筛选的基本规则对象在目标系统中重要的、必须的;对象在目标系统中重要的、必须的
14、;对象有各种操作,并有自身的状态,并可通过某些方 式修改状态;对象有各种操作,并有自身的状态,并可通过某些方 式修改状态;对象定义的操作应适合所有的对象实例,否则可考虑 对象分解、或者继承;对象定义的操作应适合所有的对象实例,否则可考虑 对象分解、或者继承;?对象的识别和筛选同时与软件人员的主观思维 相关对象的识别和筛选同时与软件人员的主观思维 相关类的图示类的图示类和对象的图示类和对象的图示4.2 标识对象属性4.2 标识对象属性?是某对象的属性、还是一个新的对象,要看它 独立存在是否重要;是某对象的属性、还是一个新的对象,要看它 独立存在是否重要;?导出属性可以省略(通过基本属性计算获得)
15、;导出属性可以省略(通过基本属性计算获得);?从需求模型中删除那些外部不可见的属性;从需求模型中删除那些外部不可见的属性;4.3 识别对象的行为4.3 识别对象的行为?提取外部服务提取外部服务?标识消息传递标识消息传递?外部服务的表示外部服务的表示4.4 提取外部服务4.4 提取外部服务行为的分类行为的分类?对象生命周期中的创建、维护、删除对象生命周期中的创建、维护、删除?计算性:完成数据处理功能;计算性:完成数据处理功能;?监视性:监视性:Create Change Delete监视性的对象行为监视性的对象行为?定义出对象的主要状态,列出每种状态可能的 外部事件、预期反应;定义出对象的主要状
16、态,列出每种状态可能的 外部事件、预期反应;?辅助方法:辅助方法:状态状态1Event状态状态1动作动作/新状态新状态事件事件状态状态状态状态2状态状态3EventEvent/Action状态事件响应表状态事件响应表 对象状态转换图对象状态转换图4.5 表示消息传递4.5 表示消息传递?消息种类:消息种类:Obj1激活Obj2 (在Obj1中生成Obj2)Obj1激活Obj2 (在Obj1中生成Obj2)Obj1提供信息给Obj2Obj1提供信息给Obj2Obj1询问Obj2Obj1询问Obj2Obj1请求Obj2提供服务Obj1请求Obj2提供服务Object 2Object 1Message4.6 识别对象所属的类4.6 识别对象所属的类?继承关系(is a)继承关系(is a)?部分整体关系(part of)部分整体关系(part of)继承关系继承关系飞