- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[信息与通信]C学习教程及习题第六章
教学目标??? ●了解封装与数据隐藏的软件工程概念??? ●了解数据抽象和抽象数据类型(ADT)的符号??? ●生成C++的ADT(即类)??? ●了解如何生成、使用和删除类对象??? ●控制对象数据成员和成员函数的访问??? ●开始认识面向对象的价值? 6.1? 简介??? 下面开始介绍C++中的面向对象。为什么把C++中的面向对象推迟到第6章才开始介绍呢?原因是我们要建立的对象是由各个结构化程序组件构成,因此先要建立结构化程序的基础知识。??? 在第1章到第5章的“有关对象的思考”小节中,我们介绍了C++中的面向对象编程的基本概念(即“对象思想”)和术语(即”对象语言”)。在这些”有关对象的思考”小节中,介绍了面向对象设计(object-orienteddesign,OOD)的方法:我们分析了典型问题的陈述,要求建立一个系统(电梯模拟程序),确定实现该系统所需的类,确定这些类对象的属性,确定这些类对象的行为,指定对象之间如何通过交互以完成系统的总体目标。??? 下面简要介绍面向对象的一些关键概念和术语。OOP将数据(属性)和函数(行为)封装(encapsulate)到称为类(class)的软件包中,类的数据和成员是密切联系的。就像蓝图,建筑人员通过蓝图建造房子,而程序虽则通过类生成对象。一个蓝图可以多次复用.建造多幢房子;一个类也可以多次夏用,建立多个对象。类具有信息隐藏(information hiding)属性,即类对象只知道如何通过定义良好的接口(interface)与其他类对象通信,但通常不知道其他类的实现方法,实现细节隐藏在类中。我们可以熟练地开车,而不需要知道发动机、传递系统和燃油系统的工作原理。我们可以看到信息隐藏对良好的软件工程是多么重要。??? 在C语言和其他过程化编程语言(proceduralprogramminglanguage)中,编程是面向操作的(action-oriented),而在C++中,编程是面向对象的(object-oriented)。在C语言中,编程的单位是函数(function),而在C++中.编程的单位是类(class),对象最终要通过类实例化。??? C语言程序员的主要工作是编写函数,完成某个任务的一组操作构成函数,函数的组合则构成程序。数据在C语言中当然很重要,但这些数据只用于支持函数所要进行的操作。系统指定中的动词帮助C语言程序员确定一组用于实现系统的函数。??? C++程序员把重点放在生成称为类的用户自定义类型(user-definedtype),类也称为程序员定义类型(programmer-defined type)。每个类包含数据和操作数据的一组函数。类的数据部分称为数据成员(data member)。类的函数部分称为成员函数(member function,有些面向对象语言中也称为方法)。int等内部类型的实例称为变量(variable),而用户自定义类型(即类)的实例则称为对象(object)。在C++中,变量与对象常常互换使用,C++的重点是类而不是函数。系统指定中的名词帮助C++程序员确定实现系统所需的用来生成对象的一组类。??? C++中的类是由C语言中的struct演变而来的。介绍C++类的开发之前.我们先使用结构建立用户自定义类型,通过介绍这种方法的缺点从而说明类的优点。6.2? 结构定义??? 结构是用其他类型的元素建立的聚合数据类型。考虑下列结构定义:?struct Time {?????? int hour;????? // 0-23?????? int minute;??? // 0-59?????? int second;??? // 0-59??? };? 结构定义用关键字struct引入。标识符Time是个结构标志(structure tag),命名结构定义并声明该结构类型(structure type)的变量。本例中,新类型名为Time。结构定义花括号中声明的名称是结构的成员(member)。同一结构的成员应有惟一名称.但两个不同结构可以包含同名成员而不会发生冲突。每个结构定义应以分号结尾。上述解释对后面要介绍的类也适用,C++中的结构和类是非常相似的。??? Time的定义包含三个int类型的成员hour、minute和second。结构成员可以是任何类型,一个结构可以包含不同类型的成员。但是,结构不能包含自身的实例。例如,Time类型的成员不能在Time的结构定义中声明,但该结构定义中可以包含另一Time结构的指针。当结构包含同一类型结构的指针时,称为自引用结构(self-referential structure)。自引用结构用于形成链接数据结构,如链表、队列、堆栈和树等(见第15章介
文档评论(0)