C++语言程序设计基础知识Word版

C++语言程序设计基础知识Word版
C++语言程序设计基础知识Word版

第12章 面向对象程序设计与C++基础

程序设计语言是编写程序的工具,程序设计语言的发展反映了程序设计方法的演变过程。随着计算机技术的日新月异,要求软件具有良好的可重用性和可扩展性,这就导致程序设计方法从结构化程序设计方式转变到面向对象程序设计方式。C 语言能够很好地支持结构化程序设计,C++不仅兼容C ,同时具有面向对象的特征,因此充分支持面向对象程序设计。 12.1 面向对象程序设计的基本概念

面向对象技术变革了软件设计的传统方法。解决结构化程序设计不足的方法就是限制数据的存取权限,面向对象程序设计把数据和使用此数据的过程封装成一个类(类可看成是一个基本数据类型)。数据的封装和隐藏一方面使得内部数据不被破坏,另一方面程序具有良好的可读性和相对独立性。类的继承机制不仅提高了代码的可重用性,降低了软件开发难度和开发周期,同时程序的修改变得容易,软件结构更加稳定,软件的可维护性大大提高。 面向对象软件系统由类的层次结构组成,类的具体实例叫做对象,对象之间通过彼此的联系,共同实现程序的功能。如图12-1所示。

面向对象程序设计方法提出一些全新的概念:对象、类、封装、数据隐藏、继承和多态性等。多态性、数据封装和继承共同构筑了面向对象程序设计的三大机制。

1. 类与对象

面向对象的方法学认为,客观世界由对象组成,对象有自己独特的特征和行为,两者密不可分。

面向对象的软件技术中,类是将不同类型的数据

和与这些数据相关的操作封装在一起的集合体。对象

可看成类的具体实例。图12-2描述了洗衣机类。

【例12-1】 在现实世界中,钢笔具有笔帽、笔体、

笔尖、颜色、形状等属性特征,钢笔具有的行为是书写、灌钢笔水。钢笔作为一个整体,具有独特的属性和行为,它们将被抽象成一个钢笔类。这种自成一体性称为封装性。而你正在使用的钢笔,可以看成钢笔类中的一个具体实例。我们不必关心钢笔的内部结构及实现细节,仅利用钢笔对外提供的操作,即外部接口,就可以方便地使用钢笔。

【例12-2】 对于整型类型的数据,可以定义对它的四则运算,这是整型数据具有的行为,四则运算与整型数据封装成一体,命名为“int 类”。字符型运算和逻辑运算不可以访问、修改int 类中的数据,只有int 类中定义的四则运算才能对其进行操作。显然,我们也无需知道四则运算是如何定义的,int 类对外界提供的操作接口是“+”、“-”、“*”、“/”,可以直接利用这些接口实现整数的四则运算,这叫做数据的隐藏性。

类的层次结构 图12-1 面向对象软件系统

图12-2 洗衣机类示意图

2. 数据的封装和隐藏

封装强调的是数据和行为的自成一体性,也就是将数据和操作数据的函数代码进行有机的结合,形成“类”。封装具有如下意义:

1) 面向对象的程序表现出强烈的可读性和独立性。

2) 程序不依赖数据结构的改变,具有良好的可维护性。当数据结构改变时,只有类中对数据进行操作的函数需要修改,程序的其他部分不受影响。

3) 对数据起到一定的保护作用。只有类中的函数才可以修改类中的私有数据。 隐藏是指类把对数据的操作信息隐藏在内部,只提供对象对外的操作接口,用户只能看见对象封装接口上的信息,这样可以保护内部数据不被破坏,同时使用者使用起来非常方便,并可以容易地将其扩展成新的产品。

3. 类的继承

类的继承是指新的派生类可以继承原有父类的全部数据和操作的机制,并可以在派生类中添加新的数据和操作方法。新的派生类又叫子类,原有父类又叫基类或超类。例如,想生产敞篷汽车不用从草图开始,只需要对原有的产品添加新的敞篷功能,这样就会快速开发出一种新的产品。利用类的继承特性,可以非常方便地产生一系列具有相似特征的对象。

