版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象方法概述第1页,共53页,2023年,2月20日,星期四面向对象方法概述面向对象方法的组成什么是面向对象面向对象技术的发展历史面向对象的基本概念面向对象的软件工程方法第2页,共53页,2023年,2月20日,星期四面向对象方法概览第3页,共53页,2023年,2月20日,星期四1什么是面向对象面向对象(ObjectOriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽象思维方式。第4页,共53页,2023年,2月20日,星期四1什么是面向对象面向对象方法按照人类的自然思维方式,面对客观世界建立软件系统模型:对象、类、继承、封装等基本概念符合人类的自然思维方式。有利于对业务领域和系统责任的理解。有利于人员的交流第5页,共53页,2023年,2月20日,星期四1什么是面向对象面向对象技术的基本观点如下:
(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成。
(2)具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例。
(3)类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性。子类与父类形成类的层次结构。
(4)对象之间通过消息传递相互联系。类具有封装性,其数据和操作等对外界是不可见的,外界只能通过消息请求进行某些操作,提供所需要的服务。第6页,共53页,2023年,2月20日,星期四1什么是面向对象软件工程学家Codd和Yourdon认为:
面向对象=对象+类+继承+通信
如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。
第7页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
面向对象方法起源于面向对象程序设计语言,后来才逐步形成了面向对象的分析和设计方法,其发展过程大体上经历了初始阶段、发展阶段和成熟阶段等过程。
第8页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
初始阶段
60年代末挪威奥斯陆大学和挪威计算中心共同研制的Simula语言是面向对象语言发展历史上的第一个里程碑,它首先引入了类的概念和继承机制,后来的一些著名面向对象编程语言(如Smalltalk、C++、Eiffel)都受到Simula的启发。
KRISTENNYGAARD(Simula创始人)第9页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
初始阶段
80年代,Xerox研究中心推出了Smalltalk语言和环境,它具备了面向对象语言的继承和封装的主要特征,使面向对象程序设计方法趋于完善,掀起了面向对象研究的高潮。
第10页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
发展阶段
从80年代中期到90年代,面向对象语言十分热门,大批比较实用的面向对象编程语言(ObjectOrientedProgrammingLanguage,OOPL)涌现出来,如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等,特别是C++语言已成为目前应用最广泛的OOPL。
BjarneStroustrup(C++创始人)
第11页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
发展阶段
90年代中期,出现了JAVA语言。
JAMESGOSLING第12页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
发展阶段
从80年代中期到90年代,面向对象语言十分热门,大批比较实用的面向对象编程语言(ObjectOrientedProgrammingLanguage,OOPL)涌现出来,如C++、Objective-C、ObjectPascal、CLOS(CommonLispObjectSystem)、Eiffel、Actor等,特别是C++语言已成为目前应用最广泛的OOPL。
面向对象编程语言的繁荣是面向对象方法走向实用的重要标志,也是面向对象方法在计算机学术界、产业界和教育界日益受到重视的推动力。
第13页,共53页,2023年,2月20日,星期四2面向对象技术的发展历史
成熟阶段
在C++语言十分热门的时候,人们开始了对面向对象分析(ObjectOrientedAnlysis,OOA)的研究,进而延伸到面向对象设计(ObjectOrientedDesign,OOD)。特别是90年代以后,许多专家都在尝试用不同的方法进行面向对象的分析与设计,其中比较著名的有Booch的方法、Rumbaugh的OMT方法、Coad/Yourdon的方法、Wirtf-Brock的RDD方法、Shlear-Mellor的方法、Gibon的OBA方法、Jacobson的OOSE方法、Martin-Odell的方法、Fusion方法等,这些方法各有所长,力图解决复杂软件系统的开发问题。在这段时期,面向对象的分析和设计技术逐渐走向实用,最终形成了从分析、设计到编程、测试与维护一整套的软件工程体系。
第14页,共53页,2023年,2月20日,星期四3面向对象的基本概念
对象
对象从不同的角度有不同的含义,我们针对系统开发来讨论对象的概念,其定义是:
对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。
在这里,属性和服务是构成对象的两个基本要素,其定义是:
属性是用来描述对象静态特征的一个数据项。
服务是用来描述对象动态特征(行为)的一个操作序列。
第15页,共53页,2023年,2月20日,星期四3面向对象的基本概念
例子:第16页,共53页,2023年,2月20日,星期四面向对象的基本概念(例子)•Whatarethegame’sobjects?•Whatdothoseobjectsknowhowtodo?•Whatpropertiesdotheyhave?第17页,共53页,2023年,2月20日,星期四面向对象的基本概念(例子)Whatarethegame’sobjects?–piece,boardCapabilities:Whatdothoseobjectsknowhowtodo?–piece:•becreated•fall•rotate•stopatcollision–board:•becreated•removerows•checkforendofgame
Properties:Whatattributesandcomponentsdotheyhave?–piece:•orientation•position•shape•color–board:•size•rows第18页,共53页,2023年,2月20日,星期四3面向对象的基本概念
从一般意义上讲,对象是现实世界中的一个实际存在的事物,它可以是有形的,如车辆、房屋等,也可以是无形的,如国家、生产计划等。而人们在开发一个系统时,则在一定的范围(也称问题域)内考虑和认识与系统目标有关的事物,并用系统中的对象来抽象地表示它们。在这里,对象只描述客观事物本质的、与系统目标有关的特征,而不考虑那些非本质的、与系统目标无关的特征。同时,对象是属性和服务的结合体,对象的属性值只能由这个对象的服务来读取和修改。第19页,共53页,2023年,2月20日,星期四3面向对象的基本概念-类类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
类好比是一个对象模板,用它可以产生多个对象。类所代表的是一个抽象的概念或事物,在客观世界中实际存在的是类的实例,即对象。第20页,共53页,2023年,2月20日,星期四3面向对象的基本概念-类举例:在学校教学管理系统中,“学生”是一个类,其属性具有姓名、性别、年龄等,可以定义“入学注册”、“选课”等操作。一个具体的学生“王平”是一个对象,也是“学生”类的一个实例。第21页,共53页,2023年,2月20日,星期四3面向对象的基本概念-类把众多的事物归纳并划分成一些类是人类在认识客观世界时经常采用的思维方法,分类的原则是抽象,从那些与当前目标有关的本质特征中找出事物的共性,并将具有共同性质的事物划分成一类,得出一个抽象的概念。例如:人、房屋、树木等都是一些抽象的概念,它们是一些具有共同特征的事物的集合,称为类。类的概念使我们能对属于该类的全部个体事物进行统一的描述,"树具有树根、树干、树枝和树叶,它能进行光合作用",这个描述适合所有树,而不必对每一棵具体的树进行描述。第22页,共53页,2023年,2月20日,星期四3面向对象的基本概念-封装封装(Encapsulation)是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。
封装是面向对象方法的一个重要原则,系统中把对象看成是属性和对象的结合体,使对象能够集中而完整地描述一个具体事物。封装的信息隐蔽作用反映了事物的相对独立性,当我们从外部观察对象时,只需要了解对象所呈现的外部行为(即做什么),而不必关心它的内部细节(即怎么做)。
第23页,共53页,2023年,2月20日,星期四3面向对象的基本概念-封装举例:电视机包括外形尺寸、分辨率、电压、电流等属性,具有打开、关闭、调谐频道、转换频道、设置图象等服务,封装意味着将这些属性和服务结合成一个不可分的整体,它对外有一个显示屏、插头和一些按钮等接口,用户通过这些接口使用电视机,而不关心其内部的实现细节。第24页,共53页,2023年,2月20日,星期四3面向对象的基本概念-封装与封装密切相关的概念是可见性,它是指对象的属性和服务允许对象外部存取和引用的程度。
在软件上,封装要求对象以外的部分不能随意存取对象的内部数据(属性),从而有效地避免了外部错误对它的"交叉感染",使软件错误能够局部化,大大减少了查错和排错的难度。另外,当对象内部需要修改时,由于它只通过少量的服务接口对外提供服务,便大大减少了内部修改对外部的影响,即减少了修改引起的"波动效应"。
第25页,共53页,2023年,2月20日,星期四3面向对象的基本概念-封装封装也有副作用,如果强调严格的封装,则对象的任何属性都不允许外部直接存取,因此就要增加许多没有其他意义、只负责读或写的服务,从而为编程工作增加了负担,增加了运行开销。为了避免这一点,语言往往采取一种比较灵活的做法,即允许对象有不同程度的可见性。第26页,共53页,2023年,2月20日,星期四3面向对象的基本概念-继承继承(Inheritance)是指子类可以自动拥有父类的全部属性和服务。
继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义那些已在父类中定义过的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。
第27页,共53页,2023年,2月20日,星期四3面向对象的基本概念-继承 举例:考虑轮船和客轮两个类,轮船具有吨位、时速、吃水线等属性和行驶、停泊等服务,客轮具有轮船的全部属性和服务,又有自己的特殊属性(如载客量)和服务(如供餐),因此客轮是轮船的子类,轮船是客轮的父类。
与父类/子类等价的其他术语有一般类/特殊类、超类/子类、基类/派生类等。
第28页,共53页,2023年,2月20日,星期四3面向对象的基本概念-继承 一个类可以是多个父类的子类,它从多个父类中继承了属性与服务,这称为多继承(MultipleInheritance)。
举例:客轮既是一种轮船,又是一种客运工具,它可以继承轮船和客运工具这两个类的属性和服务。第29页,共53页,2023年,2月20日,星期四3面向对象的基本概念-继承 继承对于软件复用是十分有益的,如果将OO方法开发的类作为可复用构件,那么在开发新系统时可以直接复用这个类,还可以将其作为父类,通过继承而实现复用,从而大大扩展了复用的范围。
第30页,共53页,2023年,2月20日,星期四3面向对象的基本概念-消息
消息(Message)是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等信息。
通常,一个对象向另一个对象发出消息请求某项服务,接收消息的对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象。第31页,共53页,2023年,2月20日,星期四3面向对象的基本概念-消息
举例:使用电视机时,用户通过按钮或遥控器发出转换频道的消息,电视机变换对电视台的接收信号频率,并将结果显示给用户。 在这里,用户发出的信息包括: 接受者--电视机; 要求的服务--转换频道; 输入信息--转换后的频道序号; 应答信息--转换后频道的节目。第32页,共53页,2023年,2月20日,星期四3面向对象的基本概念-消息
面向对象技术的封装机制使对象各自独立,各司其职,消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够相互配合,构成一个有机的运动的系统。
第33页,共53页,2023年,2月20日,星期四3面向对象的基本概念-消息
面向对象技术的封装机制使对象各自独立,各司其职,消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够相互配合,构成一个有机的运动的系统。
第34页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
任何事物之间都不是互相孤立,而是彼此联系的,并因此构成一个有机的整体。对象之间常见的联系包括:
*分类关系,即一般与特殊结构;
*组成关系,即整体与部分结构;
*对象属性之间的静态联系,即实例连接;
*对象行为之间的动态联系,即消息连接。
第35页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
(1)一般与特殊结构
第36页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
(1)一般与特殊结构 又称分类结构(classificationstructure),它是由一组具有一般与特殊关系(即继承关系)的类所组成的结构。其中,由一些单继承关系的类形成的结构称为层次结构,由一些多继承关系的类形成的结构称为网格结构,上图显示了一般与特殊的结构。
第37页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
(2)整体与部分结构
又称组装结构(compositionstructure),它描述对象之间的组成关系,即一个(或一些)对象是另一个对象的组成或部分。例如,大学中的系由办公室、实验室、资料室等组成,"办公室"、"实验室"、"资料室"对象类与"系"对象类之间是部分与整体的关系。。
第38页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
(3)实例连接
实例连接反映对象之间的静态联系,它是通过对象的属性来表现对象之间的依赖关系。在面向对象的术语中,对象之间的实例连接被称为链接(Link),而存在实例连接的对象类之间的联系称为"关联"(Association)。
例如,"教师"与"学生"是独立的两个类,它们之间存在"教学"联系,这种联系是通过类中的"教学课程"、"时间"、"地点"等属性建立起来的。
第39页,共53页,2023年,2月20日,星期四3面向对象的基本概念-结构与连接
(4)消息连接
消息连接描述了对象之间的动态联系,即如果一个对象在执行自己的服务时,需要通过消息请求另一个对象为它完成某个服务,那么就说第一个对象与第二个对象之间存在着消息连接。消息连接是有向的,从消息发送者指向消息接收者。
一般与特殊结构、整体与部分结构、实例连接和消息连接都是面向对象的分析和设计阶段必须考虑的重要概念,只有在分析和设计阶段认清问题域中的这些结构与连接关系,编程时才能准确而有效地反映问题域。
第40页,共53页,2023年,2月20日,星期四3面向对象的基本概念-多态性
多态性(Polymorphism)是指在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。
在体现一般与特殊关系的一个类层次结构中,不同层次的类可以共享一个操作,但却有各自不同的实现。当一个对象接收到一个请求时,它根据其所属的类,动态地选用在该类中定义的操作。
第41页,共53页,2023年,2月20日,星期四3面向对象的基本概念-多态性
举例:在父类"几何图形"中定义了一个服务"绘图",但并不确定执行时绘制一个什么图形。子类"椭圆"和"多边形"都继承了几何图形类的绘图服务,但其功能却不相同:一个是画椭圆,一个是画多边形。当系统的其他部分请求绘制一个几何图形时,消息中的服务都是"绘图",但椭圆和多边形接收到该消息时却各自执行不同的绘图算法。
第42页,共53页,2023年,2月20日,星期四3面向对象的基本概念-多态性
多态性机制不但为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。多态性的实现需要OOPL提供相应的支持,与多态性实现有关的语言功能包括:重载(overload)、动态绑定(dynamicbinding)、类属(generic)。
第43页,共53页,2023年,2月20日,星期四3面向对象的基本概念-主动对象
主动对象(ActiveObject)是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称为主动服务)。
主动对象的作用是描述问题域中具有主动行为的事物以及在系统设计时识别的任务,其主动服务描述相应任务所应完成的操作。在系统实现阶段,主动服务应该被实现为一个能并发执行的、主动的程序单位,如进程或线程。
除了具有主动服务外,主动对象的其他方面与被动对象没有什么不同,主动对象中也可以有一些在消息的驱动下执行的一般任务。
第44页,共53页,2023年,2月20日,星期四4面向对象的软件工程方法面向对象的软件工程方法是面向对象方法在软件工程领域的全面运用,涉及到从面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(ObjectOrientedTesting,OOT)到面向对象软件维护(ObjectOrientedSoftwareMaintenance,OOSM)的全过程。第45页,共53页,2023年,2月20日,星期四4面向对象的软件工程方法面向对象的分析
面向对象的分析(OOA)就是运用面向对象的方法进行需求分析,其主要任务是分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA模型。第46页,共53页,2023年,2月20日,星期四4面向对象的软件工程方法面向对象的设计
面向对象的设计(OOD)就是根据已建立的分析模型,运用面向对象技术进行系统软件设计。它将OOA模型直接变成OOD模型,并且补充与一些实现有关的部分,如人机界面、数据存储、任务管理等。
OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只有局部的修改或调整,并增加了与实现有关的独立部分,因此,OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,成为面向对象方法的主要优势。第47页,共53页,2023年,2月20日,星期四4面向对象的软件工程方法面向对象的编程
面向对象的编程(OOP)就是用一种面向对象的编程语言将OOD模型中的各个成分编写成程序,从OOA→OOD→OOP的无缝连接和平滑过渡,提高了开发工作的效率和质量。第48页,共53页,2023年,2月20日,星期四4面向对象的软件工程方法面向对象的测试
面向对象的测试(OOT)是指对于运用O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版(2024)一年级数学上册期末复习专项突破卷(二)(含答案)
- 黑龙江省智研联盟2026届高三上学期1月份第一次联合考试生物试卷(含答案)
- 2025-2026学年安徽省县域高中合作共享联盟高三(上)期末数学试卷(A卷)(含答案)
- 化工企业三级安全培训课件
- 高层建筑施工技术要点
- 钢结构工程造价控制技术要点
- 2026江苏泰兴市急救中心招聘劳务派遣人员2人备考考试题库及答案解析
- 2026山东事业单位统考济宁嘉祥县招聘34人备考考试试题及答案解析
- 市场调研公司安全管理责任制度
- 2026北京第二外国语学院第一批非事业编制人员招聘5人笔试参考题库及答案解析
- (2025版)颅内动脉粥样硬化性狭窄诊治指南
- 2025年海管水平定向钻穿越方案研究
- 全国网络安全行业职业技能大赛(网络安全管理员)考试题及答案
- 摄影家协会作品评选打分细则
- 电子产品三维建模设计细则
- 2025年中国道路交通毫米波雷达市场研究报告
- 设计交付:10kV及以下配网工程的标准与实践
- 大学高数基础讲解课件
- hop安全培训课件
- 固井质量监督制度
- 中华人民共和国职业分类大典是(专业职业分类明细)
评论
0/150
提交评论