麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

利用VFI提高Delphi程序的重用性

2019-11-18 18:00:41
字體:
供稿:網(wǎng)友
 

利用VFI提高Delphi程序的重用性

摘要:程序重用性是軟件質(zhì)量的重要指標(biāo)之一,提高重用性對于減少程序潛在缺陷,提高程序開發(fā)效率,降低維護成本具有重要的影響。本文針對Delphi所提供的VFI,給出了具體應(yīng)用VFI來提高程序重用性的實例。該實例表明,使用VFI可以極大地簡化程序代碼,并保持界面的一致性,提高程序開發(fā)效率。
關(guān)鍵詞:重用性、Delphi、VFI

1 引言
       軟件重用(Software Reuse)已經(jīng)深入人心,早在1968年的NATO軟件工程會議上就已經(jīng)提出可復(fù)用庫的思想。軟件重用,又稱軟件復(fù)用或軟件再用,它的定義也很多,比較權(quán)威和通用的一種是:軟件重用是利用事先建立好的軟件部產(chǎn)品創(chuàng)建新軟件系統(tǒng)的過程。這個定義蘊含著軟件重用所必須包含的兩個方面:
       1.系統(tǒng)地開發(fā)可重用的軟件部產(chǎn)品。這些軟部品可以是代碼,但不應(yīng)該僅僅局限在代碼,還可以是分析,設(shè)計,測試數(shù)據(jù),原型,計劃,文檔,模板,框架等等。
       2.系統(tǒng)地使用這些軟部品作為構(gòu)筑模塊,來建立新的系統(tǒng)。
軟件重用可以帶來很多好處,如提高軟件生成率,縮短開發(fā)周期,降低軟件開發(fā)和維護費用,生產(chǎn)更加標(biāo)準(zhǔn)化的軟件,提高軟件開發(fā)質(zhì)量,增強軟件系統(tǒng)的互操作性等。
       在面向?qū)ο蠹夹g(shù)成為當(dāng)今軟件開發(fā)的主流技術(shù)的今天,軟件復(fù)用更是提高到了一個重要的位置。復(fù)用性是面向?qū)ο蟮囊粋€目標(biāo),同時,從另一方面來說,面向?qū)ο蠹夹g(shù)為軟件復(fù)用提供了更好的手段。它將軟件復(fù)用的層次從常見的源代碼復(fù)用、庫函數(shù)復(fù)用等較為低層次的復(fù)用提高到類的復(fù)用,構(gòu)件的復(fù)用,以至于是架構(gòu)、框架的復(fù)用。

2 Delphi中的VFI
          Delphi作為一種支持面向?qū)ο蟮拈_發(fā)工具,采用Object Pascal作為其語言,并提供了可視化的開發(fā)環(huán)境,極大地提高了軟件開發(fā)的效率。
        與常見的RAD工具(如Visual Basic、C++ Builder和Power Builder等)相同,Delphi提供了窗體設(shè)計器。而Delphi的窗體設(shè)計器的與眾不同之處在于,Delphi是建立在一個真正面向?qū)ο蟮目蚣芙Y(jié)構(gòu)基礎(chǔ)之上的,對基類所做的改變都將會傳遞給所有的派生類,它所采用的關(guān)鍵技術(shù)就是VFI(Visual Form Inheritance),即可視化窗體繼承。VFI技術(shù)使開發(fā)人員能夠動態(tài)地繼承當(dāng)前項目或?qū)ο髱熘械娜魏纹渌绑w,一旦基窗體發(fā)生改變,派生的窗體會立即更新。
        窗體繼承早在Delphi 5中就成為一個內(nèi)置功能。要基于一個已有的窗體創(chuàng)建一個新的窗體,只要使用File | New菜單命令,Delphi將打開New Items對話框。這個對話框列出了對象庫中的所有對象。翻到Forms頁,這里列出了所有已經(jīng)加到對象庫中的窗體;也可以選擇PRoject頁,來選擇一個本項目中已有的窗體。
        有三個選項用于把窗體加到項目中:Copy、Inherit和Use。如果選擇Copy,則意味著把所選窗體的副本加到當(dāng)前項目中。如果對象庫中的窗體發(fā)生變化,不會影響到當(dāng)前項目中的副本。如果選擇Inherit,則意味著從所選窗體派生出一個新的窗體加到當(dāng)前項目中。如果對象庫中的窗體發(fā)生變化,則派生的窗體也會跟著變化。如果選擇Use,則意味著所選的窗體直接加到當(dāng)前項目中,就好像這個窗體是當(dāng)前項目創(chuàng)建的一樣。以Inherit方式使用窗體即采用了可視化繼承——VFI。


