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