c--类和对象的概念及定义课件

上传人:风*** 文档编号:240744969 上传时间:2024-05-04 格式:PPT 页数:61 大小:867.50KB
返回 下载 相关 举报
c--类和对象的概念及定义课件_第1页
第1页 / 共61页
c--类和对象的概念及定义课件_第2页
第2页 / 共61页
c--类和对象的概念及定义课件_第3页
第3页 / 共61页
点击查看更多>>
资源描述
C+面向对象程序设计普通高等教育“十一五”国家级规划教材中国高等院校计算机基础教育课程体系规划教材 5/4/20241第3讲 面向对象概述 授课内容授课内容类和对象的概念以及它们的定义。主要内容有:1类和对象的基本概念;2.面向对象分析与设计面向对象分析与设计3.UML4类的声明;5对象及其定义;6类的成员函数;7对象成员的引用。5/4/20242第3讲 类和对象的概念及定义 授课要求授课要求1掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2掌握类对象的定义;3理解类的成员的访问控制的含义,公有、私有和保护成员的区别。4能够根据给定的要求定义类并实现类的成员函数;5/4/20243第3讲 类和对象的概念及定义 授课重点授课重点1本讲的重点是类和对象的概念和定义授课难点授课难点1该讲的难点是类和对象的理解。5/4/202441面向对象程序设计方法面向对象程序设计方法(1)概述面向过程的程序设计小规模小规模大规模大规模力不从心力不从心面向对象程序设计5/4/202451面向对象程序设计方法面向对象程序设计方法(1)概述面向对象的程序设计的思路和人们日常生活中处理问题的思路是相似的。面向对象的程序设计的基本思路:面向对象的程序设计的基本思路:生产汽车生产汽车组装组装众多零件面向对象的程序设计:面向对象的程序设计:(对象对象+对象对象+对象对象+)+消息消息=程序程序5/4/202461面向对象程序设计方法面向对象程序设计方法(2)对象)对象含义:客观世界中任何一个事物都可以看成一个对象含义:客观世界中任何一个事物都可以看成一个对象(object)。对象可大可小。对象是构成系统的基本单位。任何一个对象都应当具有这两个要素两个要素:属性属性(attribute)和行为行为(behavior)。比如:A学生“张三张三”是一个对象,他有属性:学号、姓名、性别等。行为有:学习、吃饭等。B“打开文件按钮打开文件按钮”也是一个对象,它有属性:形状、颜色、大小等。行为有:打开文件等。张三张三5/4/202471面向对象程序设计方法面向对象程序设计方法在C+程序设计中,属性即基本数据基本数据;行为即操作代操作代码码,也就是函数,见图1所示。对象之间通过发送和接收消息发送和接收消息互相联系的。见图2所示。图1 对象图2 对象的联系5/4/202481面向对象程序设计方法面向对象程序设计方法使用面向对象的程序设计方法设计软件系统时,首要首要的问题是确定该系统是由哪些对象组成的,并且设的问题是确定该系统是由哪些对象组成的,并且设计这些对象计这些对象。在在C+中,每个对象都是由中,每个对象都是由数据数据和和函数函数(即操作代码即操作代码)这两部分组成的。这两部分组成的。5/4/202491面向对象程序设计方法面向对象程序设计方法(3)类(类(class)含义:具有具有相同属性相同属性和和行为行为的所有对象的集合的所有对象的集合。比如:所有在校学习的人,具有相同的属性:学号、姓名、相同的属性:学号、姓名、性别性别等,具有相同的行为:学习相同的行为:学习。所以,这些人构成一个类,即学生类学生类。5/4/2024102面向对象程序设计的基本特征面向对象程序设计的基本特征(1)封装与信息隐蔽封装与信息隐蔽(encapsulation and imformation hiding)可以对一个对象进行封装处理,把它的对一个对象进行封装处理,把它的一部分属性和一部分属性和功能对外界屏蔽功能对外界屏蔽,也就是说从外界是看不到的,甚至是不可知的。这样做的好处是大大降低了操作对象的复杂程度。面向对象程序设计方法的一个重要特点就是“封装性”(encapsulation)。5/4/2024112面向对象程序设计的基本特征面向对象程序设计的基本特征所谓“封装”,指两方面的含义:一是将有关的数据和操作代码封装在一个对象中,形一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐蔽的做法称为信息隐蔽(imformation hiding)。信息隐蔽还有利于数据安全,防止无关的人了解和修改数据。5/4/2024122面向对象程序设计的基本特征面向对象程序设计的基本特征(2)抽象)抽象(abstraction)在程序设计方法中,常用到抽象这一名词。抽象的过抽象的过程是将有关事物的共性归纳、集中的过程。程是将有关事物的共性归纳、集中的过程。抽象的作用是表示同一类事物的本质抽象的作用是表示同一类事物的本质。比如:把在座的同学的共同特性抽出来:学号、姓名、性别、学习等。把大家都可以归到一类,即“学生”类。5/4/2024132面向对象程序设计的基本特征面向对象程序设计的基本特征(3)继承与重用)继承与重用(inheritance)继承继承:在一个已有的类上建立一个新的类。:在一个已有的类上建立一个新的类。C+提供了继承机制,可以很方便地利用一个已有的提供了继承机制,可以很方便地利用一个已有的类建立一个新的类类建立一个新的类。即“软件重用软件重用”。“学生”类增加属性:“专业”“大学生”类继承机制继承机制例如:“白马”继承了“马”的基本特征,又增加了新的特征(颜色),“马”是父类父类,或称为基类基类,“白马”是从“马”派生出来的,称为子类或派生类子类或派生类。5/4/2024142面向对象程序设计的基本特征面向对象程序设计的基本特征(4)多态性)多态性(polymorphism)含义:含义:如果有几个相似而不完全相同的对象,有时人们要求在向它们向它们发出同一个消息时发出同一个消息时,它们的,它们的反应各反应各不相同不相同,分别执行不同的操作,分别执行不同的操作。这种情况就是多态多态性性。比如:在Windows环境下,用鼠标鼠标双击一个文件对象双击一个文件对象(这就是向对象传送一个消息),如果对象是一个可执行文件,则会执行此程序执行此程序,如果对象是一个文本文件,则启动文本编辑器并打开该文件文本编辑器并打开该文件。在在C+中,多态性是指:由继承而产生的相关的不同中,多态性是指:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。的类,其对象对同一消息会作出不同的响应。5/4/2024153面向对象的程序设计含义面向对象的程序设计含义面向对象的程序设计面向对象的程序设计含义含义:它的整个程序由一系列相互作用的对象构成,对象之间的交互通过发送消息来实现,通过对象响应消息来实现程序的功能。程序设计者的任务包括两个方面:一是设计所需的各种类和对象设计所需的各种类和对象,即决定把哪些数据和操作封装在一起;二是考虑怎样向有关对象发送消息向有关对象发送消息,以完成所需的任务。5/4/2024163面向对象的程序设计含义面向对象的程序设计含义面向对象程序设计的表示:对象对象=算法算法 数据结构数据结构程序程序=(对象对象+对象对象+对象对象+)+消息消息面向对象程序设计方法是十分有效的,它能大大降低程序设计人员的工作难度,减少出错机会。5/4/2024174、面向对象的分析和设计5/4/202418面向对象的分析基本概念OOA环节的主要工作是明确用户的需求,并用标准化的面向对象模型规范地描述这一需求,最后形成面向对象的分析模型,即OOA模型。它主要确定要干什么(“What to do”)。OOA强调用对象的属性和服务分别描述事物的静态特征和动态行为。5/4/202419面向对象的设计基本概念该环节的主要工作是确定如何做(“How to do”),面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理等方面的内容,从而确定OOD模型。5/4/2024205、UML5/4/2024211 概述基本概念Unified Modeling LanguageUML是一种建模的语言,不是编程的语言。UML提供了大量的图形表示模型,我们要掌握类图的表示以及类之间的简单关系。5/4/2024222 类图基本概念 类图是由类和与之相关的各种静态关系共同组成的图形。类图展示的是软件模型的静态结构,类的内部结构以及和其他类的关系。5/4/2024232 类图类的表示5/4/2024242 类图对象的表示5/4/2024252 类图关系的表示依赖:当要表明一个类使用另一个类作为它的成员函数参数时,就使用依赖关系。通常类之间的调用关系、友元、类的实例化都属于这类关系。依赖、关联、包含、泛化5/4/2024262 关系的表示关联关联用于表述一个类的对象和另一个类的对象之间相互作用的连接。5/4/2024272 关系的表示包含聚集表示类之间的关系是整体与部分的关系。组合是一种简单的聚集形式,但是它具有更强的拥有关系。5/4/2024282 关系的表示泛化类之间的继承关系在UML中称为泛化。5/4/2024296类的声明和对象的定义类的声明和对象的定义(1)类和对象的关系)类和对象的关系类是对象的抽象,而对象是类的具体实例(instance)。类是抽象的,不占用内存,而对象是具体的,占用存储空间。在C+中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。5/4/202430(2)声明类类型)声明类类型在C+中声明一个类类型和声明一个结构体类型是相似的。声明类的一般形式如下:class 类名类名 private:私有的数据和成员函数私有的数据和成员函数;public:公用的数据和成员函数公用的数据和成员函数;protected:受保护的数据和成员函数受保护的数据和成员函数;注意:注意:如果在类的定义中不指如果在类的定义中不指定限定符,则系统就默定限定符,则系统就默认为是私有的认为是私有的(private)(private)。private、protected、public称为成员访问成员访问限定符限定符(member access specifier)。5/4/202431(2)声明类类型)声明类类型下面是声明一个结构体类型的方法:struct Student /声明了一个名为Student的结构体类型 int num;char name20;char sex;Student stud1,stud2;/定义了两个结构体变量stud1和stud25/4/202432(2)声明类类型)声明类类型现在声明一个类声明一个类:class Student /以class开头 int num;char name20;char sex;/以上3行是数据成员 void display()/这是成员函数 coutnum:numendl;coutname:nameendl;coutsex:sexendl;/以上4行是函数中的操作语句;Student stud1,stud2;/定义了两个Student 类的对象stud1和stud2 5/4/202433(2)声明类类型)声明类类型说明:说明:(a)用用private声明声明的成员称为私有私有的成员,它只能只能被类中的成员函数访问,不能被类外访问被类中的成员函数访问,不能被类外访问,但可以被友元类的成员函数访问(后面讲到)被友元类的成员函数访问(后面讲到)。(b)用用protected声明声明的成员称为受保护受保护的成员,它不能被类外访问不能被类外访问(这点与私有成员类似),但可以被被派生类的成员函数访问派生类的成员函数访问。(c)用用public声明声明的成员称为公有公有的成员,它可以被被类中的成员函数访问,也可以被类外访问类中的成员函数访问,也可以被类外访问。5/4/202434(3)定义对象的方法)定义对象的方法定义对象的方法和定义结构体变量的方法一致。A先声明类类型,然后再定义对象格式:格式:类名类名 对象名对象名比如:Student stud1,stud2;/Student是已经声明的类类型或者:或者:class 类名类名 对象名对象名 比如:class Student stud1,stud2;5/4/202435(3)定义对象的方法)定义对象的方法B在声明类类型的同时定义对象比如:class Student /声明类类型/成员定义省略 private:/声明以下部分为私有的 public:/声明以下部分为公用的 stud1,stud2;/定义了两个Student类的对象5/4/202436(3)定义对象的方法)定义对象的方法C不出现类名,直接定义对象比如:class /无类名/成员定义省略private:/声明以下部分为私有的 public:/声明以下部分为公用的 stud1,stud2;/定义了两个无类名的类对象5/4/202437(4)类和结构体类型的异同)类和结构体类型的异同C+允许用允许用struct来定义一个类类型来定义一个类类型。struct Student /用关键字struct来声明一个类类型/类成员声明与class一样。;Student stud1,stud2;/定义了两个Student类的对象C+不是简单地继承C的结构体,而是使它也具有类的特点,以便于用于面向对象程序设计。用用struct声明的结构体类型实际上也就是类声明的结构体类型实际上也就是类。5/4/202438(4)类和结构体类型的异同)类和结构体类型的异同区别区别:(a)用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为默认为public。如果想分别指定私有成员和公用成员,则应用private或public作显式声明。(b)用class定义的类,如果不作private或public声明,系统将其成员默认为默认为private,在需要时也可以自己用显式声明改变。5/4/2024397类的成员函数类的成员函数类的成员函数(简称类函数)是函数的一种,它的用法和作用与普通函数基本上是一样的,(1)类的成员函数的定义A在类体中定义的格式:格式:函数返回值类型函数返回值类型 函数名(参数表)函数名(参数表)/函数体函数体;成员函数在声明时,要指定为:private(私有的)、public(公用的)、protected(受保护的)。注意注意5/4/2024407类的成员函数类的成员函数B在类外定义成员函数在类外定义时,必须在函数名前面加上类名和作用域限定符“”。格式:格式:函数返回值类型函数返回值类型 类名类名函数名(参数表)函数名(参数表)/函数体函数体;5/4/2024417类的成员函数类的成员函数比如:class Student public:void display();/公用成员函数原型声明公用成员函数原型声明 Private:int num;string name;char sex;/以上3行是私有数据成员 ;void Student display()/在类外定义在类外定义display类函数类函数 coutnum:numendl;/函数体函数体 coutname:nameendl;coutsex:sexbc;cout sizeof(Time)num=1001;或:或:(*p).num=1001;(C)Student&stud2=stud1;stud2.num=1001;/引用引用5/4/2024488类的封装性和信息隐蔽类的封装性和信息隐蔽(1)公用接口与私有实现公用接口与私有实现的分离如果不必公开的信息,使用:private要公开的,才使用:public(2)类声明和成员函数定义类声明和成员函数定义的分离为便于多个程序使用某类,应当把类的声明和成员函数的声明放在头文件头文件中(即.h文件),把成员函数的定义放在另一个文件另一个文件中(即.cpp文件)。5/4/2024498类的封装性和信息隐蔽类的封装性和信息隐蔽(3)面向对象程序设计中的几个名词A“方法方法”(method):“方法方法”是指对数据的操作(类的成员函数)。一个“方法”对应一种操作。外界是通过发“消息”来激活有关方法的。B“消息消息”:其实就是一个命令,由程序语句来实现。C发送“消息”:一个对象通知另一个对象执行它的某条成员函数。D接收“消息”:一个对象接收到另一个对象要求它执行它的某条成员函数的信息。5/4/2024509类和对象的简单应用举例类和对象的简单应用举例例1(P55的例2.1)最简单的例子。/该例子简单,同学们可以自己看该例子简单,同学们可以自己看运行情况如下:1232 4312:32:43 int main()Time t1;cint1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.sec endl;/输出时间 return 0;#include using namespace std;class Time /定义Time类public:/数据成员为公用的 int hour;int minute;int sec;5/4/2024519类和对象的简单应用举例类和对象的简单应用举例例2(P56的例2.2)引用多个对象的成员。(1)程序(a)#include using namespace std;class Timepublic:int hour;int minute;int sec;5/4/2024529类和对象的简单应用举例类和对象的简单应用举例int main()Time t1;cint1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.sect2.hour;cint2.minute;cint2.sec;coutt2.hour:t2.minute:t2.secendl;return 0;运行情况如下:10 32 4310:32:4322 32 4322:32:43另:使用函数来进行输入和输出。见程序见程序(b)和(和(c)。(请同学们自己看书。)。(请同学们自己看书。P57-59)5/4/2024539类和对象的简单应用举例类和对象的简单应用举例例3(P60的例2.3)将例2的程序改用含成员函数的类成员函数的类来处理。#include using namespace std;class Timepublic:void set_time();/公用成员函数void show_time();/公用成员函数 private:/数据成员为私有int hour;int minute;int sec;5/4/2024549类和对象的简单应用举例类和对象的简单应用举例int main()Time t1;t1.set_time();t1.show_time();Time t2;t2.set_time();t2.show_time();return 0;运行情况与例2中的程序相同。void Timeshow_time()/在类外定义show_time函数 couthour:minute:sechour;cinminute;cinsec;5/4/2024559类和对象的简单应用举例类和对象的简单应用举例例4(P61的例2.4)找出一个整型数组中的元素的最大值。用类来处理。#include using namespace std;class Array_max /声明类public:/以下3行为成员函数原型声明 void set_value();/对数组元素设置值 void max_value();/找出数组中的最大元素 void show_value();/输出最大值private:int array10;/整型数组 int max;/max用来存放最大值;5/4/2024569类和对象的简单应用举例类和对象的简单应用举例void Array_maxset_value()int i;for(i=0;iarrayi;void Array_maxmax_value()/成员函数定义,找数组元素中的最大值 int i;max=array0;for(i=1;imax)max=arrayi;void Array_maxshow_value()coutmax=max;5/4/2024579类和对象的简单应用举例类和对象的简单应用举例int main()Array_max arrmax;/定义对象arrmax arrmax.set_value();arrmax.max_value();arrmax.show_value();return 0;运行结果如下:12 12 39-34 17 134 045-91 76 (输入10个元素的值)max=134 (输入10个元素中的最大值)5/4/20245810课后总结课后总结(1)面向对象程序设计概念和特点;(2)类的声明和对象的定义;(3)类的成员函数的定义;(4)对象成员的引用;(5)类和对象的应用。重在重在理解理解 学好学好C+的要点:的要点:多编程,多上机多编程,多上机5/4/202459结束语当你尽了自己的最大努力时,失败也是伟大的,所以不要放弃,坚持就是正确的。When You Do Your Best,Failure Is Great,So DonT Give Up,Stick To The End感谢聆听不足之处请大家批评指导Please Criticize And Guide The Shortcomings演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!