###### tags: `SA` # chapter 2 物件導向系統分析設計 | 章節 | 大綱 | | ---- | ---- | |2-1| 物件與物件導向概念 | |2-2| UML與物件基本原理 | |2-3| 物件導向分析設計工具 | |2-4| 物件導向分析設計程序 | ## 物件與物件導向分析設計程序 > **程序**  ``` 物件導向發展程序就是使用物件導向方法論、統一程序和物件導向方法及工具的一連串發展軟體步驟。 ``` - **Step1 訪談並確認利害關係人的目標或利益** 需求訪談要整理需求成為利害關係人目標表(Stakeholder-goal list)。通過編碼、需求、來源、備註可成為事後核定內容。 - 定義角色[桃園案-角色定義](https://www.figma.com/file/soZvKdpAgFMRMRvogbGRAo/%E6%A1%83%E5%9C%92%E5%B8%82%E6%99%BA%E6%85%A7%E8%B7%AF%E7%87%88%E7%AE%A1%E7%90%86%E7%B3%BB%E7%B5%B1?node-id=0%3A1) - 客戶需求[桃園案-客戶需求](https://docs.google.com/spreadsheets/d/1wWDNGz6WA7ajKQACpExEsA5zKZz3T39I39jP6t9XGJk/edit?usp=sharing)  - **Step2 建立事件表並定義使用案例** - 使用案例[桃園案-SOP/情境](https://docs.google.com/spreadsheets/d/1wWDNGz6WA7ajKQACpExEsA5zKZz3T39I39jP6t9XGJk/edit?usp=sharing)  - **Step3 描述使用案例並繪製使用案例圖** - 描述時將系統看成一個黑箱,只描述參與者要求系統進行工作,系統如何處理工作並回應訊息給參與者即可,也就是[角色要在系統中做的事。](https://ithelp.ithome.com.tw/articles/10103033) - 此步驟的類別稱之概念類別,找出系統所需要的類別,即是進入定義領域模型的工作。 - 通常使用案例與事件找出系統涉及哪些類別,通常利害關係人與行為者都可能是主要類別,此外餐廳、庫存、運送等工作項目也有可能。  - **Step4 尋找概念類別並描繪初步類別圖** 可通過使用腦力激盪、名詞片語法,畫出概念性類別圖。  - **Step5 循序圖**  - **Step6 擬定合約** 將事件已前置條件和後置條件的方式詳細的描述 ## 軟體SOP(Standard Operation Process) > **工作步驟** - **Step1 需求** 訪談用戶需求,了解用戶對於軟體目標和軟體幫助他解決什麼事情。 範例:[需求修改紀錄-客戶許願清單](https://docs.google.com/spreadsheets/d/1G8sRPQo5g9crPjR1zSnWRwgF9BpBe729z5z08Fv2Ezw/edit?usp=sharing) - **Step2 分析** 通過訪談內容與合約,描述系統內的規格內容與限制。 - **Step3 設計** 產出內容包括 - 角色 - 架構:通過 Function Map --- ###### tags: `SA` # chapter2 何謂物件導向系統分析設計 old | 章節 | 大綱 | | ---- | ---- | |2-1| 物件與物件導向概念 | |2-2| UML與物件基本原理 | |2-3| 物件導向分析設計工具 | |2-4| 物件導向分析設計程序 | # 2-1 物件與物件導向概念 >物件(thing)可以指人事物或文件.ex:房子、桌子、椅子、杯子、客戶、訂單、產品規格、產品 - 實體的東西 - 營業交易 - 產品或服務 - 地點或角色 - 交易項目 - 產品規格 - 組織單位 - 容器或容器元素 >物件與程式之間的關聯:系統由物件組成,物件又由程式組成 - 系統到系統是由一個一個東西所組成 - 軟體系統他模擬現實環境所構建構而成的模型,故他是由一個一個物件類別組成 - 程式物件寫成程式碼構成了軟體系統 例如:真實世界物件包含貓、人、狗、車,物件方式轉換成貓、人、狗、車類別,在講貓、人、狗、車的程式要怎麼寫。  ``` 一般事先宣告類別在形成物件 類別定義: 指具有相同特性和相同行為的一組物件的集合 ``` 物件屬性:學生 範例1 學生>>物件物件內容>>>物件屬性:學生姓名、學生學號、學生班級 三位學生>>>類別:學生 的概念 一個類別可以產生非常多物件 物件或是名稱:學生妹 屬性(attribue):姓名、類別、科系、學號、年級 物件行為或是方法(method):會做的事情. 打招呼、自我介紹、問資料、邀約 物件:小弟弟 屬性:藍衣服、黑頭髮 行為:跑步、游泳 從以上可以整理出,類別是一個集合體的概念故稱之為物件類別(Object Class),個別的物件稱之為物件實體(Object Instance)  範例2:汽車 汽車類別 tayota、susuki 物件屬性 故在物件導向概念中: > 系統由模組行程>模組由物件組成>物件由程式組成 ``` 系統是一群物件的組成 - 設計系統時要把系統看成是一群物件的組成 - 先從需要處理的事情和內容中找出物件,然後由物件交互作用和交換訊息即可。 ``` 目標若為已物件導向概念設計系統 1. 找出系統由什麼模組組成() 2. 模組包含哪些物件(跟客戶訂單相關的物件、跟客戶訂單相關的類別) 3. 物件 例如1:處理客戶訂單的系統可能包括客戶訂單的物件(簡單)或類別(詳盡) 類別:產品、訂單、客戶、產品類別  ``` 先決定系統所需要的物件 - 尋找系統所需的物件比設計系統的功能步驟重要 - 先決定系統所需要的物件,再決定系統所要處理的事情,由哪幾個物件合作完成。物件之間如何互動。 ``` 例如2: 小吃店、飯店、五星飯店系統,物件互動會不一樣 點餐系統類別?屬性有哪些?如何互動 ``` 先單一物件功能完整且獨立 - 現實環境的東西大都有各自獨立的屬性和功能 - 決定物件時,應盡可能讓單一物件功能完整且獨立,與其他物件關聯程度要降到最低 - 軟體物件擁有自己的資料屬性,要完成某件事時,可以獨立完成 ``` 補充: **內聚力cohesion** 純水 **耦合力** 水變成飲料 完成一件複雜的工作若是要多個物件合作,物件間的合作不需要牽涉操作其他物件的內部運作,只需透過訊息的傳達即刻。不干涉另一個物件內部運作,保持每個物件的獨立性。 會說 有很高的內聚力和很低的耦合力,好的系統要有此特徵。  ``` 善用物件封裝、繼承與多行的特性 - 封裝:物件內的資料不允許被其他物件直接存取,保持了物件的獨立性 - 繼承:可以將定義好的屬性和方法為他類別使用,增加在用性與簡化設計 - 多類:不同類別中可以存在相同方法名稱,增加物件導向彈性設計 ``` 範例:    # 2-2 UML 與物件基本原理 ## 2-2-1 UML UML定義: - 為一個描述物件導向方西設計的圖形化工作 - 被定義14種圖示(diagram): 靜態>圖示結構式圖示 動態>行為式圖示 靜態範例(類別圖)  動態範例(循序圖)  UML符號: - 使用一條線連結有訊息傳遞的類別,稱為關聯(association)。 - 多個物件產生關聯,必須用數字在連結兩端將其標示稱之多重性(multiplicity)。 ``` 在連結臉端各標示1,為一對一的關係 在一方需要多個物件,為一對多的關係.可標示為 1..* 或 0..* ```  |名稱|特性|定義| |-----|----|--------| |使用案例圖 Use Case Diagram |靜態圖形| 表現系統所有使用案例與環境間的關係 | | 活動圖 Activity Diagram|動態圖形|用法1:描述使用案例內的運作流程| | | |用法2:描述使用案例內的程式流程|| |循序圖 Sequence Diagram|動態圖形 |描述使用案例中如何透過物件間訊息的傳遞有次序的完成系統事件| |溝通圖Communication Diagram|動態圖形|比循序圖更能表現物件間互動溝通關係| |類別圖Class Diagram|靜態圖形|將類別和類別間的關係以關聯符號來表現 | sample 1.使用案例圖 [最陽春選課案例](https://ithelp.ithome.com.tw/articles/10103033) [延伸選課案例](https://www.mysql.tw/2021/05/uml-usecase-activity-class.html) 2.活動圖 [維基百科說明](https://zh.wikipedia.org/zh-tw/活动图) 3.循序圖 [菜鳥工程師教你怎麼畫](https://dotblogs.com.tw/SoftwareEnergineer_JeffTseng/2020/06/29/113413) 4.溝通圖/合作圖 [學習筆記-合作圖型](https://terryjryeh.blogspot.com/2019/03/uml-collaboration-diagrams-9.html) 5.類別圖 [軟體路上不孤單-陽春案例教學](https://ithelp.ithome.com.tw/articles/10102093) ## 2-2-2 基本原理 1. 封裝 概念指每一個物件就像一塊IC板,單一物件功能完整且獨立,與其他物件關聯程度進量降到最低。物件之間若要通訊則就像由電路角等其他媒介通電。 是一群相關的屬性和操作所組成的型態。  > 封裝概念延伸:資訊隱藏 定義:將困難的設計或是可能改變設計要傳遞的主資訊部分做隱藏。比如手錶由齒輪構成。 2. 繼承 讓已經寫過程式碼,別再重複。 是指類別所定義的屬性和方法可以被其他的類別所使用。 所以通常只需宣告父類別,使用繼承的方式  >概念延伸: - 特殊化:先有父類別、再有子類別 使用繼承的方式來繼承原有的類別,僅加上不同的屬性和方法的設計方式。 - 一般化:先有子類別、將子類別相似地方歸納成父類別 在一群類別中將共通的部分抽離出來形成另一個類別的設計方式。 3. 多型 指不同類別中,可以存在相同的方法名稱,但其操作內容可以不同。每個子類別有其獨特性。 覆載(Overrride)是多型的另一個性質:子類別繼承了父類別的方法與屬性,在使用子類別時以子類別的屬性與方法為主  # 2-3 物件導向分析設計工具 物件導向與設計的做法: - 使用案例:使用文字來描述參與者(actor)與系統互動的過程。描述人做哪些事稱之   *參與者是指與系統互動的人或個體 *互動過程是參與者與系統之間一連串動作的敘述稱之情節(Scenario),情節包含成功與失敗 *可以簡單分成簡略、中等、完整三種層次 - 初步類別圖(Preliminary Class Diagram) 別稱叫做領域模型(domain model),是將系統所需要的類別以徒刑的方式表示出來  - 系統循序圖 將使用案例所敘述的步驟轉為一個個操作步驟稱之 將使用者文字敘述的需求轉變為系統操作的第一步驟 將使用案例表現成外部參與者與系統間操作次序之訊息傳遞的圖形  > 合約: > - 操作(Operation):操作名稱和參數 > - 交互參照(Cross References):使案例名稱,操作所發生的地方作為前後參考 > - 前置條件:操作成立的條件,也就是操作執行前的系統狀態 > - 後置條件:操作執行後的系統狀態 - 互動圖(interaction diagram) 包括溝通圖與循序圖,用不同方式表達同內容: (1)溝通圖:用類似網路方式描述物件互動,物件可被擺設在圖中任何位置 (2)循序圖:以類似柵欄的方式描述物件的互動,每加一個新物件就加入到圖的右邊  - 類別圖:用來描述整體系統的個別內容和類別之間的關係圖,表達出整體系統的靜態結構 - 設計類別圖:清楚說明屬性與操作,稱之設計類別圖 (1)必須在類別中增加類別操作 (2)類別間必須增加導覽箭頭 (3)在墓地物件的導覽箭頭下加上角色名稱relename (4)在目的物件表現出多重性 (5)去除關聯名稱  詞彙補充 概念類別conceptual class
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.