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

158
建國科技學.資訊管理系 Object-Oriented System Analysis and Design 物件導向系統分析與設計 講師:林彥宏(lyhcode.info

Upload: kyle-lin

Post on 14-Jul-2015

313 views

Category:

Software


11 download

TRANSCRIPT

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

建國科技⼤大學.資訊管理系

Object-Oriented System Analysis and Design

物件導向系統分析與設計

講師:林彥宏(lyhcode.info)

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

Week 1

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

⾃自我介紹

❖ 林彥宏

❖ 雲林科技⼤大學資訊管理所

❖ 思創軟體、︑遠通科技軟體⼯工程師

❖ Software R&D, Java, Linux and Database

❖ lyhcode.info

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

UML 2Latest version ?

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

Unified Modeling Language

UML 2.4.1August 2011

UML 2.5 Still Beta

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

OMG

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

OMG

❖ Object Management Group

❖ http://www.omg.org/

❖ 1989年由11家公司(包括IBM、︑Sun Micorsystems、︑蘋果公司、︑美國航空等)創⽴立

❖ 最初的⽬目的是開發⼀一個物件導向系統的標準

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

Model-Driven Architecture

❖ 簡稱為 MDA

❖ 使⽤用 Specification Language 定義 Platform Independent Model

❖ 常以 UML 作為塑模語⾔言(Modeling Language)

❖ 抽象化的系統定義

❖ 理想是由⾃自動化⼯工具將模型轉換為實際的電腦程式

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

UML 三劍客

❖ Use Case Diagram

❖ Class Diagram

❖ Sequence Diagram

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

Language

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

Language

010110011101

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

Language

if (x > 10) { printf(“????”);

}

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

Language

咕咕

呱呱

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

Language

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

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()❖ {❖ ...❖ }❖}

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

UML and

Source Code

Page 17: 物件導向系統分析與設計(建國)
Page 18: 物件導向系統分析與設計(建國)

Use Case

Page 19: 物件導向系統分析與設計(建國)
Page 20: 物件導向系統分析與設計(建國)
Page 21: 物件導向系統分析與設計(建國)
Page 22: 物件導向系統分析與設計(建國)
Page 23: 物件導向系統分析與設計(建國)

Class Diagram

Page 24: 物件導向系統分析與設計(建國)
Page 25: 物件導向系統分析與設計(建國)

Sequence Diagram

Page 26: 物件導向系統分析與設計(建國)
Page 27: 物件導向系統分析與設計(建國)

UML Exercise

❖ ATM

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

Group

❖ Send E-Mail to [email protected]

❖ 組長、︑組員名單

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

Learning by doing

Page 30: 物件導向系統分析與設計(建國)
Page 31: 物件導向系統分析與設計(建國)
Page 32: 物件導向系統分析與設計(建國)
Page 33: 物件導向系統分析與設計(建國)
Page 34: 物件導向系統分析與設計(建國)

作業:專案⼼心智圖

使⽤用⼼心智圖說明專案內容及⼩小組成員,請盡可能發揮最⼤大創意,格式與內容沒有限制。︒

Page 35: 物件導向系統分析與設計(建國)
Page 36: 物件導向系統分析與設計(建國)
Page 37: 物件導向系統分析與設計(建國)

Business Model Canvas

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

Week 2

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

軟體安裝

列舉本課程中使⽤用的軟體,請儘早下載安裝。︒

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

XMind

http://www.xmind.net/

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

BlueJ

http://www.bluej.org/

http://www.bluej.org/download/download.html

http://www.oracle.com/technetwork/java/javase/downloads/index.html

提⽰示:電腦必須先安裝JDK軟體

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

塑模

讓概念中的系統「視覺化」呈現

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

塑模(Modeling)

⼯工程領域通常先做「模型」,例如⾶飛機、︑建築或橋樑等。︒

軟體⼯工程的模型可以使⽤用UML製作。︒

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

塑模⽬目的

模擬與測試!

軟體開發是⼀一件浩⼤大的⼯工程,先建⽴立軟體的模型,不僅幫助溝通,可以及早做好各種可能的測試,利⽤用模型進⾏行模擬,盡量減少可以預期及預防的問題,並儘

早作修正。︒

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

4+1 View

邏輯

⼯工作流 佈署

實作

使⽤用案例

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

使⽤用案例

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

完整⽬目的

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

完整事件

喝⽔水

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

使⽤用案例的繼承

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

如何獲取使⽤用案例︖?

