SlideShare ist ein Scribd-Unternehmen logo
1 von 158
Downloaden Sie, um offline zu lesen
建國科技⼤大學.資訊管理系
Object-Oriented
System Analysis and Design
物件導向系統分析與設計
講師:林彥宏(lyhcode.info)
Week 1
⾃自我介紹
❖ 林彥宏
❖ 雲林科技⼤大學資訊管理所
❖ 思創軟體、︑遠通科技軟體⼯工程師
❖ Software R&D, Java, Linux and Database
❖ lyhcode.info
UML 2
Latest version ?
Unified Modeling Language
UML 2.4.1August 2011
UML 2.5 Still Beta
OMG
OMG
❖ Object Management Group
❖ http://www.omg.org/
❖ 1989年由11家公司(包括IBM、︑Sun Micorsystems、︑蘋果
公司、︑美國航空等)創⽴立
❖ 最初的⽬目的是開發⼀一個物件導向系統的標準
Model-Driven Architecture
❖ 簡稱為 MDA
❖ 使⽤用 Specification Language 定義 Platform Independent
Model
❖ 常以 UML 作為塑模語⾔言(Modeling Language)
❖ 抽象化的系統定義
❖ 理想是由⾃自動化⼯工具將模型轉換為實際的電腦程式
UML 三劍客
❖ Use Case Diagram
❖ Class Diagram
❖ Sequence Diagram
Language
Language
010110011101
Language
if (x > 10) {
printf(“????”);
}
Language
咕
咕
呱
呱
Language
UML Implementation
❖class Singleton
❖{
❖ private static Singleton instance;
❖ private Singleton()
❖ {
❖ ...
❖ }
❖ public static synchronized Singleton getInstance()
❖ {
❖ if (instance == null)
❖ instance = new Singleton();
❖ return instance;
❖ }
❖ ...
❖ public void doSomething()
❖ {
❖ ...
❖ }
❖}
UML
and
Source Code
物件導向系統分析與設計(建國)
Use Case
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
Class Diagram
物件導向系統分析與設計(建國)
Sequence Diagram
物件導向系統分析與設計(建國)
UML Exercise
❖ ATM
Group
❖ Send E-Mail to lyhcode@gmail.com
❖ 組長、︑組員名單
Learning by doing
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
作業:專案⼼心智圖
使⽤用⼼心智圖說明專案內容及⼩小組成員,
請盡可能發揮最⼤大創意,格式與內容沒有限制。︒
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
Business Model Canvas
Week 2
軟體安裝
列舉本課程中使⽤用的軟體,請儘早下載安裝。︒
XMind
http://www.xmind.net/
BlueJ
http://www.bluej.org/
http://www.bluej.org/download/download.html
http://www.oracle.com/technetwork/java/javase/
downloads/index.html
提⽰示:電腦必須先安裝JDK軟體
塑模
讓概念中的系統「視覺化」呈現
塑模(Modeling)
⼯工程領域通常先做「模型」,
例如⾶飛機、︑建築或橋樑等。︒
軟體⼯工程的模型可以使⽤用UML
製作。︒
塑模⽬目的
模擬與測試!
軟體開發是⼀一件浩⼤大的⼯工程,先建⽴立軟
體的模型,不僅幫助溝通,可以及早做
好各種可能的測試,利⽤用模型進⾏行模擬,
盡量減少可以預期及預防的問題,並儘
早作修正。︒
4+1 View
邏輯
⼯工作流 佈署
實作
使⽤用案例
使⽤用案例
完整⽬目的
✔
✘
完整事件
喝⽔水
✘
✔
使⽤用案例的繼承
如何獲取使⽤用案例︖?
常⾒見詢問⽅方式:
1. 您對系統有什麼期望︖?
2. 您打算在這個系統裡做些什麼事情︖?
3. 您做這件事情的⽬目的是什麼︖?
4. 您做完這件事情希望有⼀一個什麼樣的結果︖?
5W1H 思考
類別圖
電腦程式 = 資料 + 處理
結構化程式設計 物件導向程式設計
資料 變數 屬性
處理 函式 ⽅方法
BlueJ - 視覺化的類別與物件設計
類別圖與程式實作
類別與物件
步驟(⼀一)、建⽴立 Person 類別
步驟(⼆二)、產⽣生 person1 物件
繼承關係
步驟(⼀一)、新增 Student 類別
步驟(⼆二)、繼承 Person 類別
步驟(三)、產⽣生 student1 物件
循序圖
循序圖的特性
❖ 包含時間軸與⽣生命線
❖ 描述角⾊色及物件的「互動」
❖ 事件發⽣生的「順序」很重要
循序圖
Week 3
使⽤用的軟體
BlueJ
Astah Community
類別圖
Class Diagram
資料
處理
+
Stereotype
Boundary-Control-Entity Patterns
❖ Ivar Jacobson 博⼠士(照⽚片)
❖ 軟體⼯工程世界級權威⼤大師
❖ 系統類別分為:
❖ 邊界類別(boundary class)
❖ 控制類別(control class)
❖ 實體類別(entity class)
– UML創始⼈人
Grady Booch、︑James Rumbaugh、︑Ivar Jacobson
❖ 實體類別❖ 邊界類別 ❖ 控制類別
系統使⽤用者與邊界類別互動
系統功能操作、︑對資料的存取動作
從應⽤用領域分析獲得的實體需要被保存
Stereotype
購物⾞車
訂單
會員
商品資料
使⽤用者資料
交易記錄
信⽤用卡資料
典型的類別樣式
Stereotype 實際應⽤用
❖ MVC 架構
❖ Model 資料模型
❖ View ⼈人機界⾯面
❖ Controller 控制器︔;資料處理邏輯
物件導向系統分析與設計(建國)
Stereotype 實際應⽤用
❖ Spring Framework 軟體元件類型
❖ Component (元件)
❖ Controller (e.g. a web controller).
❖ Repository (or called DAO, Data Access Object).
❖ Service (e.g. a business service facade).
物件導向系統分析與設計(建國)
封裝
屬性能⾒見度
public
private
protected
package
UML 模型與實作
使⽤用案例圖
類別圖
Week 4
使⽤用的軟體
BlueJ
Astah Community
類別圖
Class Diagram
has-a
❖ 組成(composition)
❖ 聚合(aggregation)
is-a
❖ 繼承(inheritance)
物件導向系統分析與設計(建國)
關聯
選修
class Course {
Student student;
}
class Student {
Course course;
}
class Course {
List<Student> students;
}
class Student {
List<Course> courses;
}
組成
聚合
物件導向系統分析與設計(建國)
練習(⼀一)
辨識類別之間的關聯、︑聚合、︑組成關係。︒
繼承
繼承
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
class Person {
int age;
}
class Student extends Person {
int schoolId;
}
練習(⼆二)Use Case
練習(三)Class Diagram
練習(四)Class Diagram
物件導向系統分析與設計(建國)
public class Person
{
protected String myName;
public void setName(String name) {
myName = name;
}
public String getName() {
return myName;
}
public void sayHello() {
System.out.println("你好, 我是 " + myName);
}
}
public class Student extends Person
{
private Phone phone = new Phone();
private int phoneNo;
public void setPhoneNo(int no) {
phoneNo = no;
}
public int getPhoneNo() {
return phoneNo;
}
public void chat(Person who) {
System.out.println(myName + " 正在聊天,對象是 " + who.getName());
}
public void call(Student who) {
System.out.println("打電話給 " + who.getName());
phone.dial(who.getPhoneNo());
}
public void playGame(String gameName, String password) {
Game game = new Game(gameName);
game.login(password);
game.play();
}
}
public class Phone
{
public void dial(int no) {
System.out.println("正在撥號 " + no);
}
}
public class Game
{
private String gameName;
public Game(String name) {
gameName = name;
}
public void login(String password) {
Server server = new Server();
if (server.check(password)) {
System.out.println("登⼊入成功");
}
}
public void play() {
System.out.println("正在執⾏行遊戲: " + gameName);
}
}
public class Server
{
public boolean check(String password)
{
if (password == "1234") {
return true;
}
return false;
}
}
循序圖
Sequence Diagram
⽣生命線
活動
活動
角⾊色
訊息
作業(五)Sequence Diagram
Week 5
使⽤用的軟體
BlueJ
Astah Community
物件圖
物件圖(Object Diagram)
❖ Object(物件)也稱為 Instance(實例)
❖ ⽤用途:
❖ 描述實際領域的物件關係
❖ 檢驗類別圖
類別圖
❖ 類別名稱
❖ 屬性(Attributes)
❖ 操作⽅方法(Operations)
物件圖
❖ 物件名稱
❖ 來⾃自某個類別
❖ 屬性(Attributes)
❖ 沒有操作⽅方法(Operations)
從類別圖到物件圖
物件是從類別產⽣生,所以不必重複描述操作⽅方法
類別圖要描述操作⽅方法
類別的關係(⼀一對⼀一、︑⼀一對多、︑多對多)
物件之間的關係來⾃自類別的定義
⽤用物件圖檢驗類別圖
如果⼀一位學⽣生可以擁有多⽀支⼿手機︖?
使⽤用 Astah 繪製物件圖
先建⽴立”類別圖“
在類別圖建⽴立物件
作業⼀一、︑物件圖練習
❖ 請定義兩個類別:智慧型⼿手機、︑使⽤用者
❖ 智慧型⼿手機
❖ 屬性:螢幕尺⼨寸、︑處理器速度、︑作業系統、︑相機畫素
❖ 操作⽅方法:撥號、︑照相、︑瀏覽網⾴頁
❖ 使⽤用者
❖ 屬性:姓名、︑年齡、︑性別
❖ 操作⽅方法:購物、︑打電話、︑上網
❖ 請製作類別圖,必須清楚定義上述的類別屬性與操作⽅方法。︒
❖ 請製作物件圖,至少必須包含兩位使⽤用者與五⽀支智慧型⼿手機。︒
通訊圖
❖ Communication Diagram
❖ 指物件間的通訊
❖ 描述使⽤用案例中物件互動的過程
❖ 強調物件間的合作與訊息傳遞
通訊圖
作業⼆二、︑通訊圖練習
❖ 延續作業⼀一。︒
❖ 請完成使⽤用者透過⼿手機照相的使⽤用案例圖與通訊圖。︒
循序圖
⽣生命線
傳遞訊息
物件使⽤用另⼀一個物件的操作⽅方法
同步與非同步
⽣生命線
活動
活動
角⾊色
訊息
作業三、︑循序圖練習
❖ 延續使⽤用者及智慧型⼿手機類別。︒
❖ 請再增加⼀一個「⼿手機遊戲」類別。︒
❖ 請⾃自定遊戲的屬性與操作⽅方法。︒
❖ 利⽤用循序圖描繪使⽤用者透過智慧型⼿手機玩遊戲的訊息傳
遞流程。︒
Week 6
使⽤用的軟體
BlueJ
Astah Community
Balsamiq Mockup
狀態圖
State Diagram
物件導向系統分析與設計(建國)
作業(1):狀態圖練習
❖ 使⽤用狀態圖說明「你」⼀一天的各種狀態與事件。︒
元件圖
Component Diagram
什麼是元件︖?
❖ 執⾏行檔 *.exe
❖ 函式(元件)庫 *.dll
❖ 網⾴頁⽂文件 *.html
❖ 資料庫 *.mdb
❖ 資料表
❖ ⽂文件 *.doc, *.txt
A Component Diagram
執⾏行檔
元件
網⾴頁
Modeling a Physical Database
學校資料庫
學⽣生學校教師系所課程
Modeling Source Code
註冊
搜尋
訂位
物件導向系統分析與設計(建國)
部署圖
Deployment Diagram
物件導向系統分析與設計(建國)
主伺服器 伺服器 伺服器 伺服器
快取伺服器
網際網路
⽤用⼾戶端
伺服器
使⽤用者介⾯面設計
User Interface Mockup (or Wireframing)
物件導向系統分析與設計(建國)
物件導向系統分析與設計(建國)
作業(2):使⽤用者介⾯面
❖ 使⽤用Balsamiq 設計⼀一個 網站 或 ⼿手機APP 的畫⾯面。︒
作業(3):系統分析綜合練習
❖ 系統規劃(⼼心智圖)
❖ 使⽤用案例圖
❖ 活動圖
❖ 類別圖、︑物件圖
❖ 循序圖、︑通訊圖
❖ 狀態圖
❖ 元件圖、︑部署圖
❖ 使⽤用者介⾯面設計(Mockup)