再看一个类继承的例子。在小学,我们学过数的四则运算,到中学会进一步学到对数、指数等运算,到大学将学到微积分等内容。我们每一次的进步都将继承已学过的知识,在已有的基础上不断扩充新的知识。

4. 消息

对象之间通过消息相互联系,也是通过消息让某一个对象完成一定的功能。例如,给洗衣机对象发洗涤的操作信号,洗衣机就会执行洗涤的功能。

在面向对象的程序设计中,消息名就是在对象中定义的操作(或称方法),给对象发消息,就是让对象执行某一操作,使对象具有行为的能力。如图12-3所示。

5. 多态性

多态性表示同一种东西有多种形态。例如,与对方通信,这个动作将有多种表现形态,如采用写信的方式、打电话、发电报、发电子邮件等。

在面向对象的程序设计中,多态性是指同一个(或相似的)操作作用于不同的对象上可以有不同的独特行为,比如add 操作,作用在实数对象上,表现为两个实数相加,作用在虚数对象上,表现为两个虚数相加。

面向对象的C++语言允许程序员给不同的对象发同一消息,软件系统会做出决策,即到底执行什么动作。在静态(编译或连接)时就可以分辨的,可通过函数重载实现;在运行时才能分辨的,可通过虚函数实现。

利用多态性,用户能够发送一般形式的消息,而将所有的实现细节留给接收消息的对象。这种高层次的抽象, 使得多态性、数据封装和继承共同构筑了面向对象程序设计的三大机制。

求面积 在C++中的表示: A ? 求面积(边长,顶点坐标) 图12-3 消息机制

12.2 面向对象程序设计语言C++简介

C语言是一种受到广泛重视和应用的面向过程编程的语言,它采用结构化程序设计技术,即把复杂的模块层层分解为一系列简单模块。人们侧重于开发具有特定功能的函数,而有些数据(特别是全局数据)在函数间可随意传递。

结构化程序设计语言无法处理高度复杂的程序,为了弥补结构化C语言的不足,支持面向对象的程序设计的C++语言应运而生。C++语言是一种混合性语言,保留了C语言的全部内容,同时扩展了C语言所不具有的面向对象编程的机制。

C++在技术上与C完全兼容,但它具有与C语言完全不同的思维方式,即支持面向对象的程序设计思想,强调对数据进行封装、保护等深入的维护,强调软件的可扩展性、可修改性和可维护性。

利用C++语言可以进行结构化编程,更重要的功能是进行面向对象的编程。

12.2.1 C++程序结构

本小节主要介绍两个程序,一个是面向过程的C++程序,见例12-3;一个是面向对象的C++程序,见例12-4。通过这两个实例,读者可以对C++程序结构有个初步认识。

【例12-3】以下程序实现输入一个整数,求平方根并打印出来。

// 程序名: csqrt.cpp

#include //定义cout()、cin()的头文件

#include //定义sqrt()的头文件

using namespace std; //使用命名空间std

void main()

{

int x;

cout<<"input number\n"; //提示从终端输入一个整数

cin>>x; //从键盘接收数据存入变量x中

cout<<"the squart of number="<

}

程序运行情况:

input number

4<回车>

the squart of number=2

说明:

1) C++程序注释行以“//”开头,也可以使用C语言的注释行方式。

2) C++程序的后缀通常为cpp。

3) cout、cin是C++语言中增加的用来输出和输入的函数,分别代表标准的输出设备对象和输入设备对象。这两个C++函数是在输入输出流头文件iostream内定义的。

cout的使用形式:cout<<输出字符串或输出变量。cin的使用形式:cin >>变量。

4) endl 操作符表示以后的输出换行打印。

5)C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,程序中第4行的使用,使得命名空间std内定义的所有C++标准库函数名和标识符都有效,就好像它们被声明为全局变量一样。

