统一建模语言第2章 对象模型_第1页
统一建模语言第2章 对象模型_第2页
统一建模语言第2章 对象模型_第3页
统一建模语言第2章 对象模型_第4页
统一建模语言第2章 对象模型_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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将对象的使用者和设计者分开;使用者不将对象的使用者和设计者分开;使用者不 必知道对象行为实现的细节,只需用设计必知道对象行为实现的细节,只需用设计 者提供的协议(消息)命令对象去实现其者提供的协议

7、(消息)命令对象去实现其 动作。动作。 l协议(协议(protocolprotocol)是一个对象对外服务的)是一个对象对外服务的 说明,它声明对象可以为外界做什么。请说明,它声明对象可以为外界做什么。请 求对象进行操作的唯一途径就是通过协议求对象进行操作的唯一途径就是通过协议 中提供的消息进行的。协议实际上是一个中提供的消息进行的。协议实际上是一个 对象所能接受的所有公有消息的集合。对象所能接受的所有公有消息的集合。 studentstudent对象类举例对象类举例 class student class student private private: 私有功能:私有功能:changema

8、rkchangemark只供只供 char char * *namename; 对象自己使用对象自己使用 intint mark mark; char char * *major major ; void changemarkvoid changemark();(); public public : 公有功能:公有功能:getnamegetname和和 char char * *getnamegetname( );); getmajorgetmajor可供外界可供外界 char char * *getmajorgetmajor():(): 对象使用对象使用 protectedprotected

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

10、种机制。它包括: 继承性继承性 新的对象自动继承该类的特征;新的对象自动继承该类的特征; 继承传递性继承传递性 子类自动继承其父类的特征;对多层类子类自动继承其父类的特征;对多层类 结构,下层子类可以继承其上各层父类的特征;结构,下层子类可以继承其上各层父类的特征; 多重继承性多重继承性 子类可以从它的多个父类(超类)中继子类可以从它的多个父类(超类)中继 承它们的特征。承它们的特征。 继承性举例继承性举例 l在“人”类中,大学生可以继承“人”和“学生” 的特征(继承传递);对于在职研究生既可以继承 “学生”的特征,又可以继承“教师”的特征(多 重继承)。 人人 身份证号:身份证号: 姓名:姓

11、名: 学号:学号: 校名校名 学生学生 大学生大学生 专业:专业: 班级:班级: 身份证号:身份证号:xxxxxxx 姓名:刘小明姓名:刘小明 学生:学生:学生: 学生:9601078 校名:西安交通大学校名:西安交通大学 大学生:大学生: 专业:计算机专业:计算机 班级:班级:962班班 人:人: 具有继承关系的对象的特性具有继承关系的对象的特性 l对象类间具有共享特征(包括数据和程序代对象类间具有共享特征(包括数据和程序代 码的共享)码的共享) l对象类间具有细微的差别或新增部分(包括对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据)非共享的程序代码和数据) l对象类间具有层

12、次结构。对象类间具有层次结构。 l继承所具有的作用有两个方面:继承所具有的作用有两个方面: 减少代码冗余减少代码冗余 通过协调性减少相互之间的接口和界面。通过协调性减少相互之间的接口和界面。 继承的分类继承的分类 l从继承源上划分为:单继承和多继承从继承源上划分为:单继承和多继承 单继承单继承 一个人只能继承一个人的财产一个人只能继承一个人的财产 多继承多继承 一个人既可以继承父母的财产,又可以继承其他一个人既可以继承父母的财产,又可以继承其他 亲属的财产。亲属的财产。 l从继承内容上划分为:取代、包含、受限和特化继承。从继承内容上划分为:取代、包含、受限和特化继承。 取代继承取代继承 徒弟掌