Weitere ähnliche Inhalte

Mehr von Kyle Lin

行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹Kyle Lin
 
2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報Kyle Lin
 
FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽Kyle Lin
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)Kyle Lin
 
Wiki 簡介與操作說明
Wiki 簡介與操作說明Wiki 簡介與操作說明
Wiki 簡介與操作說明Kyle Lin
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Kyle Lin
 
ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台Kyle Lin
 
TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)Kyle Lin
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習Kyle Lin
 
20101220架構討論
20101220架構討論20101220架構討論
20101220架構討論Kyle Lin
 
Asp net (1)
Asp net  (1)Asp net  (1)
Asp net (1)Kyle Lin
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test DriveKyle Lin
 
開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版Kyle Lin
 
TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹Kyle Lin
 
Modern Browser as a Programming Editor
Modern Browser as a Programming EditorModern Browser as a Programming Editor
Modern Browser as a Programming EditorKyle Lin
 

Mehr von Kyle Lin (16)

行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹行動應用開發實務 - Gradle 介紹
行動應用開發實務 - Gradle 介紹
 
2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報2013 TQC+ Java 認證研習簡報
2013 TQC+ Java 認證研習簡報
 
FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽FarmLogs 農場管理軟體預覽
FarmLogs 農場管理軟體預覽
 
TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)TQC+物件導向程式語言Java認證班(和春資工)
TQC+物件導向程式語言Java認證班(和春資工)
 
Wiki 簡介與操作說明
Wiki 簡介與操作說明Wiki 簡介與操作說明
Wiki 簡介與操作說明
 
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會
 
ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台ContPub 雲端電子書自助出版平台
ContPub 雲端電子書自助出版平台
 
TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)TQC+團報系統學生版(雲科資管)
TQC+團報系統學生版(雲科資管)
 
TQC+ Java 認證研習
TQC+ Java 認證研習TQC+ Java 認證研習
TQC+ Java 認證研習
 
20101220架構討論
20101220架構討論20101220架構討論
20101220架構討論
 
Asp net (1)
Asp net  (1)Asp net  (1)
Asp net (1)
 
Asp net
Asp net Asp net
Asp net
 
iisnode Test Drive
iisnode Test Driveiisnode Test Drive
iisnode Test Drive
 
開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版開放源碼電子書與EPUB幕後排版
開放源碼電子書與EPUB幕後排版
 
TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹TQC+ Java 全國教師研習會 PLWeb 介紹
TQC+ Java 全國教師研習會 PLWeb 介紹
 
Modern Browser as a Programming Editor
Modern Browser as a Programming EditorModern Browser as a Programming Editor
Modern Browser as a Programming Editor
 

物件導向系統分析與設計(建國)