系統是由一群物件組成,不是類別 物件有自己的資料屬性,可以獨立完成,這樣稱作:內聚力 物件彼此沒有太多關聯性:很低的耦合力

設計原則:強內聚力、弱耦合力

UML

15種圖 分為:

  • 結構性圖示:個體結構的靜態關係
  • 行為式圖式:系統物件間的動態關係 所有的設計都來自於需求 三種圖:
  1. 僅有類別類別圖
   @startuml
   class Customer
   @enduml
  1. 含有名稱屬性
@startuml
class Employee{
	int ID
}
@enduml
  1. 含名稱、屬性跟方法
@startuml
class Student{
	String name;
	String getName();
 
}
@enduml

關聯符號

通常用動詞,並加上方向鍵號

@startuml
class 老師
class 學生
 
老師 "1" -right- "1..*" 學生 :"教導 >"
@enduml

畫線一定代表有功能要用到他,一定會有功能由右用到左或左用到右

一般化和特殊化

物件導向

  • Object-oriented:有使用繼承、有使用多型
  • Object-based:類別圖沒有使用繼承與多型

常用UML圖形

使用案例圖

領域模型

出來的圖叫做初步類別圖

系統循序圖

人跟系統互動的圖 進一步說明操作內容:合約 合約內容:

  • 操作(Operation) 操作名稱和參數(parameter)
  • 交互參照(Cross Reference) 使用案例名稱,操作所發生之地方
  • 前置條件(Preconditions) 操作執行前之系統狀態
  • ** 後置條件(Post-conditions) 操作執行後之系統狀態

以上都是分析階段

小考:

  1. 系統分析師有四個基本能力要求,是哪四個系統分析師具備的能力? 要求:請你自己回答,你的專題組,這四個能力準備好了沒? 技術、知識、溝通不良有沒有準備好了?

類別圖與循序圖

設計類別圖

領域類別圖:初步類別圖,只有名稱、關聯性,頂多放資料

@startuml
class 老師{
  string name;
}
class 學生{
 string name;
 int score;
}
 
老師 "1" -right- "1..*" 學生 :"教導 "
@enduml

設計類別圖:將類別操作加入類別圖,有方向性

@startuml
class 老師{
 - string name;
+ string getName()
}
class 學生{
- string name;
- int score;
+ string getName()
+ int getScore()
}
 
老師 "1" -right- "1..*" 學生 :"teacherStudent >"
@enduml

物件導向分析設計程序

物件導向分析

如專題初審

  1. 訪談並確認利害關係人之目標或利益 描述利害關係人與目標的表格:利害關係人目標表
  2. 目標事件轉成功能
  3. 描述出參與者與系統互動的細節 把系統看成一個黑箱,參與者要求系統進行工作 (系統事件),系統如何處理工作並回應訊息給參與者即可
graph TD

利害關係人 --> 目標 --> 系統事件區塊 --> 系統功能區塊 --> 類別

  

subgraph 目標區塊

  
  

利害關係人

目標

end

目標區塊-->目標表

subgraph 系統事件區塊

direction TB

系統事件

end

系統事件區塊 --> 事件表

subgraph 系統功能區塊

direction TB

系統功能 --> 使用實例 --> 實例圖

系統功能 --> 人-系統互動 --> 系統循序圖

  

direction TB

類別 --> 資料 --> 類別圖

end

系統循序圖 每一個事件都要寫出來

物件導向設計程序

如專題總審所需要繳交的文件

graph TD
以個別使用案例為主設計出互動圖-->描繪設計類別圖-->明確說明每一方法之標示符號與演算法-->定義展現層和資料存取層
  • 重新調整類別圖 檢視所有類別,以建立繼承/包含關係、調整類別間之關聯性和增加相依關係 (例如大物件包含小物件,若刪除大物件則將連帶刪除小物件)。
  • 明確說明每一方法的標示符號與演算法
    1. 合約方式
    2. 虛擬碼
  • 定義展現層和資料資料存取層 透過DAO讓資料可以放進資料庫去

設計類別圖

期中

瀑布式軟體發展程序 請畫出完整符合MVC架構的物件(設計)循序圖

sequenceDiagram

  

Actor User

  

User ->>+ System: 

System ->>+ User: 

box lightblue View

participant User

participant System

end

System ->>+ ObjA: 

ObjA ->>+ System: 

  

box Pink Controller

participant ObjA

participant ObjB

participant ObjC

participant ObjD

end

box lightgrey Model

participant DAO

participant DB

end

ObjA ->>+ ObjB: 

ObjB ->>+ ObjA: 

ObjB ->>+ ObjC: 

ObjC ->>+ ObjB: 

ObjA ->>+ DAO: 

ObjB ->>+ DAO: 

ObjC ->>+ DAO: 

ObjD ->>+ DAO: 

  

DAO ->>+ DB:資料庫