技術分享 :利用UML類圖實現Java應用程序設計
本節繼續向大家介紹利用UML類圖設計Java應用程序方面的內容,主要包括CGObject類和PrintCGrid類兩大類,希望通過本節的介紹你對UML類圖有深刻的理解。
利用UML類圖設計Java應用程序
UML已成為面向對象設計的標準圖形化工具,在UML定義的各種圖中,本文只涉及類圖。Java應用程序由許多類所構成,類圖的設計與實現,是Java實現面向對象應用程序的核心。本文通過一個具體的應用程序的設計與實現過程,詳細說明了利用UML類圖設計Java應用程序,使得開發過程標準化、可視化,代碼編程簡單化。
我們要設計的應用程序CDrawApp應用程序在基于字符的網格上畫點、框和文本串,該應用程序涉及到Java面向對象的許多概念與應用方法,非常系統、全面,在您仔細研讀后,定能迅速掌握UML類圖,并將其應用到實際的Java應用程序開發過程中。為減少代碼長度,讓程序簡單易懂,這里使用Java控制臺窗口顯示程序運行結果。該程序總共由10個大類組成,以下分別介紹。
一、CGObject類
CGObject類是抽象類的例子,它通過abstract方法來限制其子類的行為。Abstract方法必須由非abstract子類實現。其UML類圖設計如下:
CGObject類用于定義在網格上顯示的對象的一般行為。它有兩個變量:location和drawCharacter。Location變量的類型是Point,用于在網格上指定一個對象所在的點。DrawCharacter變量用于畫對象的字符。
CGObject有三個方法,而沒有構造函數。因為abstract類沒有完整定義,所以它沒有構造函數,也沒有對象實例。
第一個方法addToGrid()不是abstract類型的。它以類PrintCGrid的對象作為參數,調用PrintCGrid類的addCGObject()方法,把this對象加到網格中。this關鍵字指當前對象。用addToGrid()方法調用CGObject類的子類的對象,這些對象加到類PrintCGrid的對象中。
CGObject的其它兩個方法都用abstract關鍵字聲明。這意味著,這兩個方法在能夠由CGObject類的非abstract子類使用前必須被覆蓋。覆蓋方法必須擁有與anstract方法相同的名字、參數和返回值。Display()方法用于再網格上顯示類PrintCGrid的一個對象。Describe()方法用于顯示網格對象的描述。
二、PrintCGrid類
PrintCGrid類是CGrid類的子類,它定義了允許把對象加到網格中的附加變量和方法。它也提供了顯示網格的方法。PrintCGrid類的UML類圖如下圖所示:
利用UML類圖設計Java應用程序中PrintCGrid類與CGrid類的關系是子類與父類的關系。在類圖中用實線與空心箭頭從子類指向父類表示。
PrintCGrid有一個構造函數。該構造函數有兩個參數:x和y,它們表示網格的水平和垂直方向的尺寸。構造函數調用super()方法,并把這兩個變量當著變元傳遞過去。Super()方法是構造函數調用語句的一個例子。它以x和y作為變元調用PrintCGrid的父類(即CGrid類)的構造函數。CGrid的構造函數初始化其width和depth變量,分配grid[][]數組,并用空格給該數組元素賦值。CGrid的構造函數運行完后,PrintCGrid的構造函數繼續把numObjects設置為0,并分配displayList[]數組。
PrintCGrid提供10個訪問方法。AddCGObject()方法把對象加到displayList[]數組中。DeleteCGObject()方法刪除位于指定索引位置的對象。所有的后續對象都向前移動,以填充被刪除對象留下的空缺。DeleteLastObject()方法通過簡單地把numObjects減1來刪除最后一個對象。
GetNumObjects方法返回displayList[]中的對象數目。GetObject方法返回displayList[]中指定位置的對象。clearGrid()方法通過把numObjects設置為0去清除所有對象。
DrawGrid()方法使用從CGrid類繼承的方法清空網格,然后調用displayList[]中每個對象的display()方法。
displayGrid[]方法在控制臺窗口中顯示每一行網格。它是繼承的例子。Grid[][]數祖在CGrid類中定義,由PrintCGrid所繼承。它由CGObject類的所有子類的drawGrid()方法和display()方法更新。PrintGrid()類用它來在控制臺窗口中打印字符。
ValueOf()方法用于displayGrid()方法中,它是String類的靜態方法。它把字符數組轉換成String對象。靜態方法類似于靜態變量,它整體上應用于類,而不是作為類實例的各個對象使用。由于面向對象,靜態方法只能訪問靜態變量。所有靜態方法都是定局的,不能被覆蓋。DisplayRow()方法在控制臺窗口上顯示一行網格,show()方法把drawGrid()和displayGrid()方法組合成一個方法。本節關于利用UML類圖設計Java應用程序相關內容介紹到這里。
【編輯推薦】