首页 理论教育学习C++封装原理-MFC视频教程

学习C++封装原理-MFC视频教程

【摘要】:有C++语言基础的读者都很清楚,面向对象的程序设计中有四大特征:抽象、封装、继承和多态。在C++程序设计中经常封装一个类,让调用者更容易使用。C++封装过程,如同给计算机主机加上机箱,而封装类中的成员函数可以比喻为电源和重启按钮。本节通过对比C语言time族群函数和CTime类,学习MFC封装类的产生过程。基于以上的程序对比可知,C++封装的过程是精心设计而成的,封装的结果会给使用者带来方便。

有C++语言基础的读者都很清楚,面向对象的程序设计中有四大特征:抽象、封装、继承和多态。在C++程序设计中经常封装一个类,让调用者更容易使用。C++封装过程,如同给计算机主机加上机箱,而封装类中的成员函数可以比喻为电源和重启按钮。就如同一台计算机没有机箱,专业人员也能在主板上直接开机和关机;但是普通人还是需要有机箱的计算机主机,机箱上的开关按钮很方便开关计算机。本节通过对比C语言time族群函数和CTime类,学习MFC封装类的产生过程。C语言主要时间函数见表3-2。

表3-2 C语言主要时间函数

978-7-111-46378-8-Chapter03-11.jpg

1)在MSDN索引中,分别输入表3-2中的函数名称再按<Enter>键,如图3-8所示。

2)打开本章第1节建立的tm工程,在主对话框中添加一个按钮测试C语言时间函数,如图3-9所示。

978-7-111-46378-8-Chapter03-12.jpg

图3-8 查看MSDN函数说明

978-7-111-46378-8-Chapter03-13.jpg

图3-9 编辑主对话框资源

3)双击“测试time”按钮,创建与按钮关联的成员函数OnTest2,如图3-10所示。

978-7-111-46378-8-Chapter03-14.jpg

图3-10 添加按钮关联函数

4)修改OnTest2函数代码,使用time族来显示当前时间。

978-7-111-46378-8-Chapter03-15.jpg

5)编译并运行,测试以上代码,如图3-11所示。

对比C语言模式和CTime封装类对时间的调用,使用CTime类更加方便而且一目了然,未封装前的C语言函数对时间的操作较为混乱。例如,要在某些地方加1900或者加1这样的数字,原因就在tm结构体的定义上。(www.chuimin.cn)

6)选中tm,单击鼠标右键,选择“Go To Definition Of tm”命令,或者按<F12>键,如图3-12所示。

978-7-111-46378-8-Chapter03-16.jpg

图3-11 查看运行结果

978-7-111-46378-8-Chapter03-17.jpg

图3-12 查看时间结构体的定义

7)tm结构体的定义如下。

978-7-111-46378-8-Chapter03-18.jpg

8)了解封装过程。在GetCurrentTime行设置一个断点,按<F5>键以调试模式运行程序。运行到达断点处后按<F11>键,进入该函数查看MFC的源代码,如图3-13所示。

978-7-111-46378-8-Chapter03-19.jpg

图3-13 查看CTime类成员函数源代码

注意:只有设置为“Statically Linked”静态链接的工程,才能查看到MFC的源代码。

9)原来CTime的类成员函数,全部都是调用了C语言的time族函数。

978-7-111-46378-8-Chapter03-20.jpg

978-7-111-46378-8-Chapter03-21.jpg

基于以上的程序对比可知,C++封装的过程是精心设计而成的,封装的结果会给使用者带来方便。