1、第1章 C+编程基础【本章学习要点】1.掌握面向对象的基本概念;2.掌握对象和类的概念,理解对象的特性;3.掌握C+语言的基本概念。参考教材参考教材:C+面向对象程序设计 谭浩强 清华大学出版社 第第1 1章章 C+C+编程基础编程基础1.1 C+语言简介1.2 面向对象方法的基本概念 1.3 C+语言的基本概念 1.4 C+程序风格 1.5 C+程序的运行环境 1.1.1 C+语言的发展史语言的发展史 C+源于C语言,而C语言是在B语言的基础上发展起来的。1960年出现了一种面向问题的高级语言ALGOL 60。1963年英国剑桥大学推出了CPL(Combined Programming La
2、nguage)语言,后来经简化为BCPL语言。1970年美国贝尔(Bell)实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,取其第一字母B,称为B语言。1.1 C+语言简介语言简介 1972年美国贝尔实验室的Dennis M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。1980年贝尔实验室的Bjarne Stroustrup对C语言进行了扩充,推出了“带类的C”,多次修改后起名为C+。以后又经过不断的改进,发展成为今天的C+。C+改进了C的不足之处,支持面向对象的程序设计,在改进的同时保持了C的简洁性
3、和高效性。C+编程模式 1.1.2 结构化程序设计 主要特征与原则:结构化程序是由顺序结构、选择结构和循环结构构成;有限制地使用goto语句;使用结构化程序设计语言书写结构化程序,并采用一定的书写格式以提高程序结构的清晰性和程序的易读性;强调程序设计过程中人的思维方式与规律,采用自顶向下的程序设计策略,通过一组规则、规律与特有的风格对程序设计细分和组织。面向对象程序设计 C+:以类为核心的面向对象程序设计模式。问题函数算法对象 面向对象程序设计有3个主要特征:封装、继承和多态。自下向上的编程方式 1.1.3 C+语言的特点语言的特点 C+语言继承了C语言的特点:丰富的运算符和数据类型、结构化的
4、程序设计方法、高效的机器代码、良好的可移植性。C+语言扩展了C语言的功能,增加了面向对象机制。C+语言既适用于编写系统软件,也适用于设计应用软件。与C语言相比,C+语言的错误检查机制强。1.2 面向对象方法的基本概念面向对象方法的基本概念 面向对象程序设计是在吸取结构化程序设计的一切优点的基础上发展起来的一种新的程序设计方法。它的本质是把数据和处理数据的过程当成一个整体对象。面向对象是C+中的主要概念,在学习C+之前首先要了解这些概念。对象对象按照面向对象的观点,对象(object)是现实世界中各种各样实际存在的事物,包括有形的对象和无形的对象。例如:人、学生、猫、动物、植物、汽车、工厂和计算
5、机等都是有形的对象,而计划、思想、控制系统、程序等都是无形的对象。对象是构成世界的一个独立单位,它具有自己特定的属性(attribute)(如大小、形状和重量等)和行为(behavior)(如生长、行走、转弯和运算等),人们通过对象的属性和行为来认识对象。在计算机科学中,对象对象是系统中用来描述客观事物的一个实体实体,它是构成系统的基本单位,而系统可以看作是由一系列相互作用的对象组成。类类类类是面向对象语言必需提供的用户定义的数据类型,它将具有相同状态、操作和访问机制的多个对象抽象抽象成为一个对象类。类可用公式表示:类=数据结构+对数据进行操作的函数类与对象的关系如同汽车与具体的一辆车的关系。
6、汽车都能跑,有四个轮子,所有的汽车组成了一个类,具体到一辆汽车,它具有类的全部特性(能跑,有四个轮子),是汽车类的一个子集或元素。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称作类的一个实例(instance)。消息消息 面向对象方法提供了对象之间的通信机制。程序由一些相互作用的对象(类)构成,对象之间的交互通过发送消息来实现。程序通过执行对象的各种行为方法,来改变对象的状态(属性数据),从而使该对象发生某些事件。当对象发生某些事件时,通常需向其他相关对象发送消息,请求它们作出一些处理。消息是向某对象请求服务的一种表达方法消息是向某对象请求服务的一种
7、表达方法。对象内有方法和数据,外部的用户或对象对该对象提出的服务请求,可以称为向该对象发送了消息。继承继承 继承是面向对象语言的另一特性。类与类之间可以组成继承层次,一个类的定义(子类)可以定义在另一个已定义类(父类)的基础上。子类可以继承父类中的属性和操作,也可以定义自己的属性和操作。C+语言支持单继承和多继承,因而具有继承这一特性所带来的优势,大大增加了程序的重用性。封装封装 封装是面向对象方法的一个重要原则。它有两个涵义:第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或
8、者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对象的属性,只能通过几个允许外部使用的服务与对象发生联系。1.3 C+语言的基本概念语言的基本概念 1.3.1 程序【例1.1】一个简单的C+程序。#include void main(void)/*输出This is my first C+program.*/cout”This is my first C+program.n”;我们可以发现:1._C+源程序文件的扩展名为CPP。2._C+注释不但可以使用符号“/*”和“*/”,表示符号“/*”和“*/”之间的内容都是注释;而且还可以使用一个双斜线“
9、/”,表示“/”之后的本行内容是注释,注释在按回车键后自动结束。3._C+程序一般包含的是标准输入、输出流的头文件iostream.h,输入、输出可以通过使用输入、输出流对象(如cin、cout)来完成。1.3.2 对象和类 从面向对象的角度来说,类是对某一类对象的抽象,而对象是类的具体实例;从程序设计语言的角度来说,类是一种复杂的自定义数据类型,对象是属于这种数据类型的变量。C+引入了类这种抽象数据类型,实现了对对象的抽象和封装。C+定义类的基本形式如下:class private:;public:;protected:;【例1.2】定义类Time(时间)。class Timeprivate
10、:int hour;int minute;int second;public:void setTime(int,int,int);void showTime();【例1.3】类Time的实现。void Time:setTime(int h,int m,int s)hour=(h=0&h=0&m=0&s60)?s:0;void Time:showTime()couthour:minute:secondendl;/输出时间【例1.4】类ime 的使用,声明对象并设置对象属性。void main()Time EndTime;/声明对象EndTimeEndTime.setTime(1,2,3);/设置
11、对象EndTime的时间(属性,数据成员)cout”The end time is:”;EndTime.ShowTime();/显示对象EndTime的时间1.3.3 常量和变量 在程序中使用的数据有常量和变量两种类型,常量的值是始终不变的,而变量的值是可以被改变的。常量和变量的主要区别在于:常量不占内存空间,不能为常量赋值;而变量需要占内存空间,可以给变量赋不同的值。1.3.4 函数函数 函数是C+程序的构成基础。C+程序都是由一个个函数所组成的。在C+中,函数是结构化设计的“自顶向下、逐步求精”思想的具体体现。函数是程序模块划分的基本单位,程序员可将一个复杂的程序分解为若干个相对独立且功能
12、单一的子程序即函数进行设计。C+函数有三种:主函数(即main()函数)、C+提供的库函数和自定义函数。1.3.5输入和输出 程序从外部设备获得数据称为输入(input),反之,将程序中的数据送到外部设备如屏幕、打印机等称为程序的输出(output)。1.标准输出语句cout”lets learn to write a C+Program.”;cout endl;cout”chicken hen cock“endl;cout”chicken”hen”cockmyage;#includevoid main(void)int myage;cout myage;/输入年龄(一个整数)coutmyag
13、eendl;1.3.6 预处理命令预处理命令#include 预处理命令以位于行首的符号“#”开始,C+提供的预处理有宏定义命令、文件包含命令和条件编译命令三种。我们着重介绍#include文件包含指令。#include文件包含指令是指将一个源文件嵌入到当前源文件中该指令处。#include指令有以下两种形式,其格式如下:第一种形式:第一种形式:#include 第一种形式中,所要嵌入源文件用尖括号括起来。这种形式的#include指令告诉编译预处理程序在编译器自带的外部库的头文件中搜索要嵌入的文件,它们一般是系统提供的公共头文件,存放在系统目录中的Include子目录下。第二种形式:第二种形
14、式:#include”文件名”第二种形式中,所要嵌入的源文件用双引号括起来。这种形式的#include指令告诉编译预处理指令先在当前子目录搜索要嵌入的文件(一般是用户自定义的头文件或源文件),如果没有找到文件,则再去搜索编译器自带的或外部库的头文件。1.3.7 头文件头文件 每个C+程序通常分为两个文件,一个文件用于保存程序的声明(declaration),称为头文件;另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C+程序的头文件以“.h”为后缀。头文件由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构
15、声明等。头文件的作用:头文件的作用:(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。1.4 C+程序风格程序风格 C+程序由语句组成,语句主要包括声明语句和执行语句。声明语句用于声明变量和函数,变量声明语句说明变量的名称和数据类型,函数声明语句说明函数的名称、参数类型和返回
16、值类型;执行语句包括赋值语句、表达式语句、函数调用语句和流程控制语句等。1.4.1 命名命名 标识符是由程序员定义的字符串,用以命名程序中变量名、函数名、常量名和对象名等。标识符由字母、数字和下划线“_”组成。第一个字符只能以字母或下划线开头,而且不能是数字。与有些语言不同,C+编译器把大写和小写字母当作不同的字符,这个特征称为“大小写敏感”。为标识符取名时,恰当运用下划线,大、小写字母混用以及使用较长的名字都有助于提高程序的可读性。但是不要采用C+关键字。关键字是C+编译器预定义的,具有固定含义的保留字,用于在程序中表达特定的含义,如表示数据类型、存储类型、类和控制语句等。以下是标准C+中主
17、要的关键字:auto,bool,break,case,catch,char,class,const,continue,default,delete,do,double,else,enum,extern,false,float,for,friend,goto,if,inline,int,long,namespace,new,operator,private,protected,public,register,return,short,signed,sizeof,static,struct,switch,template,this,throw,true,try,typedef,typename,u
18、nion,unsigned,virtual,void,while。1.4.2 编排编排 C+语言程序的书写格式自由度高,灵活性强,随意性大,如一行内可写一条语句,也可写几条语句;一个语句也可分写在多行内。不过应采用适当的格式书写,便于人们阅读和理解。为了增加程序的可读性和利于理解,编写程序时按如下要点书写:1.一般情况下每个语句占用一行;2.不同结构层次的语句,从不同的起始位置开始,即在同一结构层次中的语句,缩进同样的字数;3.表示结构层次的大括弧,写在该结构化语句第一个字母的下方,与结构化语句对齐,并占用一行;4.适当加些空格和空行。1.4.3 注释注释 注释是用来帮助阅读、理解及维护程序。
19、在编译时,注释部分被忽略,不产生目标代码。C+语言提供两种注释方式。一种是与C兼容的多行注释,用/*和*/分界。另一种是单行注释,以“/”开头的表明本行中“/”符号后的内容是注释。1.5 C+程序的运行环境程序的运行环境1.Turbo C+2.C+Builder3.Dev-C+4.Visual C+Visual C+6.0在项目文件管理、调试及操作的亲和力等方面上都略胜一筹,故本书以其比较流行的汉化版本Visual C+6.05 SP6中文企业版作为编程环境。C+程序最早是在Microsoft Visual C+6.0(英文版,以下相同)环境中进行编辑、编译、连接和执行。具体步骤如下:(1)启
20、动Microsoft Visual C+6.0,见图1-1;1.5 C+程序的运行环境程序的运行环境(2)单击【file】菜单中的【new】,弹出窗口,见图1-2;(3)选中【Projects】选项卡,单击【Win32 Console Application】选项,在【Project name】编辑框中输入项目名称,在【Location】中选择项目存放的位置,单击【OK】按钮,创建一个项目,见图1-3;(4)在【Source Files】文件夹中添加程序文件(扩展名为.cpp),并编辑程序,然后进行编译和运行,见图1-4。本书所有程序都在Microsoft Visual C+6.0环境中调试通
21、过。Microsoft Visual Studio 2005(中文版,以下相同)是比Microsoft Visual C+6.0集成度更高、功能更强、通用性更好的开发软件系统的工具,也可以作为C+程序的运行环境,而且比Microsoft Visual C+6.0具有更加强大的错误检查机制和更高的效率。C+程序在Microsoft Visual Studio 2005环境中的编辑、编译、连接和运行和在Microsoft Visual C+6.0环境中类似,具体步骤如下:(1)启动Microsoft Visual Studio 2005,见图1-5;(2)单击【文件】菜单中的【新建】,弹出窗口,见
22、图1-6;(3)选中左侧窗口中【Visual C+】中的【CLR】,单击右侧窗口中的【CLR控制台应用程序】,在【名称】编辑框中输入项目名称,在【位置】中选择项目存放的位置,单击【确定】按钮,创建一个项目,见图1-7;(4)在程序文件中添加头文件#include和名称空间using namespace std;,然后输入程序,再编辑运行,见图1-8。本书程序也可以在Microsoft Visual Studio 2005环境下运行,但须注意以下几点:(1)#include不能写成#include;(2)必须添加要用到的名称空间,如using namespace std;;(3)函数mian()
23、括号中的内容可以删除,不影响一般程序的运行。【复习与提示】1.面向对象最基本的概念就是对象。对象是对客观世界实体的认识,对象之间也是有联系的,具有相同类型属性和操作的对象可以被抽象为类,类是对象的模板。2.面向对象有三个特性:封装性。对象中的属性和操作都被隐藏起来,只把接口暴露给外界。继承性。对象间的一种层次关系,如某个对象继承了另一个对象就具有了那个对象所有的属性和方法。多态性。同一个操作作用在不同对象的时候表现出的不同行为。3.C+程序中的程序由头文件、主函数、函数变量的定义以及注释组成。在注释方面,C+增加“/”符号的注释方法,使用很方便,同时C+增加了新的输入输出cout和cin,需要在头文件中添加。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。