常⾒見詢問⽅方式:1. 您對系統有什麼期望︖?2. 您打算在這個系統裡做些什麼事情︖?3. 您做這件事情的⽬目的是什麼︖?4.您做完這件事情希望有⼀一個什麼樣的結果︖?

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

5W1H 思考

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

類別圖

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

電腦程式 = 資料 + 處理

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

結構化程式設計 物件導向程式設計

資料 變數 屬性

處理 函式 ⽅方法

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

BlueJ - 視覺化的類別與物件設計

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

類別圖與程式實作

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

類別與物件

步驟(⼀一)、建⽴立 Person 類別

步驟(⼆二)、產⽣生 person1 物件

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

繼承關係

步驟(⼀一)、新增 Student 類別

步驟(⼆二)、繼承 Person 類別

步驟(三)、產⽣生 student1 物件

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

循序圖

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

循序圖的特性

❖ 包含時間軸與⽣生命線

❖ 描述角⾊色及物件的「互動」

❖ 事件發⽣生的「順序」很重要

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

循序圖

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

Week 3

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

使⽤用的軟體

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

BlueJ

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

Astah Community

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

類別圖Class Diagram

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

資料

處理+

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

Stereotype

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

Boundary-Control-Entity Patterns

❖ Ivar Jacobson 博⼠士(照⽚片)

❖ 軟體⼯工程世界級權威⼤大師

❖ 系統類別分為:

❖ 邊界類別(boundary class)

❖ 控制類別(control class)

❖ 實體類別(entity class)

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

– UML創始⼈人

Grady Booch、︑James Rumbaugh、︑Ivar Jacobson

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

❖ 實體類別❖ 邊界類別 ❖ 控制類別

系統使⽤用者與邊界類別互動

系統功能操作、︑對資料的存取動作

從應⽤用領域分析獲得的實體需要被保存

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

Stereotype

購物⾞車

訂單

會員

商品資料

使⽤用者資料

交易記錄

信⽤用卡資料

典型的類別樣式

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

Stereotype 實際應⽤用

❖ MVC 架構

❖ Model 資料模型

❖ View ⼈人機界⾯面

❖ Controller 控制器︔;資料處理邏輯

Page 74: 物件導向系統分析與設計(建國)
Page 75: 物件導向系統分析與設計(建國)

Stereotype 實際應⽤用

❖ Spring Framework 軟體元件類型

❖ Component (元件)

❖ Controller (e.g. a web controller).

❖ Repository (or called DAO, Data Access Object).

❖ Service (e.g. a business service facade).

Page 76: 物件導向系統分析與設計(建國)
Page 77: 物件導向系統分析與設計(建國)

封裝

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

屬性能⾒見度

public

private

protected

package

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

UML 模型與實作

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

使⽤用案例圖

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

類別圖

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

Week 4

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

使⽤用的軟體

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

BlueJ

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

Astah Community

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

類別圖Class Diagram

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

has-a

❖ 組成(composition)

❖ 聚合(aggregation)

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

is-a

❖ 繼承(inheritance)

Page 89: 物件導向系統分析與設計(建國)
Page 90: 物件導向系統分析與設計(建國)

關聯

選修

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

class Course {Student student;

}

class Student { Course course;}

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

class Course {List<Student> students;

}

class Student { List<Course> courses;}

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

組成

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

聚合

Page 95: 物件導向系統分析與設計(建國)
Page 96: 物件導向系統分析與設計(建國)

練習(⼀一)

辨識類別之間的關聯、︑聚合、︑組成關係。︒

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

繼承

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

繼承

Page 99: 物件導向系統分析與設計(建國)
Page 100: 物件導向系統分析與設計(建國)
Page 101: 物件導向系統分析與設計(建國)

class Person { int age;}

class Student extends Person { int schoolId;}

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

練習(⼆二)Use Case

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

練習(三)Class Diagram

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

練習(四)Class Diagram

Page 105: 物件導向系統分析與設計(建國)
Page 106: 物件導向系統分析與設計(建國)

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); }}

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

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(); }}

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

public class Phone{ public void dial(int no) { System.out.println("正在撥號 " + no); }}

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

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); } }

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

public class Server{ public boolean check(String password) { if (password == "1234") { return true; } return false; }}

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

循序圖Sequence Diagram

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

⽣生命線

活動

活動

角⾊色

訊息

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

作業(五)Sequence Diagram

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

Week 5

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

使⽤用的軟體

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

BlueJ

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

Astah Community

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

物件圖

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

物件圖(Object Diagram)

❖ Object(物件)也稱為 Instance(實例)

❖ ⽤用途:

❖ 描述實際領域的物件關係

❖ 檢驗類別圖

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

