UML Class diagram exam questions

 類別圖考題形式

1. 給一段程式碼畫出類別圖

2. 類別圖的定義,解釋類別圖三個模型

3. 給一張類別圖,寫出圖形的描述

4. 使用者案例發展類別圖之步驟

5. 給一段需求描述畫出類別圖

6. 寫一段程式碼畫出類別圖

7. 進行程式碼分析並畫出類別圖


1. 給一段程式碼畫出類別圖

範例如下

請依據以下的 Java 程式碼利用逆向工程的概念繪製出完整對應的 UML 類別圖(Class Diagram)。(25 分)


答案

此題使用的類別之間的關係有二:
  • 相依關係:指一個類別使用另一個類別,以虛線箭頭符號表示,箭頭指向的為被使用的對象。
  • 一般化關係:指兩個類別間有繼承關係,以實線與空心三角形表示,三角形指向的為父類別。

2. 類別圖的定義,解釋類別圖三個模型

類別圖的主要目的是建立軟體系統靜態觀點的模型,是唯一可以直接對應物件導向

程式語言的 UML 圖形,其主要目的為何?請解釋說明領域模型(Domain Model)、
概念模型(Conceptual Model)及分析模型(Analysis Model)。(30 

答案

類別圖是UML的一種結構圖,主要用於物件資料結構的塑模,表示系統的物件靜態結構。其中的元件有類別與類別之間的關係,描述類別的名稱、屬性、操作,與類別間的四種關係相依、一般化、關聯及實現化。

類別圖的三個模型
領域模型(Domain model)
- 是一種類別圖。描述特定領域的靜態結構
- 有助開發者知道領域的重要觀念與實體
- 常用於需求分析階段的建立,是與領域專家合作的結果
概念模型(conceptual model)
- 描述系統整體架構,不關注細節
- 有助捕捉系統的概念和之間的關係
- 用於讓相關者理解系統核心概念
分析模型(analysis model)
- 了解系統需求,為設計階段做準備的類別圖。含有類別、屬性、操作與關係
- 有助於建立系統的靜態結構,滿足特定需求
- 用於系統分析階段

3. 給一張類別圖,寫出圖形的描述

三、請說明下圖是屬於何種 UML 圖形,繪製這類 UML 圖形的目的為何?並請詳細說明下圖所示模型的內容:

答案

(一)UML圖形的目的為
類別圖是一種UML結構圖,用於物件資料結構的塑模,表示系統中物件的靜態結構,其中包括類別與類別之間的關係,類別以名稱、屬性、操作描述,類別之間的關係則有相依、一般化、關聯、實現化四種。

(二)圖所示模型的內容為
- 有兩個類別person與student,
- 其中的person類別 有三個私有變數name, address, phone,他們的型別皆為String,一個公開函數purchase()表示一個人可以執行購買的操作。
- student類別有一個私有變數studentID,其型別為String,和一個保護函數getBonus(),表示學生可以獲得獎金的操作。兩個類別之間的關係為一般化關係,即student類別繼承自person類別,且有其屬性與操作。

描述屬性與操作的符號
+ 表示在系統中的所有類別都可以存取
- 表示在同一個類別才可以存取
# 表示繼承的類別才可以存取
~ 表示在同一個套件的類別才可以存取

4. 使用者案例發展類別圖之步驟

中花機關的公文管理系統開發專案使用 UML 進行開發,目前在完成了使用案例

(Use Case)之後,正在進行類別圖的發展工作。
請問何謂類別圖?(10 分)
依據使用案例(Use Case)發展類別圖的步驟大致應如何進行?

答案

(一)何謂類別圖
類別圖是一種UML結構圖,用於物件資料結構的塑模,表示系統中物件的靜態結構,其中包括類別與類別之間的關係,類別以名稱、屬性、操作描述,類別之間的關係則有相依、一般化、關聯、實現化四種。
(二)使用案例(Use Case)發展類別圖的步驟
1. 識別類別:
- 根據使用者案例與需求分析,識別可能的類別。
- 類別常為系統之實體或概念。
2. 確定類別的屬性與方法
3. 建立類別圖:用UML標準符號表示類別的屬性與方法
4. 建立類別之間的關係:為類別之間建立適當的關係,類別之間的關係有四種,相依、一般化、關聯、實現化。
5. 簽核與討論:將類別圖與團隊、利益相關者討論,確保模型的一致性與完整性,有必要就做反饋調整。
6. 文件化:將類別圖文件化,以便於軟體開發過程的參考與維護。

5. 給一段需求描述畫出類別圖

例題一、ABC 公司正在繪製業務管理系統的類別圖。該公司目前有數個業務員分別負責每一

個公司的客戶,每一個客戶都會被指定由一位業務負責。公司成為 ABC 公司的客戶
後,就會被指定一個業務負責,每次有業務離職或招募到新的業務時,部分客戶可
能會被調整由新的業務來負責。
請說明何謂類別(CLASS)?(10 分)
請試將以上的描述繪製成類別圖。(10

答案

(一)何謂類別
類別用於描述物件的結構,其中包括屬性與操作。物件為類別的實現。可以想像為類別是個模具,而物件是用類別這個模具製作出來的產品。
(二)類別圖為

- 其中使用關聯關係,將Customer類別指定給SalesPerson類別
- SalesPerson類別包含,一個私有屬性name型態為String,表示業務的姓名。一個公開的函式assignCustomerToSales(customer:Customer, sales:SalesPerson),用於將客戶指定給業務。
- Customer類別包含,一個私有屬性name型態為String,表示客戶的姓名。
- 大括號的限制為,有業務離職或招募新業務時,則呼叫函式assignCustomerToSales(customer:Customer, sales:SalesPerson),調整客戶由新的業務負責。

例題二、繪製 UML 類別圖(Class Diagram),表示關於排球聯盟(league)以下之資訊元件:

聯盟(league)由至少 4 個球隊(team)組成。每個球隊(team)由 6 至 12 名球員
(player)組成,且皆有 1 名球員擔任隊長(captain)。每個球隊(team)皆有其隊名
(name)及記錄(record)。每名球員(player)皆有號碼(number)及其位置(position)。
球隊(team)倆倆相互(play)比賽(game)。每場比賽(game)都有比數(score)
及比賽地點(location)。各球隊(team)可能有教練(coach)指導,但也可能沒有。
每名教練(coach)皆有認證等級(accreditation level)及年資(year experience)。每
名教練(coach)可以指導(lead)多個球隊(team)。教練(coach)及球員(player)
皆是人員(person),人員皆有名字(name)及地址(address)。類別圖中必須使用適
當的標籤標記所有關聯(Association)。(20 分
以下是描述排球聯盟(league)的UML類別圖,包括聯盟、球隊、球員、教練和人員之間的關聯。請注意,每個類別之間的關聯都用適當的標籤標記。

答案


例題三、 畫跨國公司的類別圖

6. 寫一段程式碼畫出類別圖

請以物件導向,多型(polymorphism)的技術,改寫下列計算薪水的程式,其中經理(manager)薪水是 40000,工程師(engineer)薪水是 35000。

int getPay(String employeeType) {
if (employeeType ==“manager”) {
return 40000;
else if (employeeType == “engineer”)
return 35000;
}
設計 Employee, Manager, Engineer 等三個類別及其屬性(attribute)與方法(method),
方法包括建構子(constructor)。其中 Employee 是抽象類別,有一個保護
(protected)屬性薪水(salary);Manager 和 Engineer 是 Employee 的子類別。
(18 分)
畫出 UML 類別圖。

答案

(一) 用Java語言設計類別
(二)UML類別圖為

多型:允許不同的物件用相同的介面互動,實際的操作可能不同
(三)補充

7. 進行程式碼分析並畫出類別圖

表一為用來實現兩數運算的 C#程式碼,Operation.cs 檔案定義了三個類別;IFactory.cs定義了一個介面及兩個類別;Program.cs 則定義了 Program 類別。


請根據表一回答以下問題:
(一)在 C# 語言中,關鍵字 namespace 的主要用途為何?(2 分)
(二)程式進入點在那個類別的那個方法中?(2 分)
(三)關鍵字 virtual 與 override 的主要用途為何?(2 分)
(四)class AddFactory : IFactory{....} 的意義為何?(2 分)
(五)IFactory operFactory = new AddFactory(); 這段程式碼用到了物件導向程式設計三
大特性中的那一個特性?(2 分)
(六)請依據表一的程式碼畫出 UML 類別圖。(15

答案

(一)namespace關鍵字用來宣告一個範圍,以組織程式碼元素並創建全域唯一的類型。
(二)在Program類別的Main方法中
c#與Java的main函數異同
- C#沒有public 存取修飾子
- C# 的class叫做Program,且main方法第一個字母大寫
- Java的類別與方法叫做main, main,類別名第一個字母大寫
(三)關鍵字 virtual 與 override 的主要用途為何?
- virtual 宣告一個虛擬方法 
- override重寫:用於在子類別中重寫父類別的虛擬方法
(四)class AddFactory:IFactory{...}意義? 類別可以實現多個介面,AddFactory類別實現IFactory介面,類別需要實作介面裡定義的Create()方法。
(五)IFactory oprFactory=new AddFactory() 用到物件導向設計三大特性
多型:不同物件使用相同介面互動,其中的操作可能不同
(六)UML類別圖為


Comments

Popular posts from this blog

How to write data into a excel file using vbscript

Format date as yyyy-mm-dd using vbscript