电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Visual C++基础教程 教学课件 ppt 作者 郭文平 第1-6章 第3章

149页
  • 卖家[上传人]:E****
  • 文档编号:89352240
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:448KB
  • / 149 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第3章 类和对象,3.1 面向对象程序设计概述 3.2 类与对象 3.3 构造函数和析构函数 3.4 对象数组和对象指针 3.5 静态成员 3.6 友元 3.7 对象成员 习题,3.1 面向对象程序设计概述 3.1.1 面向对象程序设计的产生 在面向对象程序设计出现之前,程序设计人员广泛使用的是面向过程的程序设计方法。20世纪60年代产生的结构化程序设计思想,为使用面向过程的方法解决复杂问题提供了有力手段,并且成为20世纪70年代至80年代最主要、最通用的程序设计方法。 结构化程序设计方法采用自顶向下、逐步求精的方式对复杂问题进行逐步分解,将一个复杂任务分解成若干个功能模块,然后根据功能模块设计用于保存数据的数据结构,编写过程或函数对这些数据进行操作。完成各功能模块的过程在功能上相对独立,而在数据的处理上又相互联系。,结构化程序设计是一种面向过程的程序设计方法,它的核心是过程,程序通常是按照过程来组织的,即利用代码对数据进行处理。在面向过程的程序设计中,数据与操作数据的过程是分离的。当数据结构改变时,所有相关的处理过程都要进行相应的修改,因此代码的可重用性差。另外,面向过程程序设计将系

      2、统分解为若干功能模块,系统是实现模块功能的过程的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。特别是随着系统规模的扩大,程序的复杂性也进一步增加,修改程序的困难也增大,系统的可维护性较差。,3.1.2 面向对象程序设计的基本概念和特征 面向对象程序设计思想更加符合人们认识现实世界的方式。现实世界是由各种各样的事物组成的,包括有形的事物和无形的事物。例如植物、人、汽车、计算机等是有形的事物,思想、一项计划等是无形的事物。人们认识现实世界是从认识现实世界中的一些具体的事物开始的。现实世界中的每个事物都有各自的属性和行为,属性表示事物的静态特征,行为表示事物的动态特征,属性和行为是一个不可分割的整体。人们通过研究事物的属性和行为而认识事物。简单的事物之间相互作用、联系和组合可以构成复杂的事物。在面向对象程序设计中,用对象模拟现实世界中的事物,以对象为基本单位,分析、设计和实现一个系统。,与面向过程程序设计以过程组织程序不同,面向对象程序设计以数据为中心来描述系统,按照数据来组织程序,其基本思想是数据决定对代码的访问。面向对象程序设计将表示

      3、属性特征的数据和对数据进行操作的方法封装在一起,构成一个完整的对象。对同类型对象抽象出共性,形成类。类中的大多数属性数据,只能用本类的方法进行处理。对象通过一些外部接口与其它对象发生联系,对象与对象之间通过消息进行通信。 类是具有相同属性特征和行为特征的一组对象的集合,它规定了这些对象的公共属性和行为方法。类和对象之间的关系是抽象和具体的关系,类是对多个对象进行综合抽象的结果,对象是类的实例。例如,汽车是一个类,行驶在公路上的一辆汽车则是一个对象。,面向对象程序设计中,程序是由一系列相互作用的对象构成的,对象之间通过发送消息实现通信。消息是一个对象向另一个对象发出的服务请求,如果用户或其它对象向该对象提出服务请求,便可以称为向该对象发送消息。消息传递的语法结构随系统的不同而不同,一般由如下几部分组成: 接收消息的对象,又被称为目标对象。 请求对象的方法。 一个或多个参数。,面向对象程序设计方法具有三个最基本的特征:封装性、继承性和多态性。 (1) 封装性。封装性是一种程序设计机制,将对象的属性(数据)和行为(对数据操作的代码)组合成一个有机的整体,同时决定哪些属性和行为用于表示对象的内

      4、部状态,对外界是隐藏的;哪些属性和行为对外界是可见的,是提供给外界的接口。外界只能通过对象提供的外部接口操作对象。,(2) 继承性。继承是一种连接类与类的层次模型,是指一个新类可以从现有的类派生而来。通过继承,新类(子类或派生类)拥有了现有类(父类或基类)的特征,包括属性和行为,同时可以修改或增加新的属性和行为,使新类更适合具体的需要。这样,在设计新类时,只需对新类增加的内容或是对现有类内容的修改设计代码。可见,继承性简化了类的设计,提高了软件的重用性,大大提高了软件的开发效率和系统的可靠性。 (3) 多态性。多态性是指允许不同类的对象对同一消息做出不同的响应。例如,同样的加法,将两个时间加在一起和将两个整数加在一起的内涵完全不同。利用多态性,可以在基类和派生类中使用同样的函数名,定义不同的操作,从而实现“一个接口,多种方法”。至于在某种条件下应该选择哪种方法,则留给编译器来完成,程序员无需人工完成这种选择,只需记住并使用这个通用接口就行了。多态性增强了软件的灵活性和重用性。,3.2 类 与 对 象 3.2.1 类的定义 C+中,类的定义一般包括说明部分和实现部分。说明部分用来说明类的

      5、成员,包括数据成员的名字和数据类型、成员函数的原型或实现。实现部分包括各成员函数的定义。,【例3.1】 类定义示例。定义一个用来描述平面上坐标点的类Point。 class Point private: int x,y; public: void SetPoint(int a,int b) x=a; y=b; int GetX() return x; ,int GetY() return y; void ShowPoint() cout“(“x“,“y“)“endl; ; 对于平面上一个坐标点,其基本属性是坐标位置,因此在类中说明了两个数据成员x和y用来保存坐标值。对坐标点的操作,一般有设置坐标、显示坐标,另外,需要返回坐标的值,因此,在类Point中包含了对坐标操作的成员函数SetPoint、GetX、GetY和ShowPoint。将数据和对数据的操作封装在类Point中,就形成了一个完整的整体。,类定义的一般形式如下: class 类名 private: 私有数据成员和成员函数的说明或实现 public: 公有数据成员和成员函数的说明或实现 protected: 保护数据成员和成员

      6、函数的说明或实现 ; /实现部分 各成员函数的实现,类的定义由关键字class开始,其后是用户定义的类名;花括号内的部分称为类体,用来声明类的成员;最后的分号表示类声明的结束。关键字private、public和protected称为访问权限控制符,用来设置数据成员和成员函数的访问属性。在定义成员时,如果省略了访问权限控制符,则其访问属性默认为private。 类中的每一个成员都有确定的访问属性。关键字private下说明的数据成员和成员函数是类的私有成员,它们只能被本类的成员函数或友元函数访问。将成员说明为私有的,可以起到隐藏成员的作用,提高安全性。关键字public下说明的数据成员和成员函数是类的公有成员,它们可以被本类的成员函数访问,也可以被其它类的成员函数或程序中的其它函数(通过对象)访问,它们是类的外部接口。关键字protected下说明的数据成员和成员函数是类的保护成员,它们可以由本类的成员函数访问,也可以由其派生的派生类的成员函数访问,但不允许程序中的其它函数访问。保护成员的具体访问规则在第4章中详细介绍。,【例3.2】 类的定义示例。 class Employee ch

      7、ar Name20; char Sex; int Age; public: void RegisterInfo(char *name,char sex,int age); void ShowInfo(); ; 在本类中省略了关键字private,则三个数据成员缺省为私有成员。类中对成员函数只给出了函数原型,没有函数的实现。,说明: (1) 类定义中的访问权限控制符private、public和protected可以按任意顺序出现任意次。建议将相同访问权限的成员归类放在一起,以使程序结构更清晰。 至于私有成员和公有成员在类中出现的先后顺序,不同的程序员有不同的主张。主张将私有成员放在前面的程序员认为,由于成员的缺省访问权限是private,一旦程序员忘记使用控制符private,类的数据仍然能得到保护。主张将公有成员放在前面的程序员认为,公有成员是类提供的外部接口,是用户所关心的,便于阅读。 (2) 类中说明的数据成员可以是任何数据类型,包括自身类的指针或引用,但不能是自身类的对象。 (3) 在类中说明的任何成员不能使用extern、auto和register关键字进行修饰。,(4) 不

      8、允许在类定义中对数据成员进行初始化。例如,下述类定义是错误的: class Point private: int x,y=5; /错误,类定义时对数据成员进行了初始化 / ; 因为类描述的是这个类所有对象共同的属性,只有具体的对象才能确定属性的值。另外,类定义是一种数据类型的定义,类作为数据类型,它本身不占用存储空间,只有在定义了类类型的变量后,系统才为其分配存储空间。,3.2.2 成员函数的定义 类的定义一般包括说明部分和实现部分。说明部分用来说明类的成员,包括数据成员的名字和数据类型、成员函数的原型或实现。对于成员函数,可以只在说明部分给出函数原型,其定义可以在类的实现部分实现,也可以在类的说明部分给出。 在类的实现部分,成员函数的定义与普通函数的定义形式基本相同,但必须在成员函数名前加上类名和作用域运算符“:”,说明成员函数所属的类。 在实现部分,成员函数定义的形式如下: 数据类型 类名:函数名(参数表) 函数体 ,【例3.3】 例3.2中类Employee的完整定义。 #include #include /说明部分 class Employee char Name20; cha

      9、r Sex; int Age; public: void RegisterInfo(char *name,char sex,int age); void ShowInfo(); ; /实现部分,void Employee:RegisterInfo(char *name,char sex,int age) strcpy(Name,name); Sex=sex; Age=age; void Employee:ShowInfo() coutNametSextAgeendl; 从这个例子中可以看出,虽然函数RegisterInfo()和ShowInfo()是在类体外的实现部分定义的,但它们与数据成员属于同一个类Employee,它们可以直接使用类中的数据成员Name、Sex和Age。,3.2.3 对象的定义与使用 1. 对象的定义 定义一个对象,与定义一个一般变量的格式相同。定义对象的一般格式如下: 类名 对象名表; 其中,“类名”是定义的对象所属类的类名,“对象名表”中可以有一个或多个对象名,多个对象名之间用逗号分隔。对象名表中可以是一般的对象名,也可以是指向对象的指针名或对象的引用,还可以是对象数组名。 例如,定义类Employee的对象的格式如下所示: Employee empl,*pempl,AllEmpl32; 即定义了类Employee的一般对象empl、指向类Employee的对象的指针*pempl和对象数组AllEmpl。数组AllEmpl中的每个元素都是对象。,2. 对象的使用 对象的使用实际上是对象中成员的使用。对象成员是指该对象所属类中定义的成员,包括数据成员和成员函数,其访问形式与结构变量成员的访问形式相同。 通过一般对象访问对象成员的格式如下: 对象名.数据成员名 对象名.成员函数名(参数表) 其中,运算符“.”称为成员选择运算符。,通过指向对象的指针访问对象成员的格式如下: 对象指针名-数据成员名 对象指针名-成员函数名(参数表) 或 (*对象指针名).数据成员名 (*对象指针名).成员函数名(参数表) 其中,运算符“-”也称为成员选择运算符。 例如: Employee empl,*pempl= 另外,通过对象的引

      《Visual C++基础教程 教学课件 ppt 作者 郭文平 第1-6章 第3章》由会员E****分享,可在线阅读,更多相关《Visual C++基础教程 教学课件 ppt 作者 郭文平 第1-6章 第3章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.