面向对象程序设计的首要任务是设计类,自顶向下利用演绎的思想,由抽象类派生具体的子类;自底向上利用归纳的思想,由具体的子类归纳出具有共同特征的抽象的父类,从而建立类的层次结构。再以类为模板创建不同的对象,然后协调这些对象共同工作。程

序的运行从main函数开始。

【例12-4】编写一个简单的面向对象的C++程序:设计一个sample类,对整型数据进行管理,初始化并显示对象。

1: #include

2: using namespace std;

3:class sample // create a class

4: {

5: private:

6: int i;

7: public:

8: void initial();

9: void display();

10: };

11: void sample:: initial() //定义类的初始化成员函数

12: { i = 0;

13 }

14: void sample:: display() //定义类的显示成员函数

15: { cout<< i << endl;

16 }

17: void main()

18: { sample A; //定义类sample 的对象A

19: A.initial(); //给对象A 发消息,进行对象的初始化

20: cout << "Object A ,i = ";

21: A.display(); //给对象A 发消息,显示对象

22: }

运行结果:

Object A ,i = 0

说明:

程序的第3~10行,用来声明类sample。其中class是C++用来声明类的关键字。该类中定义了私有的整型数据成员i,以及公有成员函数initial()和display()。私有的整型数据成员i只能通过两个公有成员函数进行初始化和显示。

程序的第11~13行,用来定义类的公有成员函数initial() ,其作用是初始化对象。

程序的第14~16行,用来定义类的公有成员函数display() ,其作用是显示对象。

程序的第17~22行,是主函数,其中第18行用来定义一个具体的对象A,这意味着在内存为对象A分配空间,如图12-4所示。

第19行是给对象A发初始化的消息,对象A执行initial()函数,改变对象A的状态,如图12-5所示。第21行是给对象A发显示的消息,对象A执行display()函数,显示对象A的状态。

对象A i

图12-4定义类的对象A

对象A i

图12-5对象A初始化

12.2.2 C++对C的补充

1. 注释行

C++的注释有两种类型:一种是沿用C语言的方法,采用“/*”和“*/”括起来进行注释,另一种方法是只能用于C++的单行注释,即从“//”开始,直到所在行的行尾,所有字符都被作为注释处理。

2. C++的cin与cout

cout、cin是C++语言中增加的用来输出和输入的函数,分别代表输出设备对象和输入设备对象。cout和cin函数的使用方式不随变量的类型变化,这正是面向对象语言所追求的。

cout是代表标准输出的流设备,如显示屏。输出操作必须配合操作符“〈〈”,表示把该操作符右边的数据输出到显示屏上。cin是代表标准输入的流设备,如输入设备键盘。输入操作必须配合操作符“〉〉”,代表从标准输入设备读取数据到内存。

cin与cout 定义在输入输出流头文件iostream.h中。

3. 关键字const定义符号常量

C++中的符号常量使用关键字const来说明,其一般形式:

const 类型说明符常量名=常量值

类型说明符const 常量名=常量值

例如:定义一个buf的常量。

const int buf=512

int const buf=512

4. new和delete运算符

C++新增new和delete作为动态内存分配和释放的操作符,用来增强C语言中原有的函数malloc和free,提高了内存管理的灵活性。例如:

int *p; //定义指向整数的指针变量

p=new int;//动态申请存放整数的内存空间

delete p; //释放p指向的动态内存空间

5. 引用作为函数参数

C++新增了引用,它使函数调用变得清晰、简单,参数传递效率更高。同时,将引用作为函数参数给编程带来了很大的灵活性。

引用可看成某个目标变量的别名,对引用的操作,实际上就是对目标变量的操作,引用与目标变量完全对应。一旦用目标变量给引用赋初值,引用就被维系在该目标变量上,即引用不会再与其他目标变量建立联系。引用不能是空,与此相反,指针变量可以为空。

声明并初始化引用的一般格式:

