第08章 类和对象课件.ppt
《第08章 类和对象课件.ppt》由会员分享,可在线阅读,更多相关《第08章 类和对象课件.ppt(65页珍藏版)》请在三一办公上搜索。
1、第8章 类和对象,C+程序设计,Logo,本章内容,8.1 面向对象程序设计方法概述8.2 类的声明和对象的定义8.3 类的成员函数8.4 对象成员的引用8.5 类和对象的简单应用举例8.6 类的封装性和信息隐蔽,Logo,8.1 面向对象程序设计方法概述,面向对象程序设计:把同一对象的数据和操作封装在一起,使用对象、类、继承、封装、消息等基本概念来进行的程序设计。例如:人们生产汽车时,发动机、底盘、车身和轮子分别由不同生产厂商设计和制造,最后由汽车制造商组装在一起。在组装时,各部分之间有一定的联系,以便协调工作,各部分内部如何工作一无所知。为了进一步说明问题,下面先讨论几个有关的概念。,OO
2、=对象+类+消息+继承+封装+多态,Logo,8.1 面向对象程序设计方法概述,1.对象 对象是具有明显边界和含义的概念、抽象或事物,一个对象代表了一个现实的或虚拟的实体。,自然实体概念实体软件实体,化学过程,Logo,8.1 面向对象程序设计方法概述,1.对象对象(Object)是包含客观世界物体特征的抽象实体,客观世界中任何一个事物都可以看成一个对象。对象可大可小。对象是构成系统的基本单位。对象由属性(Attribute)和行为(Action)两部分组成。对象的两个要素:属性和行为。属性:对象的特征,定义成员变量描述。行为:对象的动作,定义成员函数完成。,Logo,8.1 面向对象程序设计
3、方法概述,对象属性举例:一个学生对象属性:姓名、号码、性别、职业、年级。一个教师对象属性:姓名、号码、性别、职业、职务。一台录像机对象属性:型号、品牌、体积、重量、价格。一台笔记本电脑对象的属性:?,Logo,8.1 面向对象程序设计方法概述,对象行为举例:一个学生对象行为:听课、交作业、考试。一个教师对象行为:讲课、改作业、监考。一台录像机对象行为:录像、播放、暂停、快进、停止。一台笔记本电脑的行为:?,Logo,8.1 面向对象程序设计方法概述,在一个系统中的多个对象之间通过一定的渠道相互联系,如图8.1示意。要使某一个对象实现某一种行为(即操作),应当向它传送相应的消息。对象之间就是这样
4、通过发送和接收消息互相联系的。,Logo,8.1 面向对象程序设计方法概述,2、类 每一个实体都是对象。有一些对象是具有相同的结构和行为的。每个对象都属于一个特定的类型。类(Class)是一组具有相同结构和行为的对象的集合。,Logo,8.1 面向对象程序设计方法概述,2、类类的举例:学生类、教师类、录像机、笔记本电脑、汽车、饮料、气体、矿石、人、动物.,如:10个不同尺寸的三角形是10个对象。这10个三角形对象有相同的属性结构和行为,可以将它们抽象为一种类型,称为三角形类型。,Logo,8.1 面向对象程序设计方法概述,3.封装与信息隐蔽封装:将有关的数据和操作代码封装在一个对象中,形成一个
5、基本单位,各个对象之间相对独立,互不干扰。信息隐蔽:将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留少量接口,以便与外界联系,接收外界的消息。信息隐蔽有利于数据安全,防止无关的人了解和修改数据。,封装可以降低复杂度和出错的可能性,提高类或模块的可重用性、隐藏性,使用方便,易于维护。,Logo,8.1 面向对象程序设计方法概述,3.封装与信息隐蔽,Logo,8.1 面向对象程序设计方法概述,4.继承与派生 继承是一种由已有的类创建新类的机制。子类从父类继承了共性,又派生出自己的各自的特性。父类-子类(派生类)将门虎子继承,Logo,8.1 面向对象程序设计方法概述,Logo,8.1 面向对象程序
6、设计方法概述,Logo,8.1 面向对象程序设计方法概述,父类别可以被多个子类别继承,子类别也可以是别的类的父类,从而建立类继承的层次结构。,Logo,8.1 面向对象程序设计方法概述,C+提供了继承机制,采用继承的方法可以很方便地利用一个已有的类建立一个新的类。这就是常说的“软件重用”(software reusability)的思想。继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。,Logo,8.1 面向对象程序设计方法概述,5.多态性由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。如:动物都会叫,但不同的
7、动物的叫声不同。如:在Windows环境下,用鼠标双击一个文件对象(这就是向对象传送一个消息),根据文件对象的不同,将做不同的操作。如果是可执行文件,则会执行此程序;如果是文本文件,则启动文本编辑器并打开该文件。,Logo,8.1.2 面向对象程序设计的特点,面向对象程序设计面对的是一个个对象。程序设计者的任务包括两个方面:(1)设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;(2)考虑怎样向有关对象发送消息,以完成所需的任务。这时他如同一个总调度,不断地向各个对象发出命令,让这些对象活动起来(或者说激活这些对象),完成自己职责范围内的工作。各个对象的操作完成了,整体任务也就完成了。
8、显然,对一个大型任务来说,面向对象程序设计方法是十分有效的,它能大大降低程序设计人员的工作难度,减少出错机会。,Logo,8.1.4 面向对象的软件开发,随着软件规模的迅速增大,软件人员面临的问题十分复杂。需要规范整个软件开发过程,明确软件开发过程中每个阶段的任务,在保证前一个阶段工作的正确性的情况下,再进行下一阶段的工作。这就是软件工程学需要研究和解决的问题。,面向对象的软件工程包括以下几个部分:,Logo,8.1.4 面向对象的软件开发,Logo,8.2 类的声明和对象的定义,8.2.1对象和类的关系每一个对象都是某一个类的实例;每一个类在某一时刻都有零个或更多的实例;类是静态的,它们的存
9、在、语义和关系在程序执行前就已经定义好了;对象是动态的,它们在程序执行时可以被创建和删除;类是抽象的,不占用内存,而对象是具体的,占用存储空间。在一开始时弄清对象和类的关系是十分重要的。,Logo,8.2 类的声明和对象的定义,8.2.1对象和类的关系白马非马对象和类 这是中国古代伟大的逻辑学家公孙龙(约公元前320-250年)提出的一个著名的逻辑问题,出自公孙龙子白马论。,类是对象的抽象,而对象是类的具体实例。,Logo,8.2类的声明和对象的定义,8.2.2类的声明 在C+中声明一个类类型和声明一个结构体类型是相似的。以前,定义结构体类型,描述一个对象:struct Student int
10、 num;char name20;char sex;Student stud1,stud2;/定义了两个结构体变量stud1和stud2,我们把一个对象可能具有的动作,加入到对象的描述中,就形成了类。,Logo,8.2.2 类的声明,class Student/以class开头 int num;char name20;char sex;/以上3行是数据成员 void display()/这是成员函数coutnum:numendl;coutname:nameendl;coutsex:sexendl;/以上4行是函数中的操作语句;Student stud1,stud2;/定义了两个Student
11、类的对象stud1和stud2 可以看到声明类的方法是由声明结构体类型的方法发展而来的。,Logo,8.2.2 类的声明,class private:/私有成员,缺省存取权限 public:/公有成员 protected:/保护成员;,Logo,8.2.2 类的声明,类一经定义就形成了边界,达成了封装,就像建 了一幢房子访问修饰符的作用就是在房子上开窗,开门,让 别人可以访问。,访问修饰符,Logo,8.2.2 类的声明,访问修饰符,Logo,8.2.2 类的声明,访问修饰符,Logo,8.2.2 类的声明,注意:(1)在声明类类型时,声明为private的成员和声明为public的成员的次序
12、任意,既可以先出现private部分,也可以先出现public部分。(2)如果在类体中既不写关键字private,又不写public,就默认为private。(3)在一个类体中,关键字private和public可以分别出现多次。每个部分的有效范围到出现另一个访问限定符或类体结束时(最后一个右花括号)为止。但是为了使程序清晰,应该养成这样的习惯:使每一种成员访问限定符在类定义体中只出现一次。,Logo,8.2.2 类的声明,可以将上面类Student的声明改为class Student/声明类类型 private:/声明以下部分为私有的int num;char name20;char sex;
13、public:/声明以下部分为公用的void display()coutnum:numendl;coutname:nameendl;coutsex:sexendl;Student stud1,stud2;/定义了两个Student 类的对象,Logo,8.2.2 类的声明,不能把类中的全部成员与外界隔离,一般是把数据隐蔽起来,而把成员函数作为对外界的接口。,Logo,8.2.3 对象的定义,private:id name major fees,public:register,Student类,对象stu1,0521140张三Computer16000register,对象stu1,052224
14、0李四Network16000register,Logo,8.2.3 对象的定义,1.先声明类类型,然后再定义对象声明了类类型后,定义对象有两种形式。(1)class 类名 对象名 class Student stud1,stud2;把class和Student合起来作为一个类名,用来定义对象。(2)类名 对象名 Student stud1,stud2;直接用类名定义对象。这两种方法是等效的。,Logo,8.2.3 对象的定义,class Studentprivate:int id;char name20;char major20;float fees;public:void register
15、()cin id name major fees;Student stu1,stu2;,Logo,8.2.3 对象的定义,2.在声明类类型的同时定义对象class Studentprivate:int id;char name20;char major20;float fees;public:void register()cin id name major fees;stud1,stud2;/定义了两个Student类的对象在定义Student类的同时,定义了两个Student 类的对象。,Logo,8.2.3 对象的定义,3.不出现类名,直接定义对象class/无类名private:/声明以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第08章 类和对象课件 08 对象 课件

链接地址:https://www.31ppt.com/p-2163186.html