统一建模语言第2章 对象模型

上传人:pu****.1 文档编号:570698360 上传时间:2024-08-06 格式:PPT 页数:25 大小:366.50KB
返回 下载 相关 举报
统一建模语言第2章 对象模型_第1页
第1页 / 共25页
统一建模语言第2章 对象模型_第2页
第2页 / 共25页
统一建模语言第2章 对象模型_第3页
第3页 / 共25页
统一建模语言第2章 对象模型_第4页
第4页 / 共25页
统一建模语言第2章 对象模型_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《统一建模语言第2章 对象模型》由会员分享,可在线阅读,更多相关《统一建模语言第2章 对象模型(25页珍藏版)》请在金锄头文库上搜索。

1、第第2章章 对象模型对象模型1 面向对象基本思想 从现实世界中客观存在的事物客观存在的事物(对象)出发来构造系统并在系统结构中运用人类的自然思维方式自然思维方式对问题领域问题领域内的人物、事情等的抽象抽象。运用的思维方式 抽象 分类 组合 继承 封装面向对象的含义 面向对象不仅是一些具体的软件开发技术,面向对象不仅是一些具体的软件开发技术,它是一整套关于如何看待软件系统与现实世它是一整套关于如何看待软件系统与现实世界关系、以何种观点来研究问题并进行求解、界关系、以何种观点来研究问题并进行求解、以及如何进行系统构造的软件方法学。以及如何进行系统构造的软件方法学。 用面向对象思想构造软件的主要内容

2、 对象是系统的基本单位对象是系统的基本单位 对象的属性和操作组成一个完对象的属性和操作组成一个完 整的对象整的对象 具有共同特征的对象抽象成类具有共同特征的对象抽象成类 对对象的类进一步抽象,形成类簇对对象的类进一步抽象,形成类簇 对象之间存在静态关系和动态关系对象之间存在静态关系和动态关系 1对象模型对象模型lOO方法的抽象技术lOO方法的封装技术lOO方法的继承机制OOOO方法的抽象技术(方法的抽象技术(AbstractionAbstraction)l抽抽象象是是指指将将实实际际问问题题化化简简为为计计算算机机能能处处理理和和表表示示的的形形式式。OOOO方方法法比比其其它它已已有有方方法

3、法从从应应用用设设计计到到解解决决方方案案有有更更高高的的抽抽象象性性和和更更好好的的对对应应性。性。l主要原因是:主要原因是:对对象象具具有有极极强强的的抽抽象象表表达达能能力力 OOOO方方法法采采用用对对象象来来表表达达一一切切事事物物。由由于于对象具有不同的属性,使得对象具有不同的属性,使得OOOO方法具有很强的建模能力。方法具有很强的建模能力。对对象象实实现现了了抽抽象象的的数数据据类类型型 在在对对象象抽抽象象的的基基础础上上,OOOO方方法法更更进进一一步步提提出出对对象象类类的的概概念念,从从而而实实现现了了更更高高层层的的抽抽象象。用用户户可可以以根根据据实实际际问问题题的的

4、需需要要,自自定定义义对对象象类类的的机机制制被被称称为为“抽抽象象的的数数据据类类型型”,它使它使OOOO方法具有更强的解决复杂问题的能力。方法具有更强的解决复杂问题的能力。规规范范化化的的抽抽象象方方法法 OOOO方方法法的的抽抽象象技技术术更更加加接接近近于于人人类类认认识识客客观观事事物物的的思思维维方方法法。寻寻找找要要求求解解的的对对象象实实体体、研研究究其其属属性性和和功功能能、再再根根据实体的性质、功能将它们组成不同的功能模块。据实体的性质、功能将它们组成不同的功能模块。OOOO方法的封装技术(方法的封装技术(EncapsulationEncapsulation)l在在程程序序

5、设设计计中中,封封装装是是指指将将数数据据及及与与这这些些数数据据有有关关的的操操作作集集合合放放在在一一起起,形形成成一一个个能能动动的的实实体体对对象象(黑黑匣匣子子)。用用户户不不必必知知道道对对象象行行为为的的实实现现细细节节,只只要要根根据据对对象提供的外部特征及接口来访问对象。象提供的外部特征及接口来访问对象。l所所谓谓“封封装装性性”是是一一种种信信息息隐隐藏藏技技术术,其其目目的的是是将将对对象象的设计者和对象的使用者分开。的设计者和对象的使用者分开。l对象的封装性体现在:对象的封装性体现在:具有清楚的边界具有清楚的边界 对象的数据结构和操作限定与其中对象的数据结构和操作限定与

6、其中具具有有统统一一的的外外部部接接口口(也也称称消消息息模模式式) 它它描描述述了了对对象象之之间的相互作用、请求和响应间的相互作用、请求和响应代代码码保保护护 对对象象内内部部的的实实现现代代码码受受到到封封装装壳壳的的保保护护,其其它它对象不能直接修改本对象所拥有的数据和代码。对象不能直接修改本对象所拥有的数据和代码。封装机制的目的封装机制的目的l将将对对象象的的使使用用者者和和设设计计者者分分开开;使使用用者者不不必必知知道道对对象象行行为为实实现现的的细细节节,只只需需用用设设计计者者提提供供的的协协议议(消消息息)命命令令对对象象去去实实现现其其动作。动作。l协协议议(Protoc

7、olProtocol)是是一一个个对对象象对对外外服服务务的的说说明明,它它声声明明对对象象可可以以为为外外界界做做什什么么。请请求求对对象象进进行行操操作作的的唯唯一一途途径径就就是是通通过过协协议议中中提提供供的的消消息息进进行行的的。协协议议实实际际上上是是一一个个对象所能接受的所有公有消息的集合。对象所能接受的所有公有消息的集合。STUDENTSTUDENT对象类举例对象类举例 class student class student private private: 私有功能:私有功能:changemarkchangemark只供只供 char *namechar *name; 对象自

8、己使用对象自己使用 intint mark mark; char *major char *major ; void void changemarkchangemark();(); public public : 公有功能:公有功能:getnamegetname和和 char *char *getnamegetname( );); getmajorgetmajor可供外界可供外界 char *char *getmajorgetmajor():(): 对象使用对象使用 protectedprotected: intint getmarkgetmark( );); 被保护功能:被保护功能:getm