3 應(yīng)用實例
        下面以一個實例對VFI的應(yīng)用進行說明。在一MIS中,需要對多個數(shù)據(jù)庫中的表格進行統(tǒng)計,為了獲得較好的顯示效果,采用了dxDBGrid控件作為顯示數(shù)據(jù)結(jié)果的主要控件,并使其在統(tǒng)計界面中記住每次退出時的字段的位置,字段列標(biāo)題的寬度等信息,因此,對每一個統(tǒng)計界面都提供一個窗體來實現(xiàn)。
        為實現(xiàn)此要求,通常的做法是對每一個統(tǒng)計窗體進行如下設(shè)置:(為方便說明,下面各個組件的名稱均采用了默認的名稱)
        1.新建窗體(為每一個統(tǒng)計界面提供一個窗體類);
        2.放置需要的組件(放置dxDBGrid、wwDBNavigator、OpenDialog等組件);
        3.設(shè)置組件屬性(調(diào)整各個字段的可見性、顯示寬度等);這些工作又可以細分為兩類:
           3.1:對所有窗體中的組件的一樣的設(shè)置,如DataSource1的DataSet屬性,dxDBGrid1與wwDBNavigator1、wwFilterDialog1的DataSource屬性等;
           3.2:各個窗體中設(shè)置不同的工作,典型的操作是設(shè)置DataSet1的數(shù)據(jù)來源,dxDBGrid1中Column的屬性。
        4.設(shè)置窗體及其他組件的事件屬性(如在窗體打開事件中打開數(shù)據(jù)集,在窗體關(guān)閉事件中關(guān)閉數(shù)據(jù)集,在導(dǎo)出事件中完成dxDBGrid數(shù)據(jù)的導(dǎo)出)。
窗體中主要的組件如下圖所示:

[發(fā)表時發(fā)現(xiàn),沒有該圖也可以,所以省略了]

        在這一過程中,有些工作是要求不同的,比如工作1、工作3;但有些工作是重復(fù)性的,工作2、工作4,在這種情況下,多個統(tǒng)計窗體之間,會出現(xiàn)很多代碼的剪切、拷貝工作,既容易出現(xiàn)錯誤,在以后需要修改程序的時候,又不容易進行完全的、徹底的修改。比如,實現(xiàn)導(dǎo)出dxDBGrid1中數(shù)據(jù)的代碼,就會可能出現(xiàn)在多個窗體中。雖然將導(dǎo)出數(shù)據(jù)的功能封裝成函數(shù)可以在一定程度上,在各個統(tǒng)計窗體中進行調(diào)用的方法,可以減少這類重復(fù)性代碼。但是對于組件屬性的設(shè)置,及大部分事件的判斷,如PopupMenu彈出事件中對是否進行“導(dǎo)出選定數(shù)據(jù)”可用性的判斷,則必須要在每個窗體中出現(xiàn)。(雖然,可以在程序中設(shè)置一個通用的OnPopup事件處理,但是需要保證“導(dǎo)出選定數(shù)據(jù)”的菜單項具有相同的名字,或者在程序中進行判斷,仍然少不了重復(fù)的工作,并且也容易出錯,或者忘記設(shè)置菜單項的屬性)。
        而如果采用VFI,這些重復(fù)性的工作都可以解決。可以為這些統(tǒng)計設(shè)置一個父窗體(類名稱為TFormBaseTongji),窗體如下所示:

[發(fā)表時發(fā)現(xiàn),沒有該圖也可以,所以省略了]        

         所有的重復(fù)性的工作,如工作2、工作3.1,工作4都在父窗體中完成。如OnFormShow中設(shè)置代碼:AdoDataSet1.Open;。
        之后,各個具體的子窗體從該窗體繼承而來,在子窗體中進行的設(shè)置只需要工作3.2。這樣所進行的操作,將極大地減少工作量。不僅如此,使用VFI,還可以保持各個窗體之間的一致性,使之具有相似的外觀,從而保證軟件界面的一致性。由于重復(fù)工作的消除,也給軟件維護帶來了很大的好處,比如,如果要再增加一個公用功能,或者調(diào)整界面的細節(jié),都可以在父窗體類中實現(xiàn),子窗體中不再做任何工作;同時,VFI還允許子窗體,增加自己的功能,改變父窗體中的行為(即實現(xiàn)多態(tài))。可以說,VFI為可視化開發(fā)提供了一個強有力的支持。


4 結(jié)束語
         在重用性顯得日益重要的今天,VFI為進行可視化的面向?qū)ο蟮拈_發(fā)提供了可能,有效地使用VFI,可以極大地改進程序重用性,改善程序的一致性,降低維護的成本。


上一篇:后臺調(diào)用外部程序的完美實現(xiàn)(Delphi)

下一篇:DELPHI加注冊表自啟動的最簡單代碼

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 日本a在线观看 | 欧美成人一级片 | 国产免费一区二区三区 | 久久在草| 嗯~啊~用力~高h | 免费看污视频在线观看 | 日本免费不卡一区二区 | 日本羞羞的午夜电视剧 | 久久久久久久久91 | 国产91精品久久久久久 | 久久国产精品久久久久久 | 国产欧美亚洲精品 | 一级网站 | 久久96国产精品久久久 | av国产在线被下药迷网站 | 午夜久久久精品一区二区三区 | 中文字幕一区在线观看视频 | 蜜桃成品人免费视频 | 久久亚洲成人 | 午夜视频在线免费观看 | 欧美囗交| 午夜在线视频一区二区三区 | 九九精品久久 | 羞羞视频免费网站含羞草 | 欧美精品亚洲人成在线观看 | 91精品视频在线看 | 黄片毛片一级 | 久久av免费| 国产一级二级在线播放 | 色视频一区二区 | 末成年女av片一区二区 | 国产午夜免费视频 | 高清一区二区在线观看 | 久久男人天堂 | 免费a级网站 | 深夜免费视频 | 国产精品久久久久久久久粉嫩 | 精品久久久久久久久久久久包黑料 | 亚洲成人高清在线观看 | 欧美日韩亚洲成人 | 欧洲精品色 |