標籤:
用類圖擷取需求的大致步驟如下:
1. 識別出類
2. 識別出類的主要屬性
3. 描繪出類與類之間的關係
4. 對各類進行分析、抽象、整理
識別出類
在需求分析中遇到的各種業務概念經過抽象後就是類,表示一類……。例如:在圖書管理系統中,書籍是一個類,借閱者也是一個類。識別出類,看似很簡單的一句話卻非常考驗物件導向分析的能力,需要不斷的學習,總結才能做到既快又正確的識別出類
在UML圖中,用一個矩形框表示類圖,類圖包含:類的名稱、類的屬性、類的動作,如:
識別出類的主要屬性
識別出類,只是找到了某軟體中的業務概念,還需要對業務概念進行描述,識別出類的主要屬性就是對業務概念的進一步描述,加深對該業務概念的理解。屬性有三種類型:
- 公有,屬性名稱前帶+的屬性為公有屬性,可以在類外直接存取
- 保護,屬性名稱前帶#的屬性為保護屬性,只可以在類及其子類中訪問
- 私人,屬性名稱前帶-的屬性為私人屬性,只能在類中訪問,其子類和類外都不可以訪問
在Book類中,主要的屬性包含:名稱、作者、出版社等,修改後如:
如果某個類的一些屬性,感覺怪怪的,既可以是A類,也可以是B類,那可能需要考慮一下是否可能弄出一個關聯類別,把這些屬性放到這個關聯類別中,例如,公司與員工的薪資資訊(一般類的屬性可以由類自身單獨決定,項薪資和供職期間需要公司與員工雙方面決定的屬性則由很大可能屬於關聯類別的屬性):
描繪出類與類之間的關係
一開始我試圖通過一個例子把類與類之間的關係全部包含進來,經過嘗試之後,我就放棄了這個想法,畢竟我還是一隻大菜鳥,弄懂這些關係以及非常不容易了,胖子要慢慢吃。
關聯(Association)
關聯關係應該是類與類之間最簡單的關係了,在類圖中用一條直線串連關聯的兩個類來表示,直線的兩端可以設定幾對幾的關係,直線上還可以給關係命名。在代碼中體現為從一方可以找到另外一方,關聯關係也有單向關聯和雙向關聯的區別。網上看到一張圖片很好的詮釋了關聯關係的兩個類型:
下面是我畫的夫妻關係的圖:
依賴(Dependency)
依賴是關聯的強化關係,比如很小很小的熊貓無法離開熊貓媽媽而單獨生存,可能被餓死,也可能被猴子派來的逗逼打死。小熊貓就依賴於熊貓媽媽:
繼承(Generalization)
繼承是物件導向的一大特點,繼承的類是被繼承類的一個特例,可以理解成特例化一個類的過程叫做繼承。例如:水果是一個類,蘋果、梨、香蕉是一種水果,可以用類圖表示他們的關係,繼承關係在類圖中用帶空心三角符的箭頭表示,箭頭所在的一方為被繼承的類,也叫父類,另一方為子類:
彙總(Aggregation)
強調整體與組件的關係,組件可以脫離整體單獨存在。例如:汽車和車輪;公司與員工
組合(Composition)
組合也是強調整體與組件的關係,與彙總的不同之處在於,組合關係中的組件不能脫離整體而存在,比如:公司與部門的關係
業務概念—類圖