9、arkgetmark,虽向外虽向外 ; 界公布,但只能界公布,但只能 由为排生类对象提由为排生类对象提 供服务。供服务。OOOO方法的继承机制方法的继承机制(Inheritance)(Inheritance)l继继承承所所表表达达的的是是一一种种对对象象类类之之间间的的相相互互关关系系, ,它它使使得某类对象可以继承另一类对象的特征和能力。得某类对象可以继承另一类对象的特征和能力。l继继承承性性的的含含义义是是:自自动动共共享享类类的的对对象象的的全全部部特特征征的的一种机制。它包括:一种机制。它包括:继承性继承性 新的对象自动继承该类的特征;新的对象自动继承该类的特征;继继承承传传递递性性

10、子子类类自自动动继继承承其其父父类类的的特特征征;对对多多层层类类结构,下层子类可以继承其上各层父类的特征;结构,下层子类可以继承其上各层父类的特征;多多重重继继承承性性 子子类类可可以以从从它它的的多多个个父父类类(超超类类)中中继继承它们的特征。承它们的特征。继承性举例继承性举例l在“人”类中,大学生可以继承“人”和“学生”的特征(继承传递);对于在职研究生既可以继承“学生”的特征,又可以继承“教师”的特征(多重继承)。 人人身份证号:身份证号:姓名:姓名:学号:学号:校名校名学生学生大学生大学生专业:专业:班级:班级:身份证号:身份证号:xxxxxxx姓名:刘小明姓名:刘小明学生:学生:

11、学生:学生:9601078校名:西安交通大学校名:西安交通大学大学生:大学生:专业:计算机专业:计算机班级:班级:962班班人:人:具有继承关系的对象的特性具有继承关系的对象的特性l对对象象类类间间具具有有共共享享特特征征(包包括括数数据据和和程程序序代代码的共享)码的共享)l对对象象类类间间具具有有细细微微的的差差别别或或新新增增部部分分(包包括括非共享的程序代码和数据)非共享的程序代码和数据)l对象类间具有层次结构。对象类间具有层次结构。l继承所具有的作用有两个方面:继承所具有的作用有两个方面:减少代码冗余减少代码冗余通过协调性减少相互之间的接口和界面。通过协调性减少相互之间的接口和界面。

12、继承的分类继承的分类l从继承源上划分为:单继承和多继承从继承源上划分为:单继承和多继承单继承单继承 一个人只能继承一个人的财产一个人只能继承一个人的财产多继承多继承 一个人既可以继承父母的财产,又可以继承其他亲一个人既可以继承父母的财产,又可以继承其他亲属的财产。属的财产。l从继承内容上划分为:取代、包含、受限和特化继承。从继承内容上划分为:取代、包含、受限和特化继承。取取代代继继承承 徒徒弟弟掌掌握握了了师师傅傅所所有有的的技技术术,在在任任何何需需要要师师傅傅的的地方都可以由徒弟来代替;地方都可以由徒弟来代替;包包含含继继承承 “水水果果”是是一一类类对对象象,“苹苹果果”是是一一种种特特