数据类型& 引用名=目标变量;

其中,“数据类型”是定义目标变量的类型,而“数据类型&”是用来声明引用的。例如:int m;

int& kk=m; //声明kk是对整型变量m的引用

m=4;

kk=10; //此时目标变量m的值通过引用改为10

【例12-5】引用作为函数参数。

#include

using namespace std;

void swap(int&, int&); //声明形参是引用类型

void main()

{

int x=10, y=20;

cout<<"before swap, x="<

2.在页眉处输入自己的考号、姓名,在页脚处输入"河南省中小学教师计算机考试卷" 3.选中"河南省中小学教师计算机考试卷", 单击格式/段落, 在对齐方式中选"居中", 单击确定 最后在文挡的中间双击鼠标左键. 二、将要编辑的文本另起一页显示 步骤: 1.定位光标: 将光标定在将要编辑的文本的开始处 2.单击插入/分隔符→选分页符→确定 三、将首行缩进两个字符 步骤: 1.定位光标: 将光标定在首行 2.单击格式/段落→选特殊格式为"首行缩进", 度量值为"2字符"→确定 四、设置文档页面纸型为A4,左右页边距为3厘米,上下页边距为2厘米。 步骤: 1. 单击文件/页面设置→单击纸型,选纸型为A4(16开) →单击页边距,调整左右页边距为3厘米,上下页边距为2厘米→确定 注: 在页面设置中,可选择方向为:纵向或横向 五、设定文本的标题为黑体二号粗体字,加下划线,居中排列,背

word基础培训课件

目录 word文档基本编辑技术: (9) 1、启动与退出 (9) 2、认识工作环境 (9) 3、文档的基本编辑方法 (10) 4、设置字符格式 (10) 5、设置段落格式 (10) 6、设置边框及底纹 (10) 一、启动与退出: (10) 1.用菜单命令建立 (10) 2.用工具栏图标按钮建立 (10) 3.使用快捷键建立 (10) 2..退出 (10) 二、认识工作环境: (10) 三、文档的基本编辑方法 (11) 1. 文本的输入 (11) 1. 文本的输入中文,英文,标点符号 (11) 2. 选定文本 (11) 3. 移动和复制文本 (12) 4. 保存文档 (12) 5. 查找与替换 (12) 四、设置字符格式 (12) 1. 利用工具栏设置字符格式 (12)

2. 利用对话框设置字符格式 (13) 五、设置段落格式 (13) 六、设置边框和底纹 (14) 文档版面编排: (14) 1、文档的页面设置 (15) 2、图文混合排版 (15) 3、特殊版面设置 (15) 4、设置页码 (15) 5、添加页眉页脚 (15) 6、插入脚注和尾注 (15) 7、为文档添加批注 (15) 8、表格的应用 (15) 一、文档的页面设置 (15) 1. 设置纸张大小 (15) 2. 设置页面编剧 (15) 二、图文混合排版 (16) 1. 在文档中插入图片 (16) 2. 编辑图片 (16) 3. 插入艺术字 (16) 4. 应用文本框 (17) 三、特殊版面设置 (17) 1. 设置分栏版式 (17) 2. 设置首字下沉 (17)

四、设置页码 (18) 五、添加页脚须眉 (18) 六、插入脚注和尾注 (18) 七、为文档添加批注 (18) 八、表格的应用 (19) 1.插入表格 (19) 2. 表格基本操作 (19) 3. 编辑表格 (19) 4. 表格的格式化 (20) 5. 表格的排序 (20) 文档高级编排技术: (21) 1、应用样式 (21) 2、制作文档目录 (21) 3、设置文档背景 (21) 一、应用样式 (21) 二、制作文档目录 (21) 三、设置文档背景 (21) 1. 设置图片水印 (21) 2. 设置文字水印 (22) 四、设置字符格式 (22) 五、设置段落格式 (22) 六、设置项目符号和编号 (23) 七、设置边框和底纹 (23)

相关文档
最新文档