版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计理论篇面向对象程序设计理论篇第三章:面向对象系统的特性封装性继承性多态性第三章:面向对象系统的特性封装性◆3.1封装性◆3.1.1什么是封装第三章:面向对象系统的特性封装就是将一个数据和与这个数据有关的操作集合放在一起,形成一个能动的实体——对象,用户不必要知道对象行为的实现细节,只需要根据对象提供的外部特性接口访问对象即可。因此,从用户的角度看,就象一个“黑匣子”。封装的条件:具有一个清楚的边界;具有一个接口;保护内部代码不被其他对象直接修改;◆3.1封装性◆3.1.1什么是封装第三章:面向对象系◆3.1封装性◆3.1.2什么是协议第三章:面向对象系统的特性协议是一个对象对外服务的说明,是一个对象所能接受的所有公有消息的集合。举例◆3.1封装性◆3.1.2什么是协议第三章:面向对象系◆3.1封装性◆3.1.3面向对象系统的封装性第三章:面向对象系统的特性面向对象的封装性是一种信息隐藏技术:目的:使用者与开发者分开系统设计员——表明所提供的服务界面用户或应用程序员——对象提供一组服务,屏蔽内部开发程序员——对象实现、编码涵义:主要是对象的封装,但封装的含义不仅仅是数据隐藏,它意味着任何形式的隐藏,如类的封装。◆3.1封装性◆3.1.3面向对象系统的封装性第三章◆3.2继承性◆3.2.1继承的引入第三章:面向对象系统的特性继承表达了一种对象类的相交关系继承的几个特征:共享:数据和代码细微差别与新增层次结构继承的作用:减少代码冗余通过协调减少相互之间的接口和界面◆3.2继承性◆3.2.1继承的引入第三章:面向◆3.2继承性◆3.2.1继承的分类第三章:面向对象系统的特性继承从继承源划分从继承内容划分单继承多继承取代继承包含继承受限继承特化继承说明:继承关系存在与类与类之间◆3.2继承性◆3.2.1继承的分类第三章:面向◆3.2继承性◆3.2.1继承与封装的关系第三章:面向对象系统的特性相似性:都是一种共享代码的手段继承是一种静态共享代码的手段封装是一种动态共享代码的手段区别:针对的层次不同封装性主要是指对象的封装继承是类的机制,是一种静态机制对象是类的实例,也许是派生类的实例也许是基类的实例◆3.2继承性◆3.2.1继承与封装的关系第三章◆3.2继承性◆3.2.1继承与委托的关系第三章:面向对象系统的特性相似性:节省代码派生类通过继承共享了基类的代码委托是一个对象通过其他对象完成操作区别:性质不同继承是静态关系委托既可以静态定义也可以动态定义◆3.2继承性◆3.2.1继承与委托的关系第三章◆3.2继承性◆3.2.1类的层次第三章:面向对象系统的特性类的层次可以清楚有效的表示现实世界中事物的分类问题。ClassA{//…}ClassB:publicA{//…}ClassC:publicB{//…}举例:VisualC++中类的层次◆3.2继承性◆3.2.1类的层次第三章:面向对◆3.2继承性◆3.2.1单继承与多继承第三章:面向对象系统的特性ABCDEABCDEF◆3.2继承性◆3.2.1单继承与多继承第三章:◆3.2继承性◆3.2.1面向对象系统的继承性第三章:面向对象系统的特性继承机制的优点:清晰体现类层次结构代码共享以减少冗余减少接口和界面,容易维护代码传播的有效手段是构造、建立和扩充新类的有效手段◆3.2继承性◆3.2.1面向对象系统的继承性第◆3.3多态性◆3.3.1重载的概念第三章:面向对象系统的特性重载的含义是指通过为函数和运算符创建附加定义而使他们的名字可以重载,即相同名字的函数或运算符在不同的场合可以表现出不同的行为。函数重载运算符重载◆3.3多态性◆3.3.1重载的概念第三章:面向◆3.3多态性◆3.3.2虚函数的概念第三章:面向对象系统的特性虚函数使用户在一个类等级中可以使用相同函数的多个版本,每一个版本均属于类等级中的不同的类,究竟使用的是哪一个版本需要在运行中决定。注意:虚函数的各个版本中,其返回值、函数参数的个数和类型必须是一致的。◆3.3多态性◆3.3.2虚函数的概念第三章:面◆3.3多态性◆3.3.3抽象类的概念第三章:面向对象系统的特性抽象类的作用在于将许多有关的类组织在一起,提供一个公共的基类,而那些被它组织在一起的具体的类由它派生出来。它刻画了公有行为的特征,并通过继承机制传送给它的派生类。抽象类只描述与这类对象有关的协议和协议消息的部分实现,完整的实现留给它的派生类来具体完成。抽象类型是不能创建具体对象的类型,即不能产生实例,只能建立它的派生类的对象。
举例◆3.3多态性◆3.3.3抽象类的概念第三章:面◆3.3多态性◆3.3.3面向对象系统的多态性第三章:面向对象系统的特性涵义:面向对象系统的多态性指的是,当不同的对象收到相同的消息时产生不同的动作。C++语言支持两种多态:编译时的多态性和运行时的多态性。编译时的多态性是通过使用重载来实现的,是相对静止的多态性。运行时的多态性是通过虚函数来实现的,到底运行的哪个函数版本,需要在运行时找出发送消息的对象来确定。举例◆3.3多态性◆3.3.3面向对象系统的多态性第◆总结第三章:面向对象系统的特性概念:封装、协议、继承、委托、重载、多态、抽象类等。面向对象系统的多态性。封装与继承的关系。◆总结第三章:面向对象系统的特性概念:封装、协议、继承、委◆3.1封装性◆3.1.2什么是协议第三章:面向对象系统的特性返回classstudent{private:char*name;int*major;voidchangmark();protect:intgetmark();public:char*getname();char*getmajor();}私有段:不向外界公开的功能,只供对象自己使用。保护段:部分向外界宣布的功能,只供自己及派生类对象使用。公有段:所有向外界宣布的功能,可以响应外部的请求,是属于协议的内容。◆3.1封装性◆3.1.2什么是协议第三章:面向对象系◆3.2继承性第三章:面向对象系统的特性返回◆3.2继承性第三章:面向对象系统的特性返回◆3.3多态性◆3.3.3抽象类的概念第三章:面向对象系统的特性classshape{private:intx,y;//……public:voidmove(intint);virtualvoidrotate(int)=0;//定义纯虚函数Virtualvoiddraw();//定义虚函数}classcircle:publicshape{private:intradius;public:voidrot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论