以下示例:sql
類(Class)封裝了數據和行爲,是面向對象的重要組成部分,它是具備相同屬性、操做、關係的對象集合的總稱。數據庫
類名(Class):每一個類都必須有一個名字,類名是一個字符串。 工具
屬性(Attributes):屬性是指類的性質,即類的成員變量。類能夠有任意多個屬性,也能夠沒有屬性。spa
UML中:可見性 名稱:類型 [= 默認值]設計
操做(Operations):操做是類的任意一個實例對象均可以使用的行爲,操做是類的成員方法。orm
UML中:可見性 名稱(參數名):返回值對象
要注意uml中的關係是面向對象關係。若是不以面向對象的思惟去考慮會感受到有不少關係認爲是同樣的。繼承
一般關聯關係用來實現鏈接有關聯的對象所對應的類,即將一個類的對象做爲另外一個類的屬性。接口
還有就是關聯關係能夠是單向的也能夠是雙向的。雙向的符號是沒有方向標的,只是一條直線。ip
例:
單向:
雙向:
本身:
多重性關聯關係:
例:
在這裏要注意,看完此圖中1…1之後不要認爲一個Form是對應一個Button的。
不是的,應該是一個Button是對應一個Form的。1..1是表示另外一個類的一個對象只與一個該類對象有關係。記住上面的表格。是另外一個類與該類是什麼關係。
表示總體與部分的關係。考慮到一個總體類的組成結構。找出成員類。即成員對象是總體對象的一部分,可是成員對象能夠隊裏總體對象獨立存在。因此也有人說此關係是一種弱關係,那麼強關係是什麼後面咱們會降到組成關係。
聚合關係有一個特色,那就是可替換。
直觀的來看此圖Car中必須得有一個Engine,這樣才能夠認爲是一個完總體。
可是這個Engine是可替換的。是以傳參的形式給Car賦一個Engine。
再次強調一下聚合是可替換的。Car中必須有一個Engine,可是此Engine能夠是一個抽象的具體的Engine是在當你使用Car時能夠具體去找一個合適的Engine裝到Car上就行,若是沒有Engin那麼這個Car是跑不了。
表示總體與部分的關係。可是與聚合不一樣此關係是總體與部分是同生共死關係。即若是總體對象銷燬了部分也會被銷燬。
上圖Head是總體Mouth是部分,若是Head沒了Mouth也跟着銷燬了。若是Mouth沒了Head也將是面目全非。在代碼中Head中Mouth是直接new出來的。
就是說當你去new Head時Mouth也被new出來。記住一同建立一同銷燬關係。也叫強關係。那麼有人會問關聯,聚合,組合我怎麼認爲是同樣呢。
能夠說他們是同樣的均可以說是關聯關係,是的,可是關聯關係的強弱來區分了一下關聯關係強度來看組合>聚合>關聯。
是一個使用關係。特定事物的改變有可能會影響到使用該事物的其餘事物。簡單說在一個類中經過另一個類來調用其方法的表示。
從圖中能夠看出Driver中使用了Car的move方法。那麼就說明Driver是依賴於Car才能作Driver的職責。那麼又有人會問聚合與依賴有區別嗎,固然很明顯Driver是一個總體,Car也是總體。不是總體與部分關係。
繼承(extends)關係,父類與子類關係。這個好理解直接上圖。
從圖中能夠看出Student也是Person,Teacher也是Person。他們有共同的特徵name,age。可是也有獨自的特徵一個是study一個是teach的特徵。
子類那麼就是Student,Teacher父類是Person。繼承了父類那麼子類能夠直接適用父類的方法或屬性(家產)。
類實現(implements)了接口.當多個類有相似的行爲方式的時候咱們一般會適用接口。
Ship,Car都有move的特徵他們都屬於交通工具(Vehicle)只是他們move的方式不同。那麼咱們就能夠適用接口實現的方式去設計。代碼中是public class Car implements Vehicle
回顧一下以前關係。去分析一下此UML的類圖。
用戶經過註冊界面(RegisterForm)輸入我的信息, 用戶點擊「註冊」按鈕後將輸入的信息經過一個封裝用戶輸入數據的對象(UserDTO)傳遞給操做數據庫的數據訪問類(DAO), 爲了提升系統的擴展性,針對不一樣的數據庫可能須要提供不一樣的數據訪問類,所以提供了數據訪問類接口, 如IUserDAO,每個具體數據訪問類都是某一個數據訪問類接口的實現類, 如OracleUserDAO就是一個專門用於訪問Oracle數據庫的數據訪問類。
UserDTO只是把userAcount,userPassword封裝了一下使用了Getter,Setter。
那麼確定是RegisterForm的成員,註冊窗體不能沒有用戶名與密碼信息因此是組合關係。RegisterForm沒有了用戶信息(UserDTO)那麼就沒有意義了。
而後IUserDAO與RegisterForm是聚合關係由於是能夠替換的。好比說你可使用Oracle的之後擴展成Mysql的那麼能夠方便替換。
考慮到從此會擴展UserDAO因此適用了接口。
IUserDAO爲何與UserDTO是依賴關係,由於IUserDAO要把用戶信息保存到數據庫中那麼必須須要用戶信息。若是沒有了用戶信息此工做沒法完成因此是依賴關係。