13、握了师傅所有的技术,在任何需要师傅徒弟掌握了师傅所有的技术,在任何需要师傅 的地方都可以由徒弟来代替;的地方都可以由徒弟来代替; 包含继承包含继承 “ “水果水果”是一类对象,是一类对象,“苹果苹果”是一种特殊的是一种特殊的 水果。水果。“苹果苹果”继承了继承了“水果水果”的所有特征;任何一个苹的所有特征;任何一个苹 果都是一个水果,即苹果包含了水果具有的所有特征;果都是一个水果,即苹果包含了水果具有的所有特征; 受限继承受限继承 “ “驼鸟驼鸟”是一种特殊的鸟,它不能继承鸟会飞是一种特殊的鸟,它不能继承鸟会飞 的特征;的特征; 特化继承特化继承 “ “工程师工程师”是一类特殊的人,他们比一般

14、人具是一类特殊的人,他们比一般人具 有更多的特有信息。有更多的特有信息。 继承性的优点继承性的优点 l能清晰体现相关类间的层次结构关系;能清晰体现相关类间的层次结构关系; l可大大增加代码的重用性;可大大增加代码的重用性; l通过增强一致性来减少模块见的接口和通过增强一致性来减少模块见的接口和 界面,大大增加可维护性;界面,大大增加可维护性; l是自动传播代码的有利工具是自动传播代码的有利工具 l在一般类基础上构造、建立、扩充新类在一般类基础上构造、建立、扩充新类 的最有效的手段的最有效的手段。 6. 6. 多态性多态性(polymorphism)(polymorphism) 当同样的消息可以

15、被送到一个父类的对象和它的子类的对 象上时,被称作多态性。即相同的操作的消息发送给不同的对 象时,每个对象将根据自己所属类中所定义的操作去执行,故 产生不同的结果。多态即一个名字可具有多种语义。 优点:多态性机制不仅增加了面向对象软件系统的灵活性、 可理解性和可维护性,进一步减少了信息冗余,而且显著提高 了软件的可重用性和可扩充性。 例如:例如: “绘图绘图”操作,作用在操作,作用在“椭圆椭圆” 和和“矩形矩形” 上,画出不同的图上,画出不同的图 形。形。 8.1.2 面向对象的基本概念面向对象的基本概念 8.1.2 面向对象的基本概念面向对象的基本概念 多态多态 运算符重载运算符重载 30

16、+ 40 35.35 + 40.21 object1 + object2 函数重载 print(20) print(“abcde”) print(a) print(3.45 * 9.2) 面向对象基本概念面向对象基本概念-多态多态 小型汽油发动机小型汽油发动机 virtual filltank() 除草机发动机除草机发动机 轮船发动机轮船发动机 virtual filltank() 链条锯发动机链条锯发动机 virtual filltank() 多态多态 /编译编译器静态确定所调用的函数器静态确定所调用的函数 smallgasengine guzzler; chainsawengine buz

17、; tillerengine roto; lawnmowerengine briggs; guzzler.filltank(); buz.filltank(); roto.filltank(); briggs.filltank(); 多态多态 /运行时动态确定所调用的函数运行时动态确定所调用的函数 smallgasengine *engine; switch(rand() % 4) case 0: engine = case 1: engine = /通过动态联编调用合适的函数 方法的覆盖方法的覆盖 l在子类中定义与父类相同的方法名称,称为方法在子类中定义与父类相同的方法名称,称为方法 的覆盖

18、。的覆盖。 l注:注: 在方法的覆盖中,由于同名方法隶属于不同的类,所以在方法的覆盖中,由于同名方法隶属于不同的类,所以 要解决调用如何区分他们的问题,只需要在方法名前面要解决调用如何区分他们的问题,只需要在方法名前面 使用使用不同的类名不同的类名或不同类的或不同类的对象名对象名即可。即可。 子类在重新定义父类已有的方法时,应保持与父类完全子类在重新定义父类已有的方法时,应保持与父类完全 相同的方法头声明,即应与父类有完全相同的方法名、相同的方法头声明,即应与父类有完全相同的方法名、 返回值和参数列表。返回值和参数列表。 方法的重载方法的重载 l子类定义同名方法来覆盖父类的方法是面向对象子类定义同名方法来覆盖父类的方法是面向对象 方法中多态技术

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论