類別圖

❖ 類別名稱

❖ 屬性(Attributes)

❖ 操作⽅方法(Operations)

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

物件圖

❖ 物件名稱

❖ 來⾃自某個類別

❖ 屬性(Attributes)

❖ 沒有操作⽅方法(Operations)

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

從類別圖到物件圖

物件是從類別產⽣生,所以不必重複描述操作⽅方法

類別圖要描述操作⽅方法

類別的關係(⼀一對⼀一、︑⼀一對多、︑多對多)

物件之間的關係來⾃自類別的定義

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

⽤用物件圖檢驗類別圖如果⼀一位學⽣生可以擁有多⽀支⼿手機︖?

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

使⽤用 Astah 繪製物件圖

先建⽴立”類別圖“在類別圖建⽴立物件

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

作業⼀一、︑物件圖練習❖ 請定義兩個類別:智慧型⼿手機、︑使⽤用者

❖ 智慧型⼿手機

❖ 屬性:螢幕尺⼨寸、︑處理器速度、︑作業系統、︑相機畫素

❖ 操作⽅方法:撥號、︑照相、︑瀏覽網⾴頁

❖ 使⽤用者

❖ 屬性:姓名、︑年齡、︑性別

❖ 操作⽅方法:購物、︑打電話、︑上網

❖ 請製作類別圖,必須清楚定義上述的類別屬性與操作⽅方法。︒

❖ 請製作物件圖,至少必須包含兩位使⽤用者與五⽀支智慧型⼿手機。︒

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

通訊圖

❖ Communication Diagram

❖ 指物件間的通訊

❖ 描述使⽤用案例中物件互動的過程

❖ 強調物件間的合作與訊息傳遞

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

通訊圖

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

作業⼆二、︑通訊圖練習

❖ 延續作業⼀一。︒

❖ 請完成使⽤用者透過⼿手機照相的使⽤用案例圖與通訊圖。︒

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

循序圖

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

⽣生命線

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

傳遞訊息

物件使⽤用另⼀一個物件的操作⽅方法

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

同步與非同步

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

⽣生命線

活動

活動

角⾊色

訊息

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

作業三、︑循序圖練習

❖ 延續使⽤用者及智慧型⼿手機類別。︒

❖ 請再增加⼀一個「⼿手機遊戲」類別。︒

❖ 請⾃自定遊戲的屬性與操作⽅方法。︒

❖ 利⽤用循序圖描繪使⽤用者透過智慧型⼿手機玩遊戲的訊息傳遞流程。︒

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

Week 6

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

使⽤用的軟體

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

BlueJ

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

Astah Community

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

Balsamiq Mockup

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

狀態圖State Diagram

Page 141: 物件導向系統分析與設計(建國)
Page 142: 物件導向系統分析與設計(建國)

作業(1):狀態圖練習

❖ 使⽤用狀態圖說明「你」⼀一天的各種狀態與事件。︒

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

元件圖Component Diagram

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

什麼是元件︖?

❖ 執⾏行檔 *.exe

❖ 函式(元件)庫 *.dll

❖ 網⾴頁⽂文件 *.html

❖ 資料庫 *.mdb

❖ 資料表

❖ ⽂文件 *.doc, *.txt

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

A Component Diagram

執⾏行檔

元件

網⾴頁

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

Modeling a Physical Database

學校資料庫

學⽣生學校教師系所課程

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

Modeling Source Code

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

註冊

搜尋

訂位

Page 149: 物件導向系統分析與設計(建國)
Page 150: 物件導向系統分析與設計(建國)

部署圖Deployment Diagram

Page 151: 物件導向系統分析與設計(建國)
Page 152: 物件導向系統分析與設計(建國)

主伺服器 伺服器 伺服器 伺服器

快取伺服器網際網路

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

⽤用⼾戶端

伺服器

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

使⽤用者介⾯面設計User Interface Mockup (or Wireframing)

Page 155: 物件導向系統分析與設計(建國)
Page 156: 物件導向系統分析與設計(建國)
Page 157: 物件導向系統分析與設計(建國)

作業(2):使⽤用者介⾯面

❖ 使⽤用Balsamiq 設計⼀一個 網站 或 ⼿手機APP 的畫⾯面。︒

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

作業(3):系統分析綜合練習❖ 系統規劃(⼼心智圖)

❖ 使⽤用案例圖

❖ 活動圖

❖ 類別圖、︑物件圖

❖ 循序圖、︑通訊圖

❖ 狀態圖

❖ 元件圖、︑部署圖

❖ 使⽤用者介⾯面設計(Mockup)