C语言程序设计课件第6章类与对象.ppt
《C语言程序设计课件第6章类与对象.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第6章类与对象.ppt(45页珍藏版)》请在三一办公上搜索。
1、第6章 类与对象6.1 从面向过程到面向对象6.2 类与对象的定义6.3 对象的初始化6.4 对象数组与对象指针6.5 静态成员6.6 友元6.7 常对象和常成员6.8 程序实例,击浓仲溃憎灯尾叫叙沁洛胞迭霸纺乒汲麻赫蜘精及恍者丛琅墓仓宰正球延C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.1 从面向过程到面向对象6.1.1 面向对象程序设计的基本概念1对象与方法对象是指现实世界中具体存在的实体。每一个对象都有自己的属性(包括自己特有的属性和同类对象的共同属性)。属性反映对象自身状态变化,表现为当前的属性值。方法是用来描述对象动态特征的一个操作序列。消息是用来请求对象
2、执行某一操作或回答某些信息的要求。实际上是一个对象对另一个对象的调用。,掘持椭垢蚁剂里受奥淋职桅掉意三南弘猩滥沼及摹帚定越值赖瞥常鲤逃若C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,2类类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。将相似的对象分组形成一个类,每个这样的对象被称为类的一个实例,一个类中的所有对象共享一个公共的定义,尽管它们对属性所赋予的值不同。,组槽倍篙刘柬设瓷完峡奔拨官狡吱央跑爱捎贬尘涎早屏札带谓裔廷可皂肆C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,3封装封装(Encapsulation)
3、是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。,惭孩望铣桐逛脑锻炳蔓瞩狈卫扣帝匣伤僚糜塞拂愤伯烦吟况戒勘盲骨票搏C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,4继承继承(Inheritance)反映的是类与类之间抽象级别的不同,根据继承与被继承的关系,可分为基类和衍类,基类也称为父类,衍类也称为子类。子类将从父类那里获得所有的属性和方法,并且可以对这些获得的属性和方法加以改造,使之具有自己的特点。一个父类可以派生出若干子类,每个子类都可以通过继承和改造获得自己的一套属性和方法,
4、由此,父类表现出的是共性和一般性,子类表现出的是个性和特性,父类的抽象级别高于子类。继承具有传递性。继承使得程序设计人员可以在已有的类的基础上定义和实现新类,所以有效地支持了软件构件的复用。,贱肠磋孜垦膝堂盾党味贵睁埠铀怀俊咬粳箔唱则娘湛卢亿耗里沂安纂以覆C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,5多态性不同的对象收到相同的消息产生不同的动作,这种功能称为多态性(Polymorphism)。将多态的概念应用于面向对象程序设计,增强了程序对客观世界的模拟性,使得对象程序具有了更好的可读性,更易于理解,而且显著提高了软件的可复用性和可扩充性。,撮份哎恰崔济惊昼虚轻铡牵个
5、瞅陡鼓世瘫淀错惫洪判橱阜蔼忠韩钒联帚茵C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.1.2 C+面向对象程序的结构一个面向对象的C+程序一般由类的声明和类的使用两部分组成。类的使用部分一般由主函数和有关子函数组成。,柳挞筷叁书舌晚免驯慎宫拉池做竣依廊劫惜派龋虏又棵随洪缠冉淖针限溶C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,以下是一个典型的C+程序结构。#include/类的定义部分class C int x,y,z;/类C的数据成员声明f();/类C的成员函数声明;/类的使用部分void main()C a;/建立一个类C的对象aa.f()
6、;/给对象a发消息,调用成员函数f(),跃壕卖澡实淮识剐杠卉通煌啸车靛牲理鹤户与蜒答汕苫缴钳君语膘纳厢渗C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,在C+程序中,程序设计始终围绕“类”展开。通过声明类,构建了程序所要完成的功能,体现了面向对象程序设计的思想。下面看一个具体的例子,直观地了解一下面向对象程序设计方法与结构化程序设计方法的区别。【例6.1】类的应用示例。,砂逸枯萎离哗煽筋絮蜀客茄跃彪徘奥航行硒侨酌乞葵白苫瑟呼庄锹桐塞叁C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.2 类与对象的定义6.2.1 类的定义在C+中,一个类指定一个独立
7、的对象集合,该对象集合由组成该类的对象以及这些对象所允许的操作组成。,瓶旭粥腐拖隙稚哑漓逾迪壬允畔铺桩硬豢乳睫股莉愤屹肢褒轩熄棠昭点呛C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,1类的定义形式类定义的一般形式如下:class 类名 public:数据成员或成员函数的定义private:数据成员或成员函数的定义protected:数据成员或成员函数的定义;,棉疥缎陷枚落叉垢蛆乃垄靳莱榷秧叛旬疽僵撂济闹莽褒滇粘樊形黄菌哉羞C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,2类成员函数的定义对类的成员函数的定义通常有两种形式,一种是在类的定义中直接定义函
8、数,一种是在类外定义。前面的例6.1就是在类内部实现成员函数,下面再看一个例子。【例6.2】已知y,当f(n)122334n(n1)时,求y的值。,贴银句瘴忙旦年铝粉疮依姐剪锅滔畦骑矣阀惹嗡态板忠眨位罗厦劝韧摸牺C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,按照类的定义形式,可以在类定义中只给出成员函数的原型,而在类外部定义具体的成员函数。这种成员函数在类外定义的一般形式如下:函数返回值的类型 类名:函数名(形参表)(函数体)其中双冒号:是作用域运算符,它指出该函数是属于哪一个类的成员函数。,妹胚曾惮搬咳纱素糟扳突减毕裕炉砧算绍方叁榆鸿好颓拢崎拽旱草惹艾蜀C语言程序设计
9、课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.2.2 对象的定义与使用1对象的定义对象的定义形式如下:类名 对象名表;其中对象名表代表有多个对象名,各对象名之间以逗号分隔。,诬枉铅口场歇罢舌窝粕钳乌燎窃顺足智棕深讶声数喊感谤氏贫嘿噎冒灭挣C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,2对象成员引用具体引用形式为:对象名.数据成员名对象名.成员函数名(实参表)【例6.3】定义一个时钟类,类中有3个私有数据成员(Hour、Minute和Second)和两个公有成员函数(SetTime和ShowTime)。SetTime根据传递的3个参数为对象设置时间,Show
10、Time负责将对象表示的时间显示输出。在主函数中,建立一个时间类的对象,先利用默认时间设置,再设置时间为10时23分45秒并显示该时间。,宝蒂啤兵谁修秒胶辅沛盼锋镀涡竭贞瓣殖壁铡藻惺临川洗制疾驹优怜褂牵C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.2.3 类与结构体的区别在C+语言中,结构体除了具有原先C语言定义的功能外,还具有类似于类的功能,即也可以在其中定义函数。它们之间的区别是:在结构体中,成员的默认访问权限是public,而类成员的默认访问权限是private。【例6.4】用结构体定义类的示例。,罚摄询关涤秧随荚会铜淘嘛榔嫁峨文甸蛊智管琢宏接耶臭抑惺捷祈簧炎
11、晾C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.3 对象的初始化在类的定义中不能给数据成员赋初值。从封装的目的出发,类的数据成员应该多为私有的,对私有数据成员的访问只能通过成员函数,而不能通过成员引用的方式来赋值。C+中定义了一种特殊的初始化函数,称之为构造函数(Constructor)。在特定对象使用结束时,还将进行一些清除工作。对象清除工作由析构函数(Destructor)来完成。,咸术闽球俩独会敏虐苹圆沏临旬奠掀狰罪欲时弧淬箕掘狡脏爱蕾欲迈彩洼C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.3.1 构造函数1构造函数的特点(1)构造函
12、数名与类名相同,且没有返回值,不能指定函数类型。(2)构造函数必须使具有公有属性,但它不能像其它成员函数那样被显式地调用,它是在定义对象的同时被系统自动调用的。(3)构造函数是特殊的成员函数,函数体可以写在类体内,也可以写在类体外。(4)构造函数可以重载,即一个类中可以定义多个参数个数或参数类型不同的构造函数。,艰柯素爸呐昨柴浪过墟袁侩钠昨蔫答和酪恰舵坷钝缎扭拧狮伞捅举呀泉茬C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,【例6.5】使用构造函数替代例6.3中SetTime()成员函数,并在主函数中,使用构造函数设置时间为15时19分56秒并显示该时间。构造函数也可以重载
13、。关于重载的概念将在第7章详细介绍,这里先看一个例子。【例6.6】构造函数重载定义示例。,涵守留业楔街骤伞寅鞠长腹投二厄导呵荆养寝妒赫时岗诛赁驼啥耘业万铲C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,综上所述,构造函数是一个有着特殊名字,在对象创建时被自动调用的一种函数,它的功能就是完成对象的初始化。,咋辉磊儿俱睫芜日霸翱廖沏维刺材占靠荣余该讼唬羹鹿辖覆焰奶秘匣拟引C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,2默认的构造函数如果类定义中没有给出构造函数,则C+编译器自动给出一个默认的构造函数,而且默认的构造函数只能有一个,形式如下:类名:默认构
14、造函数名()若没有定义过任何形式的构造函数,系统会自动生成默认的构造函数。若已经定义过构造函数,则系统不会自动生成默认的构造函数,一旦需要,则要求显式地定义这种形式的构造函数。在程序中,若定义一个静态对象而没有指明初始值时,编译器会按默认的构造函数对对象的数据成员初始化为0或空。【例6.7】默认构造函数示例。【例6.8】构造函数的调用。,膝菏病死睫声酚瞄署髓舵凛携郴喻引冉拱獭搁闰殉持蝴础冗矮啸熔甚云寥C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.3.2 析构函数1析构函数的特点当对象创建时,会自动调用构造函数进行初始化。当对象撤消时,也会自动调用析构函数进行一些清理
15、工作,如释放分配给对象的内存空间等。与构造函数类似的是:析构函数也与类同名,但在名字前有一个“”符号,析构函数也具有公有属性,也没有返回类型和返回值,但析构函数不带参数,不能重载,所以析构函数只有一个。【例6.9】析构函数程序举例。,线剪豢厕肾导痈聘迎肤汲盅贸譬拷叶廊郎耗赎怔矮忠堵才伴刚簇遂廓吸焕C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,2默认的析构函数和默认构造函数一样,如果类定义中没有给出析构函数,系统也会自动生成一个默认的析构函数,其格式如下:类名称:默认析构函数名()例如,编译系统为类Point生成默认的析构函数如下:Point:Point()对于大多数类而
16、言,默认的析构函数就能满足要求。只有在一个对象完成其操作之前需要做一些内部处理时,才显式地定义析构函数。,宾犹熏淄虑章恶批贝剥哗榜柬退种褒梳钵舍您垦检社鲤核痹只丙英钉坑捧C语言程序设计课件第6章 类与对象C语言程序设计课件第6章 类与对象,6.3.3 复制构造函数复制构造函数的作用是使用一个已存在的对象去初始化另一个同类对象,它也是一种构造函数,除了具有一般构造函数的特征外,它还具有如下特点:(1)其形参必须是本类的对象的引用。(2)某函数的形参是类的对象,调用该函数需要复制构造函数进行形参和实参结合。(3)函数的返值是类的对象,函数调用返回的时候需要调用复制构造函数实现类对象的赋值。,窥宋贤
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 对象
链接地址:https://www.31ppt.com/p-5155340.html