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

首頁 > 編程 > Delphi > 正文

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

2019-11-18 18:00:29
字體:
來源:轉載
供稿:網友
 

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

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

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

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


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

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

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

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

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


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



上一篇:模擬進程調度(delphi寫的)

下一篇:DELPHI基礎開發(fā)技巧

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

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 曰批全过程120分钟免费69 | 欧美成人高清视频 | 一分钟免费观看完整版电影 | 黄色av网站在线观看 | 蜜桃视频观看麻豆 | 午夜在线视频一区二区三区 | 欧美自拍 | av在线播放观看 | 娇喘视频在线观看 | 一本色道久久综合亚洲精品图片 | 亚洲第一页在线观看 | 国产精品视频一区二区三区四区五区 | 四虎久草 | 黄色片在线播放 | 一级黄色影院 | 日本成人一区 | 国产精品二区高清在线 | 欧美精品久久天天躁 | 91成人免费电影 | 综合日韩欧美 | 超级av在线 | 神马福利电影 | 欧美成年性h版影视中文字幕 | 91午夜理伦私人影院 | 欧美日韩亚洲精品一区二区三区 | 成人一级视频在线观看 | 法国性xxx精品hd | 国产麻豆交换夫妇 | 中文字幕观看 | www.狠狠操.com | av不卡免费在线观看 | 西川av在线一区二区三区 | 91av在线影院 | 久久99国产精品免费网站 | 粉嫩粉嫩一区二区三区在线播放 | 又黄又爽免费无遮挡在线观看 | jj视频在线播放 | 国产亚洲高清在线精品不卡 | 蜜桃麻豆视频 | 亚洲一区国产二区 | 黄色小视频在线免费看 |