【摘要】:有C++语言基础的读者都很清楚,面向对象的程序设计中有四大特征:抽象、封装、继承和多态。在C++程序设计中经常封装一个类,让调用者更容易使用。C++封装过程,如同给计算机主机加上机箱,而封装类中的成员函数可以比喻为电源和重启按钮。本节通过对比C语言time族群函数和CTime类,学习MFC封装类的产生过程。基于以上的程序对比可知,C++封装的过程是精心设计而成的,封装的结果会给使用者带来方便。
有C++语言基础的读者都很清楚,面向对象的程序设计中有四大特征:抽象、封装、继承和多态。在C++程序设计中经常封装一个类,让调用者更容易使用。C++封装过程,如同给计算机主机加上机箱,而封装类中的成员函数可以比喻为电源和重启按钮。就如同一台计算机没有机箱,专业人员也能在主板上直接开机和关机;但是普通人还是需要有机箱的计算机主机,机箱上的开关按钮很方便开关计算机。本节通过对比C语言time族群函数和CTime类,学习MFC封装类的产生过程。C语言主要时间函数见表3-2。
表3-2 C语言主要时间函数
1)在MSDN索引中,分别输入表3-2中的函数名称再按<Enter>键,如图3-8所示。
2)打开本章第1节建立的tm工程,在主对话框中添加一个按钮测试C语言时间函数,如图3-9所示。
图3-8 查看MSDN函数说明
图3-9 编辑主对话框资源
3)双击“测试time”按钮,创建与按钮关联的成员函数OnTest2,如图3-10所示。
图3-10 添加按钮关联函数
4)修改OnTest2函数代码,使用time族来显示当前时间。
5)编译并运行,测试以上代码,如图3-11所示。
对比C语言模式和CTime封装类对时间的调用,使用CTime类更加方便而且一目了然,未封装前的C语言函数对时间的操作较为混乱。例如,要在某些地方加1900或者加1这样的数字,原因就在tm结构体的定义上。(www.chuimin.cn)
6)选中tm,单击鼠标右键,选择“Go To Definition Of tm”命令,或者按<F12>键,如图3-12所示。
图3-11 查看运行结果
图3-12 查看时间结构体的定义
7)tm结构体的定义如下。
8)了解封装过程。在GetCurrentTime行设置一个断点,按<F5>键以调试模式运行程序。运行到达断点处后按<F11>键,进入该函数查看MFC的源代码,如图3-13所示。
图3-13 查看CTime类成员函数源代码
注意:只有设置为“Statically Linked”静态链接的工程,才能查看到MFC的源代码。
9)原来CTime的类成员函数,全部都是调用了C语言的time族函数。
基于以上的程序对比可知,C++封装的过程是精心设计而成的,封装的结果会给使用者带来方便。
相关推荐