




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章
基于復用的軟件構造第9章基于復用的軟件構造首先學習軟件復用的基本概念、分類及開發方式。然后學習三種復用:程序庫、設計模式和框架。通過具體的編程實現學習三種設計模式;通過分析Junit學習框架與應用;通過兩個開源軟件API、對案例實現基于程序庫的復用開發。最后,簡介開發案例其他形態軟件的相關框架。2016秋數據科學與軟件工程學院2第9章基于復用的軟件構造故事10(1)把習題轉成word格式輸出,以便他用;(2)用柱狀圖、餅圖等顯示一個人練習多套習題的結果,便于分析;(3)讓用戶通過瀏覽器得到習題,在線練習后提交,等待習題返回評分結果;(4)編寫可以直接在手機上練習口算的程序。一是在現有程序基礎上增添的功能;二需要重新開發軟件,更準確地說是更換開發平臺、更換軟件架構。2016秋數據科學與軟件工程學院3第9章基于復用的軟件構造9.1軟件復用9.2設計模式9.3框架9.4案例分析與實踐9.5討論與提高9.6思考與練習題2016秋數據科學與軟件工程學院49.1軟件復用軟件復用,是指在兩次或多次不同的軟件開發過程中重復使用相同或相近的軟件或軟件模塊的過程。該軟件可以是已經存在的軟件,也可以是專門的可復用軟件,簡稱(軟)構件。軟件復用是在軟件開發中避免重復勞動的解決方案,使得應用系統的開發不再采用一切“從零開始”的模式,而是在已有工作基礎上,充分利用過去應用系統開發中積累的知識和經驗,從而將開發的重點集中于應用的特有構成成分上。2016秋數據科學與軟件工程學院59.1軟件復用軟件復用具有如下優點。(1)提高生產率。(2)減少維護代價。(3)提高互操作性。(4)支持快速原型。2016秋數據科學與軟件工程學院69.1軟件復用軟件復用也面臨挑戰,主要如下。軟構件與應用系統之間的差異。軟構件要達到一定的數量,才能支持有效的復用,而建立軟構件庫要有很高的投入和長期的積累。難以發現合適的軟構件?;趶陀玫能浖_發方法和軟件過程是一個新的研究實踐領域,需要一些新的理論、技術及支持環境,目前這方面的研究成果和實踐經驗都不夠充分。2016秋數據科學與軟件工程學院79.1軟件復用依據復用的對象,軟件復用分為兩種。產品復用。指復用已有的軟構件,通過構件集成(組裝)得到新系統。產品復用是目前復用的主流途徑。過程復用。指復用已有的軟件開發過程,使用可復用的應用生成器來自動或半自動地生成所需系統。過程復用依賴于軟件自動化技術的發展。2016秋數據科學與軟件工程學院89.1軟件復用9.1.1軟件產品復用9.1.2基于復用的軟件開發9.1.3程序庫2016秋數據科學與軟件工程學院99.1.1軟件產品復用軟件產品的復用包括代碼、設計、測試數據和需求規格等。代碼復用是最基本、最普通的軟件復用形式,包括可執行代碼和源代碼??蓤绦写a和源代碼稱為軟構件或構件。人們把一些相關的可復用的程序編譯、打包、壓縮在一個程序庫,方便使用。2016秋數據科學與軟件工程學院109.1.1軟件產品復用設計文件是設計決策的通用表示,其本質是捕獲的設計/解決問題的知識。與代碼不同,設計不可執行。與需求規格不同,設計捕獲結構信息而非功能信息。設計表示成用不同方式產生具體設計的模式。不像函數或模塊,設計不能用其功能特性檢索,而是通過設計解決的一組問題的特性來檢索。2016秋數據科學與軟件工程學院119.1.1軟件產品復用設計復用有三種基本途徑:第一種途徑是從現有系統的設計結果中提取一些可以復用的設計構件,并把它們直接應用到新系統的設計中;第二種途徑是把一個現有系統的全部或部分設計結果用新的語言或在新的平臺上重新實現;第三種途徑是綜合現有系統,或者根據需求重新開發一些專門用于復用的設計構件。2016秋數據科學與軟件工程學院129.1.1軟件產品復用設計構件分為構件級和架構級。軟件體系結構定義了作為一組執行數據的構件聚合體的軟件系統的結構。構成體系結構的結構元素比程序設計語言的結構元素更加抽象,具有不同的性質。它們規定了信息流、控制流或構件之間的通信協議。體系結構用特殊符號表示,用體系結構特征檢索??蓮陀玫能浖w系結構通常是顯式地復用軟件體系結構,并通過集成其他軟件體系結構,建立新的更高層次的體系結構。最常用的可復用設計是設計模式和架構模式。2016秋數據科學與軟件工程學院139.1.1軟件產品復用測試數據和測試代碼是典型的可復用件。測試數據的表示直截了當,檢索測試數據的方式可以是軟件系統輸入域的描述,也可以是該系統功能的某個通用特征。測試代碼的表示和檢索同普通的邏輯代碼一樣。2016秋數據科學與軟件工程學院149.1.1軟件產品復用需求規格是提取用戶需求、用某種符號記錄用戶需求的結果。規格書可以用自然語言表示,也可以用形式化符號(一階邏輯、公理系統、形式化語言)或混合式。規格書可以通過它們俘獲的功能特性檢索,也可以復用在構建復合規格書。2016秋數據科學與軟件工程學院159.1.1軟件產品復用可復用件必須組織成復用庫,以便方便地使用。要有效地使用復用庫,必須清楚地理解庫的內容,這樣才能決定庫能否滿足需求。庫的內容有不同的組織和定義方式,可以分為三種類型。(1)通用構件。(2)特殊領域構件。(3)特殊應用代碼。2016秋數據科學與軟件工程學院169.1.2基于復用的軟件開發軟件復用必須解決三個基本問題:(1)必須有可復用的對象;(2)所復用的對象必須是有用的;(3)復用者要知道如何使用被復用的對象。2016秋數據科學與軟件工程學院179.1.2基于復用的軟件開發基于復用的軟件開發改變了傳統的軟件開發過程和技術,它包括兩個相關的過程:(1)可復用軟構件的開發(DevelopmentforReuse)或面向復用的軟件開發,是產生軟件資產的過程,稱為領域工程;(2)基于軟構件的應用系統構造(集成和組裝)(DevelopmentwithReuse)或基于復用的軟件開發,是使用軟件資產生產新系統的過程,也稱為應用工程。領域工程是應用工程的基礎,它的目標是建立可復用的軟構件庫。2016秋數據科學與軟件工程學院189.1.2基于復用的軟件開發基于復用的軟件開發,首要任務是把用戶需求轉換成系統規格,特別是要按照可復用構件修改系統規格。系統設計的核心是軟件體系結構。設計要依據已有的構件,在系統規格、應用架構和可獲得的構件之間做出妥協和平衡。其中關鍵的一步是根據系統規格、軟件架構和系統設計,查找可復用的軟構件。最后,把可復用構件及開發的軟件部分,按照軟件架構組裝起來。最常見的方式是使用集成語言(如腳本語言Python、Unixshell、TCL/TK)把構件“粘合”起來或粘合到框架上,最終得到應有軟件。2016秋數據科學與軟件工程學院199.1.2基于復用的軟件開發基于復用的軟件開發面臨一系列挑戰:(1)確認復用任務及其完成這些任務的技術;(2)提供方法學和工具支持完成任務;(3)把復用任務集成到一個軟件開發的工作流程。2016秋數據科學與軟件工程學院209.1.2基于復用的軟件開發復用任務可能是用高級語言(領域語言)說明待開發應用的規格,盡可能地復用已有的構件合成滿足一組需求的應用系統。對于目標系統的任何部分,開發者必須:(1)以支持獲取可能的、有用的可復用件的方式表達這一部分的需求;(2)理解獲取的軟構件;(3)如果得到的軟構件足夠接近需求,并且具有達到足夠的質量,就可以采用它。2016秋數據科學與軟件工程學院219.1.2基于復用的軟件開發在復用過程,理解軟構件和程序是一項重要的腦力工作和成本因素。軟構件理解意味著三個因素:(1)理解它的功能;(2)理解它的工作方式;(3)理解如何修改它使其以一點不同的方式完成。2016秋數據科學與軟件工程學院229.1.3程序庫程序庫是軟件復用最基本、最普通形式。程序庫是一些經常使用、經過檢驗的規范化程序或子程序的集合。程序庫中的程序是經常使用的功能。程序庫通常是編譯后的二進制可執行碼或虛擬機可執行碼,把它們放到目錄中,設置環境變量,在程序中引入后就可以如同普通函數、對象、類等一樣編程使用。2016秋數據科學與軟件工程學院239.1.3程序庫過程式語言(如C)的程序庫主要是各種函數。面向對象語言的程序庫統稱為類庫,實質是一個綜合性的面向對象的可重用類型集合,包括接口、抽象類和具體類。程序庫可以是語言系統內置的,也可以是第三發獨立開發的。2016秋數據科學與軟件工程學院249.1.3程序庫不同語言打包和引用庫的形式略有不同。在程序中引用庫的關鍵字有include、using、import、with等。除了可以引用相同語言的庫外,現在的編程語言也允許引入其他語言的庫,最常見的是C語言的庫。使用第三方開發的程序庫與使用系統的程序庫,本質上沒有區別。通常是理解API設計、查閱API使用方式、學習示范代碼及不斷練習實踐。2016秋數據科學與軟件工程學院259.1.3程序庫程序庫不同于軟件包。軟件包是指具有特定功能,用來完成特定任務的一個或一組程序。軟件包由一個基本配置和若干可選部件構成,可以是源代碼或目標碼形式。軟件包本質上就是一個可以運行的軟件,可以打包、壓縮,便于發布。經過安裝、配置,就可以使用軟件包提供的功能和服務。一般而言,軟件包不作為可復用件而在軟件開發中使用、不能集成到開發的軟件中。2016秋數據科學與軟件工程學院269.2設計模式9.2.1基本概念9.2.2基本設計模式目錄9.2.3設計模式舉例2016秋數據科學與軟件工程學院279.2.1基本概念設計模式(DesignPattern)是對給定環境下反復出現問題的一個通用的、可復用的解決方案。它是可以在很多不同場合用以解決問題的一種描述或樣板。模式是程序員在設計一個軟件或系統時解決共同問題最佳實踐的正式描述。面向對象的設計模式表示類或對象之間的關系與交互,沒有說明涉及的最終應用軟件的類或對象。一個設計模式不是一個可以直接轉換成代碼的完成的設計。2016秋數據科學與軟件工程學院289.2.1基本概念設計模式涉及的抽象和應用的范圍很廣。體系結構模式描述了很多可以用結構化方法解決的設計問題。數據模式描述了重現的面向數據的問題及用來解決這些問題的數據建模解決方案。構件模式,即設計模式,涉及與開發子系統和構件相關的問題、它們之間相互通信的方式及它們在一個較大的體系結構中的位置。界面設計模式描述公共用戶界面問題及具有影響因素(包括最終用戶的具體特征)的解決方案。2016秋數據科學與軟件工程學院299.2.1基本概念設計模式有如下優勢:設計模式在軟件開發中提供了一種公共的詞匯和理解;設計模式是軟件設計建立文檔的一種手段;設計模式通過支持軟件的功能屬性和質量屬性來構造軟件;設計模式有助于建立一個復雜的和異構的軟件結構;設計模式有助于管理軟件的復雜度。2016秋數據科學與軟件工程學院309.2.2基本設計模式目錄基本的設計模式分為創建型模式、結構型模式和行為型模式三種。2016秋數據科學與軟件工程學院319.2.3設計模式舉例一個模式描述了一個問題,使用戶能夠理解問題所處的環境,并列出了影響因素,用來表明在環境中如何解釋這個問題,以及如何應用解決方案。描述設計模式的方式不完全一樣,基本內容包括模式名稱、解決的問題、設計元素及其之間的交互(通常用UML的類圖描述類及其關系,用時序圖描述交互關系)、應用場景、特點分析、實際例子等。2016秋數據科學與軟件工程學院329.2.3設計模式舉例1.工廠方法模式問題描述:在一個圖形編輯器中,可以繪制直線line、矩形square、圓circle等各種圖形shape。不同的圖形的繪制draw是不同的,但是畫筆對所有圖形都統一使用draw。以后可能會修改某個具體圖形的繪制方式(編碼實現),也可能還要增添不同的圖形。為了便于軟件的維護和擴展,如何設計?2016秋數據科學與軟件工程學院339.2.3設計模式舉例解決方案:定義一個用于創建對象的接口或抽象類,讓子類根據條件或參數決定實例化哪一個類或調用哪一個方法。工廠方法模式使一個類的實例化延遲到其子類。2016秋數據科學與軟件工程學院349.2.3設計模式舉例工廠方法模式結構:工廠(Factory)是工廠方法模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。抽象產品(Product)是所創建的所有對象的父類,它負責描述所有實例共有的公共接口。具體產品(ConcreteProduct)是工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。2016秋數據科學與軟件工程學院359.2.3設計模式舉例2016秋數據科學與軟件工程學院369.2.3設計模式舉例工廠方法模式的核心思想是:有一個專門的類來負責創建實例的過程。它把產品視為一系列的類的集合,這些類是由某個抽象類或接口派生出來的一個對象樹。而工廠類用來產生一個合適的對象來滿足客戶的要求。如果工廠方法模式所涉及的具體產品之間沒有共同的邏輯,就可以使用接口來扮演抽象產品的角色;如果具體產品之間有共同的邏輯,就必須把這些共同的東西提取出來,放在一個抽象類中,然后讓具體產品繼承抽象類。2016秋數據科學與軟件工程學院379.2.3設計模式舉例為實現更好復用的目的,共同的東西總是應該抽象出來的。實現時,工廠方法模式可以參數化;返回對象可以是抽象對象,也可以是具體對象;遵循命名規則有助于開發者識別代碼結構。2016秋數據科學與軟件工程學院389.2.3設計模式舉例使用工廠方法模式的場合及益處是:平行連接類的層次結構;一個類想讓其子類說明對象;一個類不預計子類,但必須創建子類;一簇對象需要用不同的接口分隔開;代碼要處理接口而不是實現的類;連接子類的方式比直接創建對象更加靈活;對客戶隱藏具體的類。2016秋數據科學與軟件工程學院399.2.3設計模式舉例JDBC是工廠方法模式的一個很好的例子。數據庫應用程序不需要知道它將使用哪種數據庫,所以它也不知道應該使用什么具體的數據庫驅動類。相反,它使用工廠方法來獲取連接、語句和其他對象,這使得改變后臺數據庫變得非常靈活,同時并不會改變應用的數據模型。2016秋數據科學與軟件工程學院409.2.3設計模式舉例在JDK中使用工廠方法設計模式的例子:valueOf()方法會返回工廠創建的對象,這等同于參數傳遞的值;getInstance()方法會使用單例模式創建類的實例;java.lang.Class中的方法newInstance()從每次調用工廠方法時創建和返回新實例;java.lang.Object中的方法toString();java.lang.Class中的方法forName()。2016秋數據科學與軟件工程學院419.2.3設計模式舉例2.適配器模式問題描述:正在運行的程序使用L型號的打印機print文件,現在又購置了H型號的打印機,但是它提供了不同的打印函數disply()。如果不想改變當前程序的編碼,想使用新的類、但又不能改變它,如何設計?這個問題的核心是,如何使用既有類的操作,但是它的接口不符合要求。2016秋數據科學與軟件工程學院429.2.3設計模式舉例解決方案:為接口不符合要求的類創建一個適配器類,使其提供的接口滿足使用要求,如圖9.2所示。2016秋數據科學與軟件工程學院439.2.3設計模式舉例適配器模式適用如下場合:想使用一個已經存在的類,而它的接口不符合目前的需求。想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(那些接口可能不一定兼容的類)協同工作。(僅適用于對象Adapter)想使用一些已經存在的子類,但是不可能對每個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口。2016秋數據科學與軟件工程學院449.2.3設計模式舉例3.命令模式2016秋數據科學與軟件工程學院459.2.3設計模式舉例4.基于模式的設計2016秋數據科學與軟件工程學院469.2.3設計模式舉例為了使設計者使用模式來思考,可以考慮下面的方法:(1)保證理解全局——將要建立的軟件所處的環境。需求模型表達了這一點。(2)檢查全局,提取此抽象層上表示的模式。(3)從“全局”模式開始設計,為將來的設計工作建立環境或架構。(4)在更低抽象層尋找有助設計方案的模式。(5)重復(1)到(4),直到完成完整的設計。(6)通過使每個模式適應將要建立的軟件細節對設計進行優化。2016秋數據科學與軟件工程學院479.3框架9.3.1基本概念9.3.2框架和設計模式9.3.3框架開發9.3.4軟件測試框架JUnit2016秋數據科學與軟件工程學院489.3.1基本概念框架是整個或部分系統的可復用設計,表現為一組抽象構件及構件實例間交互的方法??蚣苁强杀粦瞄_發者定制的應用骨架。可以說,一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類及其實例之間協作的方法,它為構件復用提供了上下文關系。2016秋數據科學與軟件工程學院499.3.1基本概念框架方法是構件技術、軟件體系結構和應用軟件開發三者發展結合的產物??蚣芡ǔR詷嫾斓男问匠霈F,但構件庫只是框架的一個重要部分,構件庫的大規模復用需要框架??蚣艿年P鍵在于框架內對象間的交互模式和控制流模式。在某種程度上,將構件和框架視為兩個不同但彼此協作的技術或許更好??蚣転闃嫾峁陀玫沫h境,為構件處理錯誤、交換數據及激活操作提供了標準的方法。2016秋數據科學與軟件工程學院509.3.1基本概念根據軟件的層次結構,軟件框架分為:基礎設施框架。對系統基礎功能的接近完整的實現,并留有擴展余地。中間件框架。對一些常用的中間件按需定制或按需擴展而成。例如,可以運行Web程序的Web服務器。應用框架。面向應用領域中應用系統的骨架,但它并不提供完整的應用軟件系統的全部。如Web應用框架Struts、Android應用框架。2016秋數據科學與軟件工程學院519.3.1基本概念根據應用范圍的不同,軟件框架分為:技術框架。致力于解決某一技術領域內的通用技術問題,并提供定制和擴展機制。技術框架又稱為水平框架。水平,強調的是通用性、使用范圍的廣泛性。例如,Hibernate就是解決面向對象與關系數據庫映射問題的技術框架;Junit是解決單元測試問題的技術框架。業務框架。在特定業務領域內通用的框架。業務框架又稱為垂直框架,垂直,就是強調專門化。例如,一個網絡管理軟件的垂直框架針對網絡管理這個專門領域提供了完善的功能。2016秋數據科學與軟件工程學院529.3.1基本概念框架在軟件開發中具有顯著的特點:應用領域內的軟件結構一致性好,便于建立更加開放的系統;復用代碼大大增加,軟件生產效率和質量也得到了提高;軟件設計人員要專注于對領域的了解,使需求分析更充分;存儲了經驗,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限于低層編程;2016秋數據科學與軟件工程學院539.3.1基本概念框架在軟件開發中具有顯著的特點:允許采用快速原型技術;有利于在一個項目內多人協同工作;大粒度的復用有助于降低開發和維護費用、加快開發速度、提高軟件生產效率、提高產品質量,而參數化框架使得適應性、靈活性增強。2016秋數據科學與軟件工程學院549.3.2框架和設計模式構件通常是代碼復用,而設計模式是設計復用,框架則介于兩者之間,部分代碼復用,部分設計復用,有時分析也可復用。在軟件生產中有三種級別的復用:內部復用,即在同一應用中能公共使用的抽象塊;代碼復用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的復用,即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的復用性。2016秋數據科學與軟件工程學院559.3.2框架和設計模式設計模式是對在某種環境中反復出現的問題及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也可以直接執行或復用,而對模式而言,只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用于各種應用??蚣苁擒浖?,而設計模式是軟件的知識。2016秋數據科學與軟件工程學院569.3.3框架開發面向對象系統獲得的最大的復用方式就是框架。一個大的應用系統可能由多層互相協作的框架組成。一個基于框架開發的應用系統包含一個或多個框架、與框架相關的構件類,以及與應用系統相關的功能擴展。與應用系統相關的擴展包括與應用系統相關的類和對象。應用系統可能僅僅復用了面向對象框架的一部分,或者,它可能需要對框架進行一些適應性修改,以滿足系統需求。2016秋數據科學與軟件工程學院579.3.3框架開發框架的開發從代碼、設計和分析三個層面復用了軟件。(1)復用代碼,因此從一已有構件庫中建立應用變得非常容易,因為構件都采用框架統一定義的接口,從而使構件間的通信簡單。(2)復用設計。它提供可復用的抽象算法及高層設計,并能將大系統分解成更小的構件,而且能描述構件間的內部接口。(3)復用分析。所有的人員若按照框架的思想來分析事務,那么就能將它劃分為同樣的構件,采用相似的解決方法,從而使采用同一框架的分析人員之間能進行溝通。2016秋數據科學與軟件工程學院589.3.3框架開發框架的復用周期如下:(1)用能夠與得到描述可復用件相匹配的術語說明需求;(2)搜索并獲取最相關的復用件;(3)評估它們的復用能力;(4)選擇最合適的候選復用件,改編它適合當前的需求;(5)把它集成到當前的應用系統。2016秋數據科學與軟件工程學院599.3.3框架開發復用框架的典型的做法是,根據功能的覆蓋度、平臺支持、文檔質量等評估幾個框架。所以,步驟(1)和(2)較為簡單,評估每個候選框架(步驟(3))會占用一段時間。評估包括閱讀文檔、決定框架是否合適,以及實際使用框架開發一個應用原型來檢測框架的各種屬性。2016秋數據科學與軟件工程學院609.3.3框架開發按照應用開發需要改編最適合的框架(步驟(4))意味著為每個框架的參與者找到實現,在框架提供的工具中選擇具體構件、選擇并改編應用特殊的類以便它們能適應在框架中的角色。這個步驟通常需要手工編程,也有運用工具產生程序。2016秋數據科學與軟件工程學院619.3.3框架開發最后,在框架環境下集成,實現有效地把應用構件插入框架結構的各種場景??蚣茈S著復用演化??蚣艿拿恳淮螐陀脤嵗紩龅揭恍┳R別改進之處的困難,以及能進一步參數化的方面,進一步抽象或分解的參照者等。2016秋數據科學與軟件工程學院629.3.4軟件測試框架JUnit2016秋數據科學與軟件工程學院639.4案例分析與實踐9.4.1生成Word格式的習題9.4.2口算習題練習得分的可視化展示9.4.3完整案例的軟件構造2016秋數據科學與軟件工程學院649.4.1生成Word格式的習題構造任務11:使用FreeMarker生成Word格式的習題。需求:給定50道100以內的加減法口算題,用Word格式輸出。分析:文字處理是一項非常復雜的系列操作,包括字體、字形、顏色等的選擇,行間距、段落等的設置,還要綜合考慮這些因素自動排版。2016秋數據科學與軟件工程學院659.4.1生成Word格式的習題從Office2003開始,可以將Office文檔轉成XML文件,這樣只要將需要填入的內容放上${}占位符,就可以使用像FreeMarker這樣的模板引擎將出現占位符的地方替換成真實數據,這種方式較之其他方案要更為簡單。2016秋數據科學與軟件工程學院669.4.1生成Word格式的習題1.理解FreeMarkerFreeMarker是一個用Java語言編寫的模板引擎,它基于模板來生成文本輸出。設計FreeMarker的主要目的是實際生成HTML的Web頁面,特別是為基于servlet的應用按照MVC模式(ModelViewController)生成HTML的Web頁面。2016秋數據科學與軟件工程學院679.4.1生成Word格式的習題2016秋數據科學與軟件工程學院689.4.1生成Word格式的習題使用FreeMarker輸出Word文件主要包含兩部分:制作模板和完成合并(模板+數據)產生實際輸出。制作模板的步驟:用MSWord制作要輸出的Word樣式,存為XML文件,將XML翻譯成FreeMarker模板。FreeMarker編程實現輸出模板的步驟:創建配置實例,創建數據模型,獲取模板,將模板與數據合并。2016秋數據科學與軟件工程學院699.4.1生成Word格式的習題2.制作模板(1)創建Word模板。(2)另存為XML格式、后綴更改為.ftl。(3)用能夠高亮顯示XML和元素自動配對等功能的工具打開*.ftl文件。2016秋數據科學與軟件工程學院709.4.1生成Word格式的習題模板基礎知識簡介如下。(1)模板的整體結構。直接輸出的文本;由${}或#{}來限定、計算值替換輸出;ftl標記:FreeMarker用指令編排模板,類似于HTML標記,要成雙成對出現,如列表<#list>…<#/list>。為與HTML標記區分,用#開始(有些以@開始);注釋:包含在<#--和-->限定,不產生輸出。2016秋數據科學與軟件工程學院719.4.1生成Word格式的習題(2)指令。三種ftl標記指令的格式:開始:<#directivenameparameters>;結束:</#directivename>;空內容指令:<#directivenameparameters/>。指令有系統預定義(#開始)和用戶定義(@替換#)兩種。FreeMarker忽略ftl標記中的空白字符。但<、</和指令之間不允許有空白字符。2016秋數據科學與軟件工程學院729.4.1生成Word格式的習題(3)取得變量的值。FreeMarker用實際值替換${variable}限定的變量variable。變量名只能是字母、數字、下畫線、$、@和#的組合,且不能以數字開頭??梢允褂?{…}或#{…}在文本部分插入表達式的值。2016秋數據科學與軟件工程學院739.4.1生成Word格式的習題FreeMarker模板中定義三種類型的變量:能在模板任何地方訪問的plain變量;局部變量;循環變量。局部變量隱藏同名的plain變量;循環變量隱藏同名的局部變量和plain變量。2016秋數據科學與軟件工程學院749.4.1生成Word格式的習題FreeMarker典型的數據模型是:(1)樹形結構,可以任意復雜和深層次;(2)類似于目錄的變量Hashes,保存下級變量的唯一的查詢名字;(3)類似于文件的變量scalars,保存單值,有兩種類型:字符串和數字;對scalars的訪問從root開始,各部分用“.”分隔,如animals.mouse.price,案例中的plain.data2。2016秋數據科學與軟件工程學院759.4.1生成Word格式的習題要修改的是表格,可以通過<w:tr>查找來定位。一對<w:tr></w:tr>代表一行,也就是5道算式題。然后要用一對<#list></#list>來將其包括,以便后續填充數據。首先,找到<w:tr></w:tr>,在它的前面加入<#listtableasplain>,表示一行;同時在表格結束配對</w:tr>后面加上list的結束配對</#list>。2016秋數據科學與軟件工程學院769.4.1生成Word格式的習題list指令是一個迭代輸出指令,用于迭代輸出數據模型中的集合。其中,squence是一個集合對象,對應Java中的list、數組等非鍵值對的集合。item是一個任意的變量名,是被迭代輸出的集合元素。2016秋數據科學與軟件工程學院779.4.1生成Word格式的習題然后,將from、to、data1、data2、data3、data4、data5改為plain變量${plain.from}、${plain.to}、${plain.data1}、${plain.data2}、${plain.data3}、${plain.data4}、${plain.data5}。2016秋數據科學與軟件工程學院789.4.1生成Word格式的習題3.合并模板產生輸出4.集成到交互界面2016秋數據科學與軟件工程學院799.4.2口算習題練習得分的可視化展示1.簡介JFreeChartJFreeChart是一組功能強大、靈活易用的Jav
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程制圖基礎 05第三章學習資料
- 江蘇省常州市新北區重點名校2025屆初三中考模擬沖刺卷(提優卷)(一)生物試題含解析
- 山東經貿職業學院《管理學經典閱讀》2023-2024學年第二學期期末試卷
- 唐山師范學院《工程估價與實務》2023-2024學年第二學期期末試卷
- 卓越學術之路
- 二零二五版車輛質押借款合同書范例
- 天津家庭裝修合同書
- 轉診合作協議書模板
- 私人借款延期補充協議書
- 引領家居設計創新
- 天然氣制氫裝置拆遷施工安全技術方案
- 部編版三年級語文下冊期中檢測卷課件
- (完整版)供應商審核表
- 說專業(市場營銷專業)課件
- 火電廠工藝流程圖
- 以“政府績效與公眾信任”為主題撰寫一篇小論文6篇
- 員工獎懲簽認單
- 水腫病患者的護理查房ppt
- 第18章生殖毒性研究
- CSD恒速傳動裝置
- 美的空調制造工藝手冊(共220頁)
評論
0/150
提交評論