頂層為類名,一般用加粗字體表示。假如類是抽象的,其名稱用斜體表示;假如類是接口,則在類名上方標注<<interface>>。中間層包含類的屬性(或變量),底層包含類的方法。與類名相似,假如方法是抽象的,那么它的名稱也用斜體表示。我們要設計的應用程序CDrawApp應用程序在基于字符的網格上畫點、框和文本串,該應用程序涉及到Java面向對象的許多概念與應用方法,非常系統、全面,在您仔細研讀后,定能迅速把握UML類圖,并將其應用到實際的Java應用程序開發過程中。為減少代碼長度,讓程序簡單易懂,這里使用Java控制臺窗口顯示程序運行結果。該程序總共由10個大類組成,以下分別介紹。一、Point類在CDrawApp程序中定義的第一個類是Point類,該類用于通過x和y坐標在網格上標識一點。其類圖設計為:
在該類中,有2個成員變量x和y,類圖中,“-”表示變量或方法為PRivate,“+”表示public,“#”則表示protected。該類定義了三個不同的構造函數,這是重載(overload)的例子。 接著該類設計了7個訪問方法。getX()和getY()方法分別返回一點的x和y坐標。SetX()和setY()方法根據參數xValue和yValue的值設置這些坐標的值。兩個add()方法通過被訪問點的坐標加上一個值來建立一個新的Point對象。New運算符建立類的新實例。它后面緊跟著初始化新生成實例的構造函數。toString()方法返回類String的一個對象,該對象用一個有序對來描述一個點。依據設計的類圖,其Java實現代碼為:// Point.<a target="_blank"
CGrid類聲明3個變量:width、depth和grid[][]。width和depth 變量用于指定grid[][]的水平和垂直尺寸,grid[][]是保存網格字符的字符數組的數組。CGrid中的變量聲明為protected,這就規定了它們只能在聲明它們的包中和CGrid的任何子類中訪問。CGrid類只有一個單一構造函數,它設置width和depth的值,分配grid[][]數組,然后調用blankGrid()以空格為grid[][]賦值。CGrid有4種訪問方法。blankGrid()方法只是簡單地用空格字符來調用 fillGrid()。fillGrid()方法把grid[][]的每個元素都設置為ch參數。GetCharFrom()方法用于找出網格中給定位置的字符。SetCharAt()用于把網格中一點設置成特定字符。在GetCharFrom()和SetCharAt()方法中使用Point類來定義它們的參數,這是類與類之間關聯的例子,我們稍候討論。根據以上類圖,CGrid類的原代碼為:// CGrid.<a target="_blank"
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()方法用于顯示網格對象的描述。CGObject類的代碼為:// CGObject.<a target="_blank"
PrintCGrid類與CGrid類的關系是子類與父類的關系。在類圖中用實線與空心箭頭從子類指向父類表示。>
PrintCGrid類的原代碼為:import <a target="_blank"
BorderedPrintCGrid類是PrintCGrid的子類,其類圖關系表示為:
displayGrid()方法覆蓋 PrintCGrid類的displayGrid()方法。通過重新定義該方法以滿足自己的需要。其中的super語句,將調用PrintCGrid.displayGrid()。該類的實現代碼為:lt;>// BorderedPrintCGrid.<a target="_blank"
通過UML類圖中的各類之間的繼續關系表示法,我們清楚地知道,CGrid是超類,PrintCGrid是CGrid的子類,BorderedPrintCGrid是PrintCGrid以及CGrid的子類。在Java類的代碼實現中,一定要用相應的extends語句來表示實際的繼續關系。一般類與類之間的關系我們可以用關聯來表達。如在類CGrid中,在GetCharFrom()和SetCharAt()方法中我們使用了Point類來定義它們的參數,這是類CGrid對Point類的引用。類CGrid可以引用多個Point對象,因此,在多重性的概念中,表示該類CGrid可以與多個Point對象關系。
在UML類圖中,我們用一條實線表示這種關聯為依靠關系,通過開叉的箭頭表示是CGrid類引用Point類。箭頭上方的0..*表示可以與多個對象關聯。假如是0..1表示可以與1個對象關聯;假如是1表示必須與1個對象關聯;假如是1..*表示必須與至少1個對象關聯。同樣,在PrintCGrid類中,在其變量申明中,有對CGObject的引用,并且也是多重引用。其UML類圖關系可以表示為:
因此,以上5個類之間的相互關系,用UML類圖關系可以清楚地表示為:
本部分說明了5個類的UML類圖表示、UML類圖關系以及相應的Java實現代碼。(責任編輯:銘銘) 新聞熱點
疑難解答