軟體設計part2

前情提要

  • 前面我們提到了類別之間有強弱之分,這篇文章會繼續介紹各類別.
  • 符號的部份參考以下圖片

relationship

依賴 Dependency

  • 所有關係中最弱的
  • 短暫發生的關係
  • 依賴使用的符號為虛線箭頭

example: As a human, I use a cup to drink water.

  • 所以我們可以從畫出兩個物件:人跟水而人會具備喝水這個動作

關聯 Association

  • 強度較強的依賴
  • 類別與類別之間是長期的關係
  • 須注意物件與物件之間的物件參與者數量(Mulitiplicity)
  • 關聯所使用的符號為一條實線

example: As a teacher, I teach this class.

  • 長期關係故為關聯
  • 從這句話可以畫出兩個物件:老師跟班級,老師具備教這個動作

還有一種類別是Association class

  • 當動作產生時才發生的物件
  • 例如: 修這堂課的學生都會獲得一個最終成績
  • 上面這個例子中 學生去做修課這個動作與這堂課進行關聯才會產出最終成績這個由修課動作產生的屬性,示意可參考下圖

association class

擁有權 Ownership

聚合 Aggregation

  • 調其中一方的擁有權
  • 可獨立存在
  • 符號為空心菱形配搭實線

複合 Composition

  • 比聚合更強烈的關係
  • 多了整體與局部的限制(whole-part)
  • 局部無法獨立與整體之外
  • 符號為實心菱形配搭實線

繼承 generalization

  • 最強的關係
  • 概念: 你是什麼 is-a
  • 符號為實線配空心三角

example: A man is a human , and a woman is also a human.

  • 有男人,女人,人類,三種類別,而男人女人都有著人類的屬性和行為,示意圖如下

generalization example

抽象類別 Abstact class

  • 被繼承的(上述例子中的人類)就是抽象類別,其屬性及行為皆為不具體
  • 只說的出what 說不出how的都是抽象
  • 是多型 Polymorphism的概念