13、殊殊的的水水果果。“苹苹果果”继继承承了了“水水果果”的的所所有有特特征征;任任何何一一个个苹苹果果都是一个水果,即苹果包含了水果具有的所有特征;都是一个水果,即苹果包含了水果具有的所有特征;受受限限继继承承 “驼驼鸟鸟”是是一一种种特特殊殊的的鸟鸟,它它不不能能继继承承鸟鸟会会飞飞的的特征;特征;特特化化继继承承 “工工程程师师”是是一一类类特特殊殊的的人人,他他们们比比一一般般人人具具有有更多的特有信息。更多的特有信息。继承性的优点继承性的优点l能清晰体现相关类间的层次结构关系;能清晰体现相关类间的层次结构关系;l可大大增加代码的重用性;可大大增加代码的重用性;l通通过过增增强强一一致致性

14、性来来减减少少模模块块见见的的接接口口和和界界面,大大增加可维护性;面,大大增加可维护性;l是自动传播代码的有利工具是自动传播代码的有利工具l在在一一般般类类基基础础上上构构造造、建建立立、扩扩充充新新类类的的最有效的手段最有效的手段。6. 6. 多态性多态性(Polymorphism)(Polymorphism) 当同样的消息可以被送到一个父类的对象和它的子类的对象上时,被称作多态性。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。多态即一个名字可具有多种语义。 优点:多态性机制不仅增加了面向对象软件系统的灵活性、可理解性和可维护性,进一

15、步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。 例如:例如: “绘图绘图”操作,作用在操作,作用在“椭圆椭圆” 和和“矩形矩形” 上,画出不同的图形。上,画出不同的图形。8.1.2 面向对象的基本概念面向对象的基本概念8.1.2 面向对象的基本概念面向对象的基本概念多态多态运算符重载运算符重载30 + 4035.35 + 40.21object1 + object2函数重载print(20)print(“abcde”)print(a)print(3.45 * 9.2)面向对象基本概念面向对象基本概念-多态多态小型汽油发动机小型汽油发动机virtual FillTank()除草机发动

16、机除草机发动机轮船发动机轮船发动机virtual FillTank()链条锯发动机链条锯发动机virtual FillTank()多态多态/编译编译器静态确定所调用的函数器静态确定所调用的函数 SmallGasEngine guzzler; ChainSawEngine buz; TillerEngine roto; LawnMowerEngine briggs; guzzler.FillTank(); buz.FillTank(); roto.FillTank(); briggs.FillTank();多态多态 /运行时动态确定所调用的函数运行时动态确定所调用的函数 SmallGasEngi

17、ne *engine; switch(rand() % 4) case 0: engine = &guzzler;case 1: engine = &buzcase 2: engine = &rotocase 3: engine = &briggs engine-FillTank(); /通过动态联编调用合适的函数方法的覆盖方法的覆盖l在子类中定义与父类相同的方法名称,称为方法的在子类中定义与父类相同的方法名称,称为方法的覆盖。覆盖。l注:注:在方法的覆盖中,由于同名方法隶属于不同的类,所以在方法的覆盖中,由于同名方法隶属于不同的类,所以要解决调用如何区分他们的问题,只需要在方法名前面要解决调

18、用如何区分他们的问题,只需要在方法名前面使用使用不同的类名不同的类名或不同类的或不同类的对象名对象名即可。即可。子类在重新定义父类已有的方法时,应保持与父类完全子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、相同的方法头声明,即应与父类有完全相同的方法名、返回值和参数列表。返回值和参数列表。方法的重载方法的重载l子类定义同名方法来覆盖父类的方法是面向对象方子类定义同名方法来覆盖父类的方法是面向对象方法中多态技术的一种实现。法中多态技术的一种实现。所谓所谓多态多态是指是指同名的不同方法共存同名的不同方法共存。有助于隐藏对象内。有助于隐藏对象内部的细

19、节,提高程序的抽象程度,是面向对象程序设计部的细节,提高程序的抽象程度,是面向对象程序设计中经常使用的方法。中经常使用的方法。l实现多态技术的另一种重要的手段就是方法的重载。实现多态技术的另一种重要的手段就是方法的重载。l重载:重载:类对自身已有的同名法的重新定义。类对自身已有的同名法的重新定义。重载与重载与覆盖不同,覆盖不同,重载不是子类对父类同名方法的重新定重载不是子类对父类同名方法的重新定义义。l方法的重载是同类中同名方法共存的情况,不能方法的重载是同类中同名方法共存的情况,不能像方法的覆盖那样采用类名前缀来区分,而应该像方法的覆盖那样采用类名前缀来区分,而应该采用通过采用通过参数列表参数列表来区分来区分不同的方法不同的方法。l同类中同名的不同方法需要有不同的参数列表,同类中同名的不同方法需要有不同的参数列表,包括包括参数顺序的不同参数顺序的不同和和参数类型的不同参数类型的不同。 重载函数重载函数 C+中可以在同一程序中多次定义同名函数, 只要各函数间的参数个数或类型不同, 例如: int Abs(int n) return n0?-n: n; float Abs(float n) return n0?-n: n;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号