huankfy

明月出天山,苍茫云海间

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
    "先对问题进行整体分析规划,确定其做什么,再决定其如何做",当你看到这样的理论的时候,你可能会说这理论太老套了,我早就知道,oo思想。回过头想想以前做的项目,有多少项目你真正按照这种指导思想在做。
    在<<Data Structures and Program Design In C++>>开篇介绍了程序设计原理,通过life游戏设计,逐一点明oo思想理念。逐层分析,使得问题逐渐明朗。文笔笨拙,无法言明,有兴趣的话可以看看它的讲述,的确很有意思。
    正好手边有个C#对word操作的例子(本例需要word的com组件的支持),抛出一己之见。
    对word的操作,我们自然会想到word头处理、word中正文内容的处理、word尾部的处理。有什么问题?我们的跨幅太大了。按照oo思想,创建一个word对象,然后初始化、生成word。
1WordObj doc;
2doc.initialize();
3doc.process();
    那么WordObj是什么样的呢?
WordObj code
    initialize()该做什么。word需要文件名,需要生成后的存储路径。可能想自己提供一个模板。那么就该对它重构一下:

    
Initialize
    初始化完成。再看看process()的处理过程。
   
ProcessToWord Code

    对word头、word正文内容、word尾部的处理,放在一起使得程序阅读起来不方便,同时也违背了oo思想。增加三个方法:

   
Code
    好像还少点什么?还缺少数据源,程序当然是为了简化我们的操作,没有数据源就显得无意义了:)。 本例中取得数据源为:
DataTable dt=this.GetData();
   在对正文内容处理中,我们可能会插入其它元素,比如表、图片或者其它对象。在此只给出对插入表格的操作.
Code

Code
   有了table,还要对其设定成想要的格式,这样看起来才美观
Code
    在setParagraphContent()中,因是从数据库取的数据,增加了一个数据格式的处理,处理出现null的列。
StringFormat code
   在对word的处理中,人为的增添了限制:word模板和word com组件。这些限制使得程序并不很完善,进一步就需要一一摘除这些限制。由于能力有限,去除word com组件还有困难。
   通过对word操作,加固自己对这一程序设计理念的印象,努力改变以前"搭棚式程序设计"。

posted on 2007-12-20 16:50  Yanbo.Hu  阅读(1519)  评论(0编辑  收藏  举报