面向对象的概念.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1面向对象技术2课程特点面向对象是一种全新的思考方式该课程以概念为基础,为主线注重建模和视图提供统一建模语言UML深入理解面向对象的概念;掌握面向对象的建模过程;掌握建模语言UML;设计健壮的、可扩展的、可复用的、可维护的软件系统。3课程目的4面向对象的概念面向对象的软件开发模型第1章面向对象的概念5理解并掌握如下概念类和对象对象和实例对象和变量实例变量与类变量方法与操作抽象类和抽象方法两种方法的本质区别面向对象的软件开发模型61.1传统软件开发方法的问题模型阶段性模型的顺序性以功能为主的方法,功能易变模块的封装性、可重用性差,接口易变没有很好解决软件开发中的两个经典问题大峡谷北端大峡谷南端数据模型处理模型科罗拉多河传统方法,数据和功能各自描述系统的一部分,两种模型表示角度不同,若合起来,对一致性、精确性难以验证。OO的对象模型解决了此问题。两个经典问题:问题“1”图1-1经典问题“1”7两个经典问题:问题“2”分析模型设计模型大峡谷北端科罗拉多河大峡谷南端传统方法,分析和设计两个阶段描述工具不同,需要转换,重新建立模型,向程序员解释编程要求。OO方法的设计是对OOA的扩展。图1-2经典问题“2”89面向对象的程序设计语言面向对象的设计面向对象的分析面向对象的发展过程1.2面向对象方法的由来解决问题的过程图1-3面向对象方法的发展10Simula(DahlandNygaad)—模拟现实世界对象的行为。60年代末,挪威奥斯陆大学和挪威计算中心研制的创建了第一个OO系统。Ada(G.Booch)—具有对象的特征,是一个基于对象的语言。70年代,G.Booch在研究Ada软件开发中,提出了OO思想,创建了Ada的程序包。Smalltalk(美国XeroxParc研究中心A.Key研制)72年,推出Smalltalk72---有对象的概念;76年,推出Smalltalk76---有类的概念;81年,推出Smalltalk80和环境---全面体现了OO程序设计语言的特征。1.2面向对象方法的由来Objective-C(Cox1986,CoxandNovobilski1991)。支持多态、信息隐敝。C++(1980,贝尔实验室的BjarneStrousrup)支持抽象、继承、自动引用、动态绑定、操作符重载等,但维护困难。Eiffel(Myeer1990)有断言,解决正确性、健壮性、可移植性、效率等。Java(Sun公司JamesGosling1990)在SunWorld95年会上公布。Java=C++-复杂性和奇异性+安全性和可移植性。111.2面向对象方法的由来1.3面向对象与面向过程的软件开发区别1.3.1方法的区别1.3.2分析与设计的区别1.3.3程序的区别121.3.1方法的区别13(1)面向过程方法是开发人员按计算机的结构去思考问题。(2)面向过程方法是开发人员在问题空间和解空间进行对应。面向对象方法是以对象(事物)代表求解问题的中心环节,是按解决问题的方式去思考问题。面向对象的方法,是现实的问题空间与软件系统的解空间的近似和直接模拟,使人们对复杂系统的认识过程和程序的实现过程尽可能一致。14(3)面向过程方法以函数过程和数据结构为中心建模,用计算机的术语描述问题。面向对象的方法是对求解问题本身建模,用问题本身的术语描述问题。1.3.1方法的区别15函数和过程举例:某所大学信息系统的设计数据图1-4结构化方法结构化的方法:将定义数据库的布局和程序的设计来访问这些数据。数据库中存有关于学生、教授、教室以及课程的信息。程序可以让用户登记学生的选课情况,分派教授授课,安排授课教室等。程序可以访问并更新数据库。16对象对象对象对象图1-5面向对象方法面向对象的方法:学生、教授、教室和课程等被当成对象来考虑。定义一组能进行交互的类(类,class是相似对象的一种通用表示)。这样的类将包括功能(程序)和数据的抽象。举例:某所大学信息系统的设计171.3.2分析与设计的区别图书馆信息系统CatalogLibrarianBookLibrarySystemRecordLoansAddResourcesReportFines图1-6按对象概念分解图1-7按功能或过程分解面向对象分析与设计面向过程的分析与设计分而治之分析和设计的采用一致的概念、原则、表示法1.3.3程序的区别面向对象的程序=对象+消息存款取款图1-9面向对象的储蓄处理事务银行账户对象数据和施加在其上的操作分离;代码按过程组织的,每个过程操作不同类型的数据。外部消息利息结算利息结算存款取款账户余额账户余额图1-8面向过程的储蓄处理事务在面向对象中,是在数据抽象内来组织过程即代码是按类组织的,每个类包含对该类实例进行操作的过程。面向过程的程序=数据结构十算法18191.4面向对象的范型1.4.1喷泉模型1.4.2OO软件开发生命周期1.4.1喷泉模型(fountainmodel)20调试验收入库概括聚集编码设计分析图1-10喷泉模型1990年,B.Hendersonseller和J.M.Eduarols在其“面向对象系统生存期”一文提出的OO开发的七点框架,并以Bailin提出的实体数据流图或信息流图作底层工具,而构思的面向对象生存期的喷泉模型。无隙性:各阶段无明显界限复用:支持分析和设计结果的自然复用;概括、聚集对客观世界对象的模型化。21系统分析系统设计写程序问题定义系统测试系统维护1.4.2OO软件开发生命周期图1-11OO软件开发生命周期221.5面向对象的概念面向对象概念的提出:使描述问题的问题空间和解决问题的方法空间一致(概念上、处理行为上一致)按问题领域的基本事物实现自然分割按人们思维方式建立问题域模型演绎思维(从一般到特殊)归纳思维(从特殊到一般)为此,必须建立直接表现组成问题域的事物,及这些事物间相互联系的概念,建立适应人们一般思维方式的描述范式。Coad和Yourdon给出了面向对象的定义:面向对象=对象+类+继承+通信23问题空间的对象:现实世界中任何实际存在的事物都是对象(是对实体概念的一种描述)。物理实体软件实体概念实体1.5.1对象(Object)24对象是一个具有封装了的数据结构和操作的实体,这个实体有一个标识它的名字,对外通过相应的接口,提供相应的服务。计算机程序中的对象是具有三个特征的实体:标识、状态、行为。方法空间的对象:是对某个事物的抽象描述。Object::=(OID,DS,OS,MI)1.5.1对象(Object)25对象特征(对象的属性和行为)属性Atribute描述对象“静态”(结构)特征的一个数据项;属性是对象知道的事情;描述对象的当前状态。操作Operation描述对象“动态”(行为)特征的一个操作序列;操作是调用对象执行的转换或查询的规格说明;有可能改变对象的状态;操作是方法的抽象说明。说明对象在什么条件下是可行的。方法Method对象完成的事情。是操作的实现或执行操作的函数或过程。是实现类的行为的过程抽象。规格思考:属性完全相同的两个事物,是否是同一个对象?举例。两个教师姓名和职称都相同,但它们却是两个不同的对象。所有的对象都是独立的实体,都有其唯一的标识。对象之间的区别是由它们固有的存在性所决定的,而与它们的特征是否相同无关。2627类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。1.5.2类(Class)(1)类的定义Class::=(ID,ATT,OPE,ITF,INH)其中ID类名,ATT属性集,OPE操作集,ITF接口消息集,INH类的继承性集。(2)类和对象类可以是对象,但对象不是类;类是对象的抽象描述;对象是类的实例;实例:Instance具有身份和值的独立实体概念层的类RectangleheightwidthgetArearesizeRectangleheight:intwidth:intgetArea():intresize(int,int)Rectangleheightwidth对象实例p:Rectangleheight=10width=20q:Rectangleheight=15width=25(3)类的描述几种情况说明层的类实现层的类281.5.2类(Class)例如绘图中的点类:x:inty:intmove()getX()getY()setX()setY()Point用Java定义点类:ClassPoint{intnx;//点的x坐标intny;//点的y坐标intnColor;//颜色值voidmove(intx,inty);//将当前点移到×、y处intgetX();//获当前点X坐标intgetY();//获当前点Y坐标intsetX();intsetY();}Pointmypoint;//点类的一个对象291.5.2类(Class)类是一个支持继承的抽象数据类型;(4)类的作用类是创建(实例化)对象的模板,类是对对象的抽象;类类似一张表,表内描述了数据和操作的封装体。类是一个命名空间,为类的泛化声明建立作用域;301.5.2类(Class)31表示两个类之间是“isa”,“islike”或“iskindof”关系。1.5.3继承(Inheritance)superclasssubclass继承使两个以上的类共享相同的属性和/或相同方法。继承提高了复用性。继承的各个类可形成层次结构。继承集中的属性,只能声明一次。操作可以被多次声明,只要声明相同。321.5.4消息(Message)消息包括的信息消息的发出者消息的接收者要求的服务输入的信息输出(回答)的信息协议对象间通信要遵守条件消息是一个对象向另一个对象发出的服务请求(操作的请求、执行方法的请求),要求系统的某个对象完成它指定的操作。33为不同的目的建立不同层次上的抽象,并将不同层次上的同一概念的两种元素联系起来的依赖关系,一个元素比另一个元素更详细。1.5.5抽象(Abstraction)抽象是确定一个事物的本质特征的行为,使这个事物与其他事物区分开。抽象是自底向上的对几组事物观察,找出事物的共性,把具有共性的事物划分成一类。34抽象类abstractclass抽象类是不能被直接实例化的类,即它没有直接的实例。对象是对问题域中某些事物的抽象;类是对对象的一个抽象;1.5.5抽象(Abstraction)35具体类letterBody:StringCursor:IntegerGetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():String图1-12具体超类产生模糊性1.5.5抽象(Abstraction)36抽象类图1-13抽象超类避免模糊性LetterabstractBody:StringCursor:IntegergetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():StringNonEncryptedLettergetNextSentence():String1.5.5抽象(Abstraction)371.5.6封装(Encapsulation)将数据(属性)和方法(服务)结合成一个独立的系统单位。隐藏了对象的内部细节:信息隐蔽(informationhiding)有一个清晰的边界有确定的接口(即协议)受保护的内部实现封装性的条件售报亭报刊名称报刊定价销售总额(钱租)报刊零售款货清点图1-14售报亭对象38封装的意义表达事物的静态特征和动态特征(是事物不可分割的两个侧面)。封装性使我们只要注意该对象对外呈现什么行为(做什么),而不关心内部的实现细节(怎么做)。可以避免外部入侵,提高软件的可维护性、可修改性。描述系统中的功能是如何划分的。391.5.7多态性(Polymo

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功