通过C++Builder学习C++面向对象程序设计Word文档下载推荐.docx
- 文档编号:6020786
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:33
- 大小:564.78KB
通过C++Builder学习C++面向对象程序设计Word文档下载推荐.docx
《通过C++Builder学习C++面向对象程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通过C++Builder学习C++面向对象程序设计Word文档下载推荐.docx(33页珍藏版)》请在冰点文库上搜索。
类把数据(成员变量)和操作数据的函数(成员函数)封装在一起。
就现在而言,TForm1类还没有成员变量,仅有一个与类名相同的构造成员函数。
随着程序设计的进行,稍后可以看到TForm1类的变化。
知道了类及其定义之后,再来看一下什么是对象。
其实对象(Object)就是类的一个实例(Instance)。
现在需要观察代码编辑窗口中程序源文件Unit1.cpp的内容,此时如图6所示:
图6C++生成类的实例
在图6所示的源文件中,用“TForm1*Form1;
”语句生成了TForm1类的一个实例(即对象),这个对象就是可视化的窗体,它是C++Builder为一个新的工程自动生成的一个对象(主窗体)。
类与对象的关系相当于图纸和实物的关系,也可以说是抽象与具体的关系。
例如,要制造一台汽车,首先要进行设计,以生成图纸,然后才能根据图纸生产出汽车。
这里说的图纸就是类,而汽车就是对象。
对象是现实世界中的一个实体,其特性是:
(1)每一个对象都必须有一个名字,以区别于其它对象;
(2)用属性(数据)来描述对象的特征;
(3)有一组操作(对数据的操作处理),每一个操作决定对象的一种行为。
综上所述,对象的两个要素是属性和行为。
属性是对象的特征,通过定义成员变量来描述;
行为是对象的动作,通过定义成员函数完成。
C++面向对象编程的思想就是将对象的属性和行为“封装”在一起。
所以说,类是面向对象编程的程序基本单位。
在可视化语言编程环境中,用户界面上出现的元素(例如命令按钮、文本编辑框和列表框等组件,组件也称控件),都是对象。
组件是C++Builder程序设计的核心,C++Builder已经设计好了各种对象,程序员可以直接使用这些组件对象,也可以使用第三方开发人员提供的组件对象。
3.建立编辑框、标签和按钮控件对象
现在用C++Builder的VCL(即可视化的组件库)在窗体对象(窗体对象是个容器对象)内生成几个新的对象。
从组件选项卡的“Standard”页中,分别选择“Edit”控件、“Label”控件和“Button”控件,在窗体上分别放置三个编辑框、两个标签和一个按钮控件,用户界面如图7所示(控件的位置和大小可直接用鼠标拖动操作进行设置):
图7放置编辑框、标签和按钮控件后的用户界面
如此一来,就建立了六个对象(一个控件就是一个对象)。
4.修改对象的属性
每个对象都有属性。
属性是对象的性质或是描述对象的数据,用于定义对象的特征。
改变对象的属性,便可控制其在程序中的作用。
对象有哪些属性,每个属性是什么含义,可以参考C++Builder的帮助系统,那里有非常详细的说明。
对象的属性可以进行设置和修改。
几乎所有的属性(例如,影响一个组件在运行时是否可见Visible、对象的名称Name、文本编辑框的内容Text、标题Caption、字体Font等属性)可以在程序设计时通过属性面板来定义和修改,但也可在程序运行时通过编写代码来设置和修改(Name属性除外)。
按表1所给内容,通过属性面板修改上述六个控件的属性(仅修改表格中第4~7列所给出的属性):
表1编辑框、标签和按钮的属性
控件所属的选项卡
默认控件名
控件
Name属性
Text属性
Caption属性
TabOrder属性
备注
Standard
Edit1
编辑框
n1
(空)
“默认控件名”后的数字可能不完全相同
Edit2
n2
Edit3
n
Label1
标签
op
+
Label2
(不变)
=
Button1
按钮
done
查看成绩
修改后的用户界面如图8所示(可以通过修改Font属性获得满意的字体、字号、颜色等):
图8修改各控件属性后的用户界面
此时,代码编辑器窗口的内容自动变成图9所示的内容:
图9修改各控件属性后的代码编辑器窗口内容
由图9可以看出,类浏览器和代码窗口里的头文件同时显示了TForm1类的六个数据成员(每个数据成员名即为相应控件的Name属性的值)。
5.建立组框、带标签的编辑框控件对象
按照表2在窗体上添加一个组框控件并设置属性:
表2组框控件的属性
Enabled属性
GroupBox1
组框
false
统计信息
按照表3在组框控件内添加三个带标签的编辑框控件并设置属性:
表3带标签的编辑框属性
EditLabel/Caption属性
LabelPosition属性
Additional
LabeledEdit1
带标签的编辑框
nRight
正确
lpLeft
LabeledEdit2
nWrong
错误
LabeledEdit3
Scores
得分
此时的用户界面如图10所示:
图10放置组框、带标签的编辑框控件并修改各控件属性后的用户界面
6.建立标签与多行文本框控件对象
按照表4在窗体上添加一个标签控件并设置属性:
表4标签属性
评判结果
按照表5在窗体上添加一个多行文本框控件并设置属性:
表5多行文本框属性
Lines属性
ScrollBars属性
Memo1
多行文本框
ssVertical
此时的用户界面如图11所示:
图11放置标签、多行文本框控件并修改各控件属性后的用户界面
7.建立带图片的按钮、状态栏控件对象
按照表6在窗体上添加两个带图片的按钮控件并设置属性:
表6带图片的按钮控件属性
Kind属性
BitBtn1
带图片的按钮
ReTry
bkRetry
从头再来
BitBtn2
Exit
bkIgnore
不玩了
按照表7在窗体上添加一个状态栏控件并设置属性:
表7状态栏控件属性
Name
SimplePanel
SimpleText
Win32
StatusBar1
状态栏
true
加减乘除随机出题
状态栏会自动布置在窗体下方
此时的用户界面如图12所示:
图12放置图片按钮、状态栏控件并修改各控件属性后的用户界面
8.保存工程中的的所有文件并运行程序
点击C++Builder主工具栏上的“SaveAll”按钮,保存工程文件和窗体文件到指定的文件夹下。
(这里应注意:
所有的文件都应保存在同一个文件夹下)
可以试着运行一下现在所设计的程序。
点击C++Builder主工具栏上的Run按钮
,程序经过编译后自动生成EXE文件,并且立即运行,所看到的程序界面应和所设计的界面一致,此即“所见即所得”。
如果打开工程所在文件夹,可以看到里边有许多文件,其中.bpr是工程项目文件,.h是头文件,.cpp是程序源文件,.dfm是窗体定义文件,.ddp是Diagram图文件,.res是资源文件,.tds是外部调试符号表文件,.obj是目标文件,.exe是可执行文件,.~*是前面所述多种文件的备份文件。
9.建立媒体播放器、主菜单、弹出式菜单、工具栏、加速按钮控件对象
终止程序的运行,回到设计环境。
按照表8在窗体上添加一个媒体播放器控件并设置属性:
表8媒体播放器控件属性
Visible属性
FileName属性
System
MediaPlayer1
媒体播放器
献给爱丽丝.mid
事先应将“献给爱丽丝.mid”音乐文件拷贝到程序所在的文件夹下
下面制作主菜单(下拉菜单)。
按照表9在窗体上添加一个主菜单控件并设置属性:
表9主菜单控件属性
Items属性
MainMenu1
主菜单
(点击该属性后面的相应按钮,会出现专门的菜单设计界面,根据要求进行菜单的设计)
主菜单会自动显示在窗体界面上
小技巧:
菜单项之间的横线也算一个菜单项,制作方法是将其Caption属性设置为“-”即可。
图3a所示下拉菜单中的各菜单项的Name与Caption属性如表10所示:
表10主菜单各菜单项属性
菜单
菜单项Name属性
菜单项Caption属性
菜单项RadioItem属性
运算类型
m1
加法
m2
减法
m3
乘法
m4
除法
m5
随机
系统
Option
运算参数设置
Exit3
结束程序
把运算类型菜单中的五个菜单项的RadioItem属性值都设为true,会使它们有互斥效果,就像一组单选按钮一样。
下面制作弹出式菜单。
按照表11在窗体上添加一个弹出式菜单控件并设置属性:
表11弹出式菜单属性
PopupMenu1
弹出式菜单
(与主菜单的制作方法相同)
图3b所示弹出式菜单中的菜单项的Name与Caption属性如表12所示:
表12弹出式菜单中的菜单项属性
Exit2
退出程序
下面制作工具栏。
按照表13在窗体上添加一个工具栏控件并设置属性:
表13工具栏控件属性
ToolBar1
工具栏
工具栏会自动布置在窗体上方
按照表14在工具栏上添加六个加速按钮控件并设置属性:
表14加速按钮控件属性
Glyph属性
SpeedButton1
加速按钮
Mp3.bmp
SpeedButton2-6
事先应将“mp3.bmp”位图文件拷贝到程序所在的文件夹下
最后,将窗体对象的Caption属性设置为“简单算术自测程序”。
再次保存所有文件。
完成后的窗体用户界面如图13所示:
图13放置媒体播放器、主菜单、弹出式菜单、工具栏和加速按钮控件并修改各控件属性后的用户界面
此时,代码编辑器窗口的内容如图14所示:
图14完成所有控件布局及属性设置后的代码编辑器窗口
10.生成窗体2
以上完成了窗体1(主窗体)用户界面部分的设计,下面制作窗体2(参数设置窗体)。
点击C++Builder6主工具栏上的“NewForm”
按钮,这时会自动出现一个新的窗体Form2(同时产生Unit2.h和Unit2.cpp两个文件)。
以后如果想要查看并修改某个窗体,可点击C++Builder6主工具栏上的“ViewForm”
按钮进行选择。
修改窗体2的“Caption”属性值为“运算参数设置”。
11.建立标签、带图片的按钮、旋转编辑器控件对象
在窗体2上放置四个标签和一个带图片的按钮控件,并按图2设置其相关属性(OK按钮的Name属性设置为SetDone)。
按照表15在窗体2上放置四个旋转编辑器控件并设置属性:
表15旋转编辑器控件属性
MinValue属性
MaxValue属性
Value属性
Samples
CSpinEdit1
旋转编辑器
2
50
(用默认值)
CSpinEdit2
CSpinEdit3
20
CSpinEdit4
10
400
完成设置后的窗体2如图15所示:
图15完成所有控件布局及属性设置后的窗体2
点击C++Builder主工具栏上的“SaveAll”按钮,保存工程文件和两个窗体文件。
以上完成了程序的用户界面部分的设计。
四.编写程序代码
前面曾经说过,对象的两个要素是属性和行为,而到此为止所做的全部工作也仅仅是在用属性来描述对象的外部特征,只有通过编写代码才能规定对象的行为。
下面编写程序代码。
1.声明TForm1类的私有成员变量
在代码编辑器窗口中的Unit1.h头文件(窗体1的头文件)中,找到“private:
”这行代码,在其下方添加TForm1类的私有成员变量,这些私有成员变量将只可以被该类的成员函数访问:
//声明TForm1类的私有成员变量
intopType;
//运算类型,1-加法,2-减法,...,5-随机
intop1,op2,answer,right;
//两个运算数、答案和正确答案
intcorrect,total;
//答对的题目数量与答题总数
intAddMax,SubMax,MultiMax,DivMax;
//四种运算数的最大值(出多少以内的运算题)
为类添加成员变量,也可以这样操作:
在类浏览器窗口中单击鼠标右键,在弹出的快捷菜单中选择“NewField…”,随后可根据对话框进行操作。
但用这种方法进行操作,一次只能添加一个成员变量。
在类浏览器窗口中,展开TForm1前面的“+”号,可以看到多行
与
灰色图标,图标上若有一把锁,则表明这个成员变量或成员函数是“私有”的,否则就是“公有”的。
由于刚才所添加的成员变量全部是私有的,所以可以看到它们前面的图标上都带有一把锁。
(如果看不到,则不用管它。
)
2.包含必需的头文件
在代码编辑器窗口中的Unit1.cpp文件(窗体1的程序源文件)中,找到#include"
Unit1.h"
这行代码,在其下方添加包含三个头文件的宏命令:
#include"
Unit2.h"
//需要调用第2个窗体
stdlib.h"
//产生随机数头文件
math.h"
//数学运算头文件
3.为TForm1类添加成员函数(方法)
对象的方法(Method)是让对象实施一个动作或产生一个行为的途径,即方法告诉对象应处理的事情。
每一个对象都包含对数据进行操作的代码段,这段代码就是对象能够执行的一个操作,即方法。
例如,列表框有AddItem、Removeltem和Clear等方法来维护其列表中的内容。
下面为TForm1类添加几个成员函数(成员函数即类的方法Method)。
在类浏览器窗口的TForm1上面单击鼠标右键,在弹出的快捷菜单中选择“NewMethod…”菜单项,会弹出下面的“AddMethod”对话框,如图16所示:
图16AddMethod对话框
在MethodName后的文本框中,输入“Add”,在FunctionResult后的下拉列表框中挑选“void”(这表明函数不返回值),然后点击“OK”按钮,代码窗口中将自动出现以下几行代码:
voidTForm1:
:
Add()
{
//TODO:
Addyoursourcecodehere
}
在注释处添加下面加粗显示的四行程序代码,结果如下所示:
Add()//产生两个加数并求和的成员函数
this->
op1=2+rand()%(this->
AddMax-2);
//产生第一个随机数并保存在相应的成员变量中
op2=2+rand()%(this->
//产生第二个随机数并保存在相应的成员变量中
right=this->
op1+this->
op2;
//运算并保存正确答案
op->
Caption="
+"
;
//在窗体上显示相应的运算符号
以上程序代码的作用在每行后都有详细说明,不再赘述。
简单说一下代码中访问成员变量和对象的属性的书写格式。
类的成员函数可以访问类的私有成员变量,代码书写格式是:
类实例名->
成员变量名,例如上面代码中this->
right。
在C++中,this是一个指针,this指针存在于类的成员函数中,它指向被调用函数所在的类实例的地址,也就是TForm1类的实例Form1的地址。
因此,this->
right也可以写成
Form1->
right,当然,如果只写right也是可以的。
由于在C++Builder中,所有的对象都被声明成指针类型的,所以访问对象的属性的代码格式是:
对象名->
属性,例如op->
Caption。
打开Unit1.h头文件,可以看到如下的声明语句:
public:
//Userdeclarations
__fastcallTForm1(TComponent*Owner);
voidAdd();
这说明,所添加的Add成员函数是“公有”的。
另外,在类浏览器窗口中,也可看到相应的
项。
蓝色图标表示这是成员函数,而非成员变量。
显然,成员函数一旦被执行,对象也就有了“行为”。
以上完成了为TForm1类添加Add成员函数。
用同样的方法为TForm1类添加下面几个成员函数:
Sub()//产生出减法题所需的被减数和减数
SubMax-2);
if(this->
op1<
op2){
shortintt=this->
op1;
op1=this->
op2=t;
//保证被减数大于减数
}
op1-this->
-"
Multi()//产生出乘法题需要的乘数与被乘数
MultiMax-2);
op1*this->
×
"
Div()//产生出除法题所需要的被除数与除数
op1=2+rand()%int(sqrt(this->
DivMax)-2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通过 Builder 学习 C+ 面向 对象 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)