前例程式中虽然有一些C 的成分,但程式的设计思想还是面向过程的。本例将采用面向对象的思想对其进行改进。对象是C 中很重要的成分。面向对象的编程往往能够使程式设计更直观,更简捷。

  设计

  首先,定义一个CComputer对象数组,每个对象代表一台电脑。CComputer是用户自定义的类,其属性包括操作系统类型和所染病毒的传染概率(用0 到9 范围内的整数表示,0 代表无病毒),成员函数Contact()则用于模拟和其他电脑的交互。当一台染毒电脑和另一台电脑未染毒电脑进行交互时,病毒将扩散。为了方便,能够产生一个0到9范围内的随机数,当此随机数小于染毒电脑的传染概率时,就认为病毒扩散了。其次,在主函数中产生两个小于N 的互不相等的随机数,来确定一次交互中的两台电脑。

  编写程式文档


  创建工程的操作和前例相同。这里将工程命名为virus_os。除了向导程式自动生成的那个含有主函数的文档virus_os.cpp 外,还应该增加两个新文档,即ccomputer.h和ccomputer.cpp,前者是含有CComputer类声明的头文档,后者含有 CComputer类的实现方法。执行菜单操作【File】→【New】即可增加新文档。注意在对话框中输入正确的文档名和文档类型,并且“Add to project”复选框应该勾选上。本例的源程式见linuxv-virus_os-0.0.1.tar.gz中的/src

  编译

  程式写好后,依前例进行生成源码结构、配置、编译等操作即可。这个工程包括三个文档。执行菜单操作【Build】→【Compile File】只是对当前的文档进行编译。这为分别排除每个文档的语法错误提供了方便。

  其他

  编译成功后,即可依前例进行“生成可执行文档、调试、发布可执行文档、发布源程式”等操作,就不再赘述了。本例的可执行文档virus_os。


改进程式

  假如得到了某个用KDevelop研发的软件的全套工程文档,能够很容易地对其进行升级,然后发布新的版本。下面举例说明。取得linuxv- virus_os-0.0.1.tar.gz后,解压缩形成一个目录,virus_os-0.0.1的全套工程文档就保存在其中。启动KDevelop,然后执行【Project】→【Open Project】,找到virus_os.kdevelop并打开他,相应的工程也就打开了。调试成功后,能够按前面提到的方法发布修改后的软件即可。在发布前应修改版本号。修改方法是,执行菜单操作【Project】→【Project Options】,在随后出现的工程属性窗口中进行修改即可。

使用已有的源文档

  前例的程式更有改进的余地:在CComputer类的基础上创建一个病毒扩散类CViruSpread 来模拟病毒扩散。当需要模拟不同电脑数量、不同操作系统布置比例连同不同病毒扩散概率条件下的病毒扩散情况时,就能够通过创建相应的对象来进行了。

  新建工程virusimulator,创建CViruSpread 的文档cviruspread.h 和cviruspread.cpp。这里需要把ccomputer.h 和ccomputer.cpp 两个文档添加到本工程中来。操作方法:在KDevelop 主窗口的右侧有一个Automake Manager标签。点击该标签,就能够看到本工程源文档所在的文档夹连同各文档。在列有文档的那个窗口上方有工具条,其中就是用来添加文档的。添加文档有两种方式,一种是链接(link)方式,另一种是复制(copy)方式。

  本例的源程式见linuxv-virusimulator-0.0.1.tar.gz中的/src,可执行文档见virusimulator。