實例講解Java中UML接口實現(xiàn)
本文和大家重點討論一下UML接口問題,UML統(tǒng)一建模語言相信大家應該有所了解,那么UML接口的概念你是否熟悉,這里就向大家簡單介紹一下UML接口的一些內容,希望本文的介紹對你有所幫助。
UML接口
Java編程語言中接口(Interface)的概念也能夠與UML概念匹配。UML中的接口是一種實現(xiàn)繼承的形式,但這種繼承形式與Java中通過關鍵詞extends實現(xiàn)的繼承有所不同。
在Java中,extends關鍵詞描述了一種繼承形式,它既繼承接口也繼承行為。這種類型的繼承有時被稱為Sub-classing。與其他的面象對象編程語言不同,Java類只能從一個類繼承。許多時候,設計UML圖的人熟悉多種編程語言,常常會引入多重繼承的思想,例如C++的多重繼承思想。從已有的Java代碼生成UML圖(這個過程稱為反向工程)不會帶來多重繼承的問題,但如果要求一個Java程序員去實現(xiàn)一個帶有多重繼承的UML類圖,就會出現(xiàn)問題。如果多重繼承中的超類是純抽象類,這部分類可以用Java的接口來描述,但是,如果只做這種轉換不足以把UML類圖中的多重繼承全部轉換成單重繼承,這時就必須修改UML類圖重新建模了。
雖然Java不支持C++之類語言那樣的多重繼承,但它支持實現(xiàn)多重UML接口。這種由Java關鍵詞implements聲明的繼承只繼承接口,這種繼承有時被稱作Sub-typing。在UML中,實現(xiàn)接口的類與接口定義之間的關系叫做Realization關系,用一個虛線封閉箭頭表示,從實現(xiàn)接口的類指向UML接口。接口本身的UML圖與普通類一樣,但它的名字上面要加上“<>”。圖四由圖一修改而成,Payment類被一個接口取代。(關于Realization名稱的說明:Realization最常見的中文譯名是“實現(xiàn)”。但是,Java的implements也叫做“實現(xiàn)”。為避免混淆,本文中凡是出現(xiàn)Realization的地方一律直接使用英文)。
Java中UML接口可以從一個或者多個其他接口擴展。
UML一般化關系(實線封閉箭頭)可用來描述這種關系,如圖五所示。UML還支持另一種接口符號,即用圓圈表示接口(加上連線之后就成了棒棒糖的樣子),但這種表示法多用于UML組件圖,在UML類圖中比較少見。如果UML圖規(guī)模較大,有大量的類實現(xiàn)一個常用接口,整個UML圖可能亂成一團糟?!禞avaDesign》一書提出了一種簡化方法,后來又被《StreamlinedObjectModeling》一書的作者采用,這就是在實現(xiàn)接口的類中,用接口的名字替代從接口繼承的方法,不過這不屬于標準方法。遺憾的是,目前似乎還沒有工具支持這種轉換。
結束語:
繼承和接口是Java語言中非常有用的機制,我們已經看到,可以用UML的一般化和Realization關系使得Java的這兩個概念可視化。另外,一些非標準化的表示方法能夠極大地簡化UML圖。在下一篇文章中,我們將了解如何在Java程序中保留無法直接表達的UML語義信
【編輯推薦】
- 解析Java中UML接口實現(xiàn)
- UML構件圖的設計步驟和應用說明
- 詳解UML公共機制中修飾和擴展機制
- 解析用Visio畫UML圖的基本操作和幾種小技巧
- 六種UML圖關系的表示及在代碼中體現(xiàn)