版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程軟件工程1 1軟件工程軟件工程第六章第六章 面向對象技術面向對象技術6.1 6.1 面向對象的概念面向對象的概念6.2 UML6.2 UML統(tǒng)一建模語言統(tǒng)一建模語言軟件工程軟件工程2 2n(1)優(yōu)點)優(yōu)點 整體思路清楚,目標明確。整體思路清楚,目標明確。 設計工作中階段性非常強,有利于系統(tǒng)開發(fā)的總體管理和控制。設計工作中階段性非常強,有利于系統(tǒng)開發(fā)的總體管理和控制。 在系統(tǒng)分析時可以診斷出原系統(tǒng)中存在的問題和結構上的缺陷。在系統(tǒng)分析時可以診斷出原系統(tǒng)中存在的問題和結構上的缺陷。 n(2)缺點)缺點 用戶要求難以在系統(tǒng)分析階段準確定義,致使系統(tǒng)在交付使用用戶要求難以在系統(tǒng)分析階段準確定義
2、,致使系統(tǒng)在交付使用時產生許多問題。時產生許多問題。 用系統(tǒng)開發(fā)每個階段的成果來進行控制,不能適應事物變化的用系統(tǒng)開發(fā)每個階段的成果來進行控制,不能適應事物變化的要求。要求。 系統(tǒng)的開發(fā)周期長。系統(tǒng)的開發(fā)周期長。 導入導入 結構化方法優(yōu)缺點結構化方法優(yōu)缺點軟件工程軟件工程3 3n哲學的觀點認為現實世界是由各種各樣的實體(事物、對哲學的觀點認為現實世界是由各種各樣的實體(事物、對象)所組成的,每種對象都有自己的內部狀態(tài)和運動規(guī)律,象)所組成的,每種對象都有自己的內部狀態(tài)和運動規(guī)律,不同對象間的相互聯系和相互作用就構成了各不同對象間的相互聯系和相互作用就構成了各 種不同的種不同的系統(tǒng),并進而構成整
3、個客觀世界。系統(tǒng),并進而構成整個客觀世界。n同時人們?yōu)榱烁玫恼J識客觀世界,把具有相似內部狀態(tài)同時人們?yōu)榱烁玫恼J識客觀世界,把具有相似內部狀態(tài)和運動規(guī)律的實體(事物、對象)綜合在一起稱為類。類和運動規(guī)律的實體(事物、對象)綜合在一起稱為類。類是具有是具有 相似內部狀態(tài)和運動規(guī)律的實體的抽象,進而人相似內部狀態(tài)和運動規(guī)律的實體的抽象,進而人們抽象的認為客觀世界是由不同類的事物間相互聯系和相們抽象的認為客觀世界是由不同類的事物間相互聯系和相互作用所構成的一個整體?;プ饔盟鶚嫵傻囊粋€整體。n計算機軟件的目的就是為了模擬計算機軟件的目的就是為了模擬 現實世界,使各種不同現實世界,使各種不同的現實世界
4、系統(tǒng)在計算機中得以實現,進而為我們工作、的現實世界系統(tǒng)在計算機中得以實現,進而為我們工作、學習、生活提供幫助。學習、生活提供幫助。 6.1 6.1 面向對象的概念面向對象的概念軟件工程軟件工程4 46.1 6.1 面向對象的概念面向對象的概念軟件工程軟件工程5 5n客觀世界中的應用問題面對的主體都是物理的或客觀世界中的應用問題面對的主體都是物理的或概念的概念的實體實體。n從這些實體出發(fā),分析實體的從這些實體出發(fā),分析實體的作用作用、責任責任以及它以及它們之間們之間協作協作,從而找出問題的解,是很自然的。,從而找出問題的解,是很自然的。n面向對象技術就是適合用這種方式分析和解決問面向對象技術就是
5、適合用這種方式分析和解決問題的方法。它的基石就是題的方法。它的基石就是問題領域中識別出來的問題領域中識別出來的各種對象各種對象。依賴這些對象提供的服務和對象之間。依賴這些對象提供的服務和對象之間相互的協同(關系),實現期望的功能。相互的協同(關系),實現期望的功能。n面向對象技術能夠在解決方案中直接模擬問題領面向對象技術能夠在解決方案中直接模擬問題領域,并與人類的思維習慣相一致。域,并與人類的思維習慣相一致。6.1 6.1 面向對象的概念面向對象的概念軟件工程軟件工程6 6什么是面向對象什么是面向對象nPeter Coad 和和 Edward Yourdon 提出面向對象方提出面向對象方法的概
6、念:法的概念: 面向對象面向對象 = 對象對象 + 分類分類 + 繼承繼承 + 消息通信消息通信n采用這四個概念開發(fā)的軟件系統(tǒng)就是面向對象的采用這四個概念開發(fā)的軟件系統(tǒng)就是面向對象的軟件系統(tǒng)。軟件系統(tǒng)。n一個面向對象的程序的每一成份應是一個面向對象的程序的每一成份應是對象對象,計算,計算是通過新的是通過新的對象的建立對象的建立和和對象之間的通信對象之間的通信來執(zhí)行來執(zhí)行的。的。軟件工程軟件工程7 7面向對象的特點面向對象的特點n抽象性:對象包含數據抽象和行為抽象;抽象性:對象包含數據抽象和行為抽象;n封裝性:信息隱蔽(使用與實現分開);封裝性:信息隱蔽(使用與實現分開);n共享性:共享性:同一
7、個類中所有對象共享相同的數據結構同一個類中所有對象共享相同的數據結構和行為;和行為;同一應用中的對象通過繼承關系,共享共同一應用中的對象通過繼承關系,共享共同的數據結構和行為;同的數據結構和行為;不同應用中的對象通過復用,共享數據結不同應用中的對象通過復用,共享數據結構和行為。構和行為。軟件工程軟件工程8 8對象(對象(object) 對象是系統(tǒng)中描述客觀事物的實體,是構成系統(tǒng)對象是系統(tǒng)中描述客觀事物的實體,是構成系統(tǒng)的一個基本單元,由一組屬性值和一組對屬性進的一個基本單元,由一組屬性值和一組對屬性進行操作的服務組成。行操作的服務組成。 對象對象 = = 對象名對象名+ +數據數據( (屬性屬
8、性)+)+操作操作( (行為行為) ) 屬性值一般只能通過執(zhí)行對象的操作來改變。屬性值一般只能通過執(zhí)行對象的操作來改變。 操作(方法或服務)描述了對象執(zhí)行的功能,若操作(方法或服務)描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其他對象使用。通過消息傳遞,還可以為其他對象使用。 對象可以是對象可以是外部實體外部實體、信息結構信息結構、事件事件、角色角色、組織結構組織結構、地點或位置地點或位置、操作規(guī)程操作規(guī)程等。等。軟件工程軟件工程9 9計算機窗口中的三個多邊形對象計算機窗口中的三個多邊形對象(50, 60)(50, 85)(35, 60)(35, 85)(50, 45)(60, 35)(56
9、, 10)(46, 37)(10, 50)(20, 20)(23, 30)軟件工程軟件工程1010表示多邊形的三個對象表示多邊形的三個對象drawmove( x, y)contains?(aPoint)(10, 50)(20, 20)(23, 30)triangledrawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2軟件工程軟件工程11
10、11類(類(classclass) 把具有相同屬性(數據結構)和服務(操作)把具有相同屬性(數據結構)和服務(操作)的對象歸在一起就形成了的對象歸在一起就形成了類類。 類的定義包括一組數據屬性和在數據上的一組類的定義包括一組數據屬性和在數據上的一組合法操作。合法操作。 屬于某一個類的各個對象都是該類的實例屬于某一個類的各個對象都是該類的實例(instance),它們都可使用類中的操作。,它們都可使用類中的操作。 類定義了各個實例所共有的數據結構,使用類類定義了各個實例所共有的數據結構,使用類的構造函數,可以在創(chuàng)建該類的實例時初始化的構造函數,可以在創(chuàng)建該類的實例時初始化這個實例的狀態(tài)。這個實例
11、的狀態(tài)。軟件工程軟件工程1212由兩個四邊形對象導出一個類由兩個四邊形對象導出一個類drawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2drawmove( x, y)contains?(aPoint)point1point2point3point4quadrilateral軟件工程軟件工程1313消息消息(messagemessage)消
12、息是一個對象向另一個對象傳遞的信息。有消息是一個對象向另一個對象傳遞的信息。有四類消息:發(fā)送對象四類消息:發(fā)送對象請求接收對象提供服務請求接收對象提供服務、發(fā)送對象發(fā)送對象激活接收對象激活接收對象、發(fā)送對象、發(fā)送對象詢問接收對詢問接收對象象、發(fā)送對象、發(fā)送對象僅傳送信息給接收對象僅傳送信息給接收對象。消息的使用類似于函數調用,消息中指定了某消息的使用類似于函數調用,消息中指定了某一個實例,一個操作名和一個參數表(可能是一個實例,一個操作名和一個參數表(可能是空的),如空的),如quadrilateral1. move(15, 20) 。接收消息的實例執(zhí)行消息中指定的操作,并將接收消息的實例執(zhí)行
13、消息中指定的操作,并將形式參數與參數表中相應的值結合起來。形式參數與參數表中相應的值結合起來。軟件工程軟件工程1414消息消息(messagemessage)軟件工程軟件工程1515繼承(繼承(inheritanceinheritance) 如果某幾個類之間具有共性的東西如果某幾個類之間具有共性的東西 ( (屬性和行屬性和行為為) ),抽取出來放在一個泛化類中,將各個類的,抽取出來放在一個泛化類中,將各個類的特有的東西放在特化類中分別描述,則可建立特有的東西放在特化類中分別描述,則可建立起特化類對泛化類的繼承。起特化類對泛化類的繼承。 繼承是使用已有的類定義做為基礎建立新類的繼承是使用已有的類
14、定義做為基礎建立新類的定義技術。定義技術。 已有的類可當做泛化類(父類)來引用,則新已有的類可當做泛化類(父類)來引用,則新類相應地可當做特化類(子類)來引用。類相應地可當做特化類(子類)來引用。軟件工程軟件工程1616n建立繼承結構的好處:建立繼承結構的好處: 易編程、易理解易編程、易理解 代碼短代碼短, , 結構清晰結構清晰 易修改易修改 共同部分只要在一處修改即可共同部分只要在一處修改即可 易增加新類易增加新類 只須描述不同部分只須描述不同部分n怎樣建立一個好的繼承層次怎樣建立一個好的繼承層次 類可以從父類繼承,父類又可以從它的父類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼
15、承結構。類繼承,形成多層次的繼承結構。 當增加一個新類時,不一定在最低層,可當增加一個新類時,不一定在最低層,可能需要插在中間層,這樣可能需要調整原能需要插在中間層,這樣可能需要調整原來的層次結構。來的層次結構。軟件工程軟件工程1717建立一個新類建立一個新類起重車起重車。它的。它的底底盤盤、發(fā)動機發(fā)動機、輪胎輪胎、驅動裝置驅動裝置等都在已有類等都在已有類汽車汽車中。關系如中。關系如右圖所示。新類是已有類的特右圖所示。新類是已有類的特殊情形。這時直接讓殊情形。這時直接讓起重車起重車類類作為作為汽車汽車類的子類即可。類的子類即可。起重車起重車類類汽車類汽車類汽車汽車載重車載重車大轎車大轎車救火車
16、救火車起重車起重車軟件工程軟件工程1818增加一個新類增加一個新類拖拉機拖拉機。它的。它的底盤底盤、發(fā)動機發(fā)動機等與等與汽車汽車不同,但不同,但驅動裝置驅動裝置、輪胎輪胎等與等與汽車汽車相同。相同。調整繼承結構。建立一個新的一般的調整繼承結構。建立一個新的一般的車輛類車輛類,把把拖拉機拖拉機與與汽車類汽車類的共性放到的共性放到車輛類車輛類中,中,拖拉拖拉機機與與汽車類汽車類都成為都成為車輛類車輛類的子類。的子類。車輛車輛是抽象類,相關操作到子類是抽象類,相關操作到子類汽車汽車找找汽車汽車拖拉機拖拉機車輛車輛汽車汽車拖拉機拖拉機軟件工程軟件工程1919另一種情形是在已有類的基礎上加入新類,另一種
17、情形是在已有類的基礎上加入新類,使得新類成為已有類的泛化類。使得新類成為已有類的泛化類。例如,已經存在例如,已經存在三角形類三角形類,四邊形類四邊形類,想加,想加入一個入一個多邊形類多邊形類,并使之成為,并使之成為三角形三角形和和四邊四邊形類形類的泛化類。的泛化類。三角形類三角形類四邊形類四邊形類多多邊邊形形類類六邊形六邊形多邊形多邊形四邊形四邊形三角形三角形軟件工程軟件工程2020前三個情況主要是通過查找(應用領域)類庫,前三個情況主要是通過查找(應用領域)類庫,找到可以找到可以原封不動地繼承的類原封不動地繼承的類或可以或可以通過調整通過調整繼承層次結構繼承的類繼承層次結構繼承的類。但如果在
18、已有的繼承。但如果在已有的繼承層次中找不到可以繼承的已有類,就從新開始層次中找不到可以繼承的已有類,就從新開始完全獨立地建立一個類。完全獨立地建立一個類。n如果一個類需要用到多個現有類的特征,可以如果一個類需要用到多個現有類的特征,可以從多個類中繼承,稱為從多個類中繼承,稱為多繼承多繼承。n例如例如退休教師退休教師是繼承是繼承退休者退休者和和教師教師這兩個類的這兩個類的某些特征或行為而得到的一個新類。某些特征或行為而得到的一個新類。多繼承多繼承軟件工程軟件工程2121多態(tài)性和動態(tài)綁定多態(tài)性和動態(tài)綁定n對象互相通信,即一個對象發(fā)消息給另一個對對象互相通信,即一個對象發(fā)消息給另一個對象,執(zhí)行某些行
19、為或又發(fā)消息給另外的對象,象,執(zhí)行某些行為或又發(fā)消息給另外的對象,從而執(zhí)行系統(tǒng)的功能。從而執(zhí)行系統(tǒng)的功能。退休者退休者教師教師退休教師退休教師軟件工程軟件工程2222多態(tài)性多態(tài)性指同名的函數或操作可在不同類型的指同名的函數或操作可在不同類型的對象中有各自相應的實現。例如對象中有各自相應的實現。例如v 整數整數“+”:整數加法:整數加法v 浮點數浮點數“+”:浮點數加法:浮點數加法v 字符串字符串“+”:字符串連接:字符串連接v 點點“+”:兩個點的坐標位置分別疊加:兩個點的坐標位置分別疊加具有多態(tài)的函數或操作在運行時才根據實際具有多態(tài)的函數或操作在運行時才根據實際的對象類型,執(zhí)行相應實現程序的
20、連接,此的對象類型,執(zhí)行相應實現程序的連接,此即動態(tài)綁定。即動態(tài)綁定。軟件工程軟件工程2323n例如,想要在屏幕上畫一系列多邊形,例如,想要在屏幕上畫一系列多邊形,多態(tài)多態(tài)性性允許發(fā)送消息允許發(fā)送消息draw,根據消息接收對象的,根據消息接收對象的類型不同,畫出不同的多邊形。類型不同,畫出不同的多邊形。ndraw針對的是一系列的類型(類族)而不僅針對的是一系列的類型(類族)而不僅僅是一個類型。僅是一個類型。n多態(tài)性的實現有多態(tài)性的實現有 2 種:種: 利用利用繼承繼承關系,把所有數據類型當作一個關系,把所有數據類型當作一個抽象數據類型的子類型。抽象數據類型的子類型。軟件工程軟件工程2424 利
21、用利用模板模板機制,把所有可能的數據類型用機制,把所有可能的數據類型用一個參數化的數據類型來代替。一個參數化的數據類型來代替。n動態(tài)綁定保證在程序執(zhí)行時實施與對象動態(tài)綁定保證在程序執(zhí)行時實施與對象 P 連連接的操作。如果接的操作。如果 P 是是矩形類矩形類的實例,則執(zhí)行的實例,則執(zhí)行與與矩形矩形連接的操作,如果連接的操作,如果 P 是是三角形類三角形類的實的實例,則執(zhí)行與例,則執(zhí)行與三角形三角形連接的操作。連接的操作。n動態(tài)綁定把函數調用與目標代碼塊的連接延動態(tài)綁定把函數調用與目標代碼塊的連接延遲到運行時進行。這樣,只有發(fā)送消息時才遲到運行時進行。這樣,只有發(fā)送消息時才與接收消息實例的一個操作
22、綁定。與接收消息實例的一個操作綁定。軟件工程軟件工程25256.2 6.2 統(tǒng)一建模語言統(tǒng)一建模語言UMLUMLnUML 是是Unified Modeling Language的縮寫。的縮寫。 它它是一種標準的語言,以直觀的表述、定義、構造是一種標準的語言,以直觀的表述、定義、構造和文檔化軟件為主的系統(tǒng)的工作制品。和文檔化軟件為主的系統(tǒng)的工作制品。nUML聚集了來自下列建模的精髓:聚集了來自下列建模的精髓: 數據建模(實體關系圖數據建模(實體關系圖ERD) 業(yè)務建模業(yè)務建模 (工作流)(工作流) 對象建模對象建模 構件建模構件建模n它可用于軟件生命周期各個過程,并適用于各種它可用于軟件生命周期
23、各個過程,并適用于各種不同的實現技術。不同的實現技術。軟件工程軟件工程2626UMLUML的特點的特點n統(tǒng)一標準統(tǒng)一標準 融合了當前一些流行的面向對象開發(fā)方法融合了當前一些流行的面向對象開發(fā)方法的主要概念和技術,成為一種面向對象的的主要概念和技術,成為一種面向對象的標準化的統(tǒng)一建模語言。標準化的統(tǒng)一建模語言。 提供了標準的面向對象的模型元素的定義提供了標準的面向對象的模型元素的定義和表示法,有標準的語言工具可用。和表示法,有標準的語言工具可用。 已成為工業(yè)標準化組織已成為工業(yè)標準化組織OMG的正式標準。的正式標準。n面向對象面向對象 支持面向對象的主要概念,提供了一批基支持面向對象的主要概念,
24、提供了一批基本的模型元素的表示圖形和方法。本的模型元素的表示圖形和方法。軟件工程軟件工程2727n可視化,表示能力強大可視化,表示能力強大 一種圖形化語言,系統(tǒng)的邏輯模型和實現一種圖形化語言,系統(tǒng)的邏輯模型和實現模型都能用模型都能用UML的模型圖形清晰地表示。的模型圖形清晰地表示。 可以處理與軟件的說明和文檔有關的問題。可以處理與軟件的說明和文檔有關的問題。 提供了語言的擴展機制,用戶可以根據需提供了語言的擴展機制,用戶可以根據需要增加定義自己的衍型(要增加定義自己的衍型(StereoType)、標)、標記值和約束等。記值和約束等。 可用于各種復雜類型的軟件系統(tǒng)的建模。可用于各種復雜類型的軟件
25、系統(tǒng)的建模。n獨立于過程獨立于過程 系統(tǒng)建模語言,獨立于開發(fā)過程。系統(tǒng)建模語言,獨立于開發(fā)過程。軟件工程軟件工程2828n容易掌握使用容易掌握使用 概念明確,建模表示法簡潔明了,圖形結構概念明確,建模表示法簡潔明了,圖形結構清晰,容易掌握使用。清晰,容易掌握使用。 著重學習三個方面的主要內容:著重學習三個方面的主要內容: (1) UML的基本模型元素的基本模型元素 (2) 組織模型元素的規(guī)則組織模型元素的規(guī)則 (3) UML語言的公共機制語言的公共機制n與程序設計語言的關系與程序設計語言的關系 用用Java,C+ 等編程語言可實現一個系統(tǒng)。等編程語言可實現一個系統(tǒng)。 一些一些CASE工具可以根
26、據工具可以根據 UML所建立的系統(tǒng)所建立的系統(tǒng)模型來產生模型來產生Java、C+ 等代碼框架。等代碼框架。軟件工程軟件工程2929UMLUML的定義的定義nUML定義有兩個組成部分:語義和表示法。定義有兩個組成部分:語義和表示法。n語義語義用自然語言描述,用自然語言描述,表示法表示法定義了定義了UML的可的可視化標準表示符號,這決定了視化標準表示符號,這決定了UML是一種可視是一種可視化的建模語言?;慕UZ言。n在語義上,模型是元模型的實例。在語義上,模型是元模型的實例。UML定義給定義給出了語法結構的精確定義。出了語法結構的精確定義。n使用使用UML時,要從不同的角度觀察系統(tǒng),為此時,要從
27、不同的角度觀察系統(tǒng),為此定義了概念定義了概念“視圖視圖”。視圖是對系統(tǒng)的模型在某。視圖是對系統(tǒng)的模型在某方面的投影,注重于系統(tǒng)的某個方面。方面的投影,注重于系統(tǒng)的某個方面。軟件工程軟件工程3030UMLUML的構成的構成nUML的三個主要組成元素的三個主要組成元素基本構造塊基本構造塊(basic building blocks )組織構造塊的組織構造塊的規(guī)則規(guī)則(rules)運用于整個運用于整個UML的的公共機制公共機制(common mechanisms)nUML包括三種基本構造塊包括三種基本構造塊:事物(事物(things)關系(關系(relationships)1) 圖(圖(diagra
28、ms)軟件工程軟件工程3131UML UML 事物事物 結構事物結構事物Class(類)(類)Interface(接口)(接口) 描述了一個類或構件的描述了一個類或構件的服務(操作)集。服務(操作)集。ISpelling 類名類名屬性屬性操作操作open( )close( )move( )display( )originsizeWindow操作操作屬性屬性類名類名軟件工程軟件工程3232Collaboration(協作)(協作) 合作完成某個特定任務的一組類及其關聯的合作完成某個特定任務的一組類及其關聯的集合,用于對用例的實現建模。集合,用于對用例的實現建模。Use Case(用例)(用例)
29、表示系統(tǒng)想要實現的行為,不關心這些行為表示系統(tǒng)想要實現的行為,不關心這些行為是怎樣實現的。是怎樣實現的。Place OrderOrderManagement用例用例協作協作實現實現實現實現協作協作用例用例軟件工程軟件工程3333Active Class(主動類)(主動類) 與一般類相同,但它至少擁有一個進程或與一般類相同,但它至少擁有一個進程或線程,故能夠啟動控制活動。線程,故能夠啟動控制活動。Component(構件)(構件) 系統(tǒng)中物理的、可替系統(tǒng)中物理的、可替代的部件。代的部件。Orderform.java suspend()flush()EventManager軟件工程軟件工程3434
30、Node(節(jié)點)(節(jié)點) 系統(tǒng)在運行時存在的物理元素。系統(tǒng)在運行時存在的物理元素。數據庫數據庫服務器服務器應用應用服務器服務器課程課程管理管理成績成績管理管理軟件工程軟件工程3535UMLUML事物事物 行為事物行為事物Interaction(交互)(交互)n交互由在特定的上下文環(huán)境中共同完成一定任交互由在特定的上下文環(huán)境中共同完成一定任務的一組對象之間傳遞的消息組成。務的一組對象之間傳遞的消息組成。n交互涉及的元素包括消息、動作序列和鏈。交互涉及的元素包括消息、動作序列和鏈。p:Person:CompanyAssign(development)消息消息有名對象有名對象匿名對象匿名對象有名對象
31、有名對象匿名對象匿名對象消息消息軟件工程軟件工程3636State Machine(狀態(tài)機)(狀態(tài)機) 狀態(tài)機描述了一個對象或一個交互在生存狀態(tài)機描述了一個對象或一個交互在生存周期內響應事件所經歷的狀態(tài)序列。周期內響應事件所經歷的狀態(tài)序列。 狀態(tài)機涉及的元素包括狀態(tài)、轉換、事件狀態(tài)機涉及的元素包括狀態(tài)、轉換、事件活動等?;顒拥?。initializingcommandidleKeypressFinishedExit軟件工程軟件工程3737UMLUML事物事物 分組事物分組事物package(包)(包) 包是把元素組織成組的機制,結構事物、行包是把元素組織成組的機制,結構事物、行為事物甚至其他分組
32、事物都可以放進包內。為事物甚至其他分組事物都可以放進包內。 包不象構件(僅在運行時存在),它純粹是包不象構件(僅在運行時存在),它純粹是概念上的(即它僅在開發(fā)時存在)。概念上的(即它僅在開發(fā)時存在)。用戶接口用戶接口包包業(yè)務對象業(yè)務對象包包應用包應用包軟件工程軟件工程3838UMLUML事物事物 注釋事物注釋事物Note(注釋)(注釋) 依附于一個元素或一組元素之上,對其進依附于一個元素或一組元素之上,對其進行約束或解釋的簡單符號。行約束或解釋的簡單符號。CashAccountpresentValue()See policy8-5-96.doc for details about these
33、algorithms.軟件工程軟件工程3939UML RelationshipsUML Relationships(關系)(關系)nUML中有中有 4 種關系:種關系: 依賴依賴 關聯關聯 泛化泛化 實現實現 n關系特征:關系特征: 這四種關系是這四種關系是UML模型中可以包含的基本模型中可以包含的基本關系。關系。 它們也有變體。例如,依賴的變體有細化、它們也有變體。例如,依賴的變體有細化、跟蹤、包含和延伸。跟蹤、包含和延伸。軟件工程軟件工程4040依賴(依賴(Dependency) 兩個事物之間的語義關系,其中目標事物發(fā)兩個事物之間的語義關系,其中目標事物發(fā)生變化會影響源事物的語義。生變化會
34、影響源事物的語義。 圖中虛線箭頭從圖中虛線箭頭從源源事物指向事物指向目標目標事物,表示事物,表示源事物依賴于目標事物。源事物依賴于目標事物。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator軟件工程軟件工程4141n兩個類之間的依賴關系可以是:兩個類之間的依賴關系可以是: 源類源類訪問訪問定義在目標類內部的數據值;定義在目標類內部的數據值; 源類的操作源類的操作調用調用了定義在目標類的操作;了定義在目標類的操作; 源類的返回類或參數是目標類的源類的返回類或參數是目標類的實例實例;n如果在順序圖中的兩個對象存在消息的傳送,如果在順序
35、圖中的兩個對象存在消息的傳送,而且它們之間沒有結構方面的連接,可以在類而且它們之間沒有結構方面的連接,可以在類圖上用依賴關系建模。圖上用依賴關系建模。n依賴的變體包含特定的語義,表明類之間的關依賴的變體包含特定的語義,表明類之間的關系、包之間的關系、用例之間的關系、對象之系、包之間的關系、用例之間的關系、對象之間的關系、建模元素與模型之間的關系等。間的關系、建模元素與模型之間的關系等。軟件工程軟件工程4242n類之間的依賴關系類之間的依賴關系可以是:可以是:v 友元依賴友元依賴 v目標類(如二叉樹)視源類(如迭代器)目標類(如二叉樹)視源類(如迭代器)為友元,允許源類訪問目標類的所有私有屬為友
36、元,允許源類訪問目標類的所有私有屬性和操作。性和操作。v 導出依賴導出依賴 a.兩個類或對象如果存在導出依賴,則表兩個類或對象如果存在導出依賴,則表明源類(如年齡)可以從目標類(如出生年明源類(如年齡)可以從目標類(如出生年月)通過計算導出。月)通過計算導出。IteratorBinaryTreeAgeBirthDay軟件工程軟件工程4343v 細化依賴細化依賴 在類圖中表示同一模型的不同詳細程度的規(guī)在類圖中表示同一模型的不同詳細程度的規(guī)格說明,源類比目標類更為詳細。格說明,源類比目標類更為詳細。v 實例化依賴實例化依賴 若要強調一個類的對象是由另一個類的對象若要強調一個類的對象是由另一個類的對
37、象創(chuàng)建的,可用實例化依賴。它表明源類創(chuàng)建創(chuàng)建的,可用實例化依賴。它表明源類創(chuàng)建了目標類的一個實例。了目標類的一個實例。Chessboardfrom optimizedchessboardfrom simpleArrayStack軟件工程軟件工程4444v 使用依賴使用依賴 不加任何修飾的依賴即為使用依賴。也可用不加任何修飾的依賴即為使用依賴。也可用修飾修飾強調源類的語義依賴于目標類強調源類的語義依賴于目標類的具有共有可見性的構成的語義。的具有共有可見性的構成的語義。v 綁定(綁定(Binding)依賴)依賴v這種依賴關系中的目標類是模板類,源這種依賴關系中的目標類是模板類,源類是從模板實例化的
38、類。類是從模板實例化的類。Binary SearchTreeBinary Tree Stack Stack軟件工程軟件工程4545n包之間的依賴關系包之間的依賴關系可以是:可以是:訪問依賴訪問依賴 它表明源包被賦予了可訪問目標包的權它表明源包被賦予了可訪問目標包的權限。限。導入依賴導入依賴 a.它表明了源包可以訪問目標包里的元素,它表明了源包可以訪問目標包里的元素,但各個包有自己獨立的命名空間,這意味著屬但各個包有自己獨立的命名空間,這意味著屬于不同包的兩個元素可以重名。導入依賴可以于不同包的兩個元素可以重名。導入依賴可以使目標包內的公共可見元素進入源包的命名空使目標包內的公共可見元素進入源包
39、的命名空間。間。sourcetargetsourcetarget軟件工程軟件工程4646n用例之間的依賴關系用例之間的依賴關系可以是:可以是:包含依賴包含依賴 它表明源用例顯式地包含目標用例作為它表明源用例顯式地包含目標用例作為其行為的一部分。此時將源用例稱為其行為的一部分。此時將源用例稱為基用例基用例,目標用例稱為目標用例稱為內含用例內含用例。如果兩個用例之間具有包含依賴關系,如果兩個用例之間具有包含依賴關系,則表明基用例的動作序列中有特定的步驟把內則表明基用例的動作序列中有特定的步驟把內含用例的動作序列包含進來。含用例的動作序列包含進來。a.擴展依賴擴展依賴 base use casein
40、clusion use case軟件工程軟件工程4747它表明源用例擴展了目標用例的行為。此時,它表明源用例擴展了目標用例的行為。此時,源用例稱為源用例稱為基用例基用例,目標用例稱為,目標用例稱為擴展用例擴展用例。擴展用例在特定條件下為基用例提供附加的動擴展用例在特定條件下為基用例提供附加的動態(tài)行為。例如,在人機交互過程中出現差錯時態(tài)行為。例如,在人機交互過程中出現差錯時進行的異常處理即為擴展動作。進行的異常處理即為擴展動作。擴展依賴與包含依賴的區(qū)別在于,如果僅將擴擴展依賴與包含依賴的區(qū)別在于,如果僅將擴展從基用例地動作序列中去除,基用例仍然是展從基用例地動作序列中去除,基用例仍然是語義完備的
41、,即它的執(zhí)行仍將產生有意義的結語義完備的,即它的執(zhí)行仍將產生有意義的結果。而包含依賴則不然。果。而包含依賴則不然。base use caseextension use case軟件工程軟件工程4848n對象之間的依賴關系對象之間的依賴關系可以是:可以是:v 轉換依賴轉換依賴 v當需要在交互圖上表示對象狀態(tài)的轉換當需要在交互圖上表示對象狀態(tài)的轉換時可以用轉換依賴。主要強調由于消息而導致時可以用轉換依賴。主要強調由于消息而導致對象狀態(tài)的改變。轉換依賴連接的目標對象和對象狀態(tài)的改變。轉換依賴連接的目標對象和源對象是同一個對象。源對象是同一個對象。v 調用依賴調用依賴 v當需要在交互圖或對象圖上顯式強
42、調對當需要在交互圖或對象圖上顯式強調對象之間或操作之間的調用關系時要用調用依賴。象之間或操作之間的調用關系時要用調用依賴。它表明源對象引用了目標對象的操作,或源操它表明源對象引用了目標對象的操作,或源操作引用了目標操作。作引用了目標操作。a.復制依賴復制依賴 軟件工程軟件工程4949為了在交互圖或活動圖上描述對象復制的動作為了在交互圖或活動圖上描述對象復制的動作可以采用復制依賴。它連接兩個對象,目標對可以采用復制依賴。它連接兩個對象,目標對象是源對象的完全相同而又獨立的副本。象是源對象的完全相同而又獨立的副本。v 發(fā)送依賴發(fā)送依賴 它連接一個對象(在源端)和一個消息(在目它連接一個對象(在源端
43、)和一個消息(在目標端),表明源對象在交互過程中發(fā)送了一個標端),表明源對象在交互過程中發(fā)送了一個消息,可以用在狀態(tài)機的描述中。消息,可以用在狀態(tài)機的描述中。它針對內嵌有狀態(tài)機的對象,可用來描述如何它針對內嵌有狀態(tài)機的對象,可用來描述如何通過發(fā)送信號以產生某種事件的動作。通過發(fā)送信號以產生某種事件的動作。n建模元素與模型之間的依賴關系建模元素與模型之間的依賴關系是:是:v 回溯依賴回溯依賴 d.它連接兩個模型元素,表明目標是源的歷它連接兩個模型元素,表明目標是源的歷史上的前驅。如交互和協作就是從用例導出的。史上的前驅。如交互和協作就是從用例導出的。軟件工程軟件工程5050關聯(關聯(Assoc
44、iation) 關聯關聯是一種結構關系,它描述一組鏈,這是一種結構關系,它描述一組鏈,這些鏈是類之間或類與接口之間的連接。通些鏈是類之間或類與接口之間的連接。通過這種連接,一個對象可以訪問另一個對過這種連接,一個對象可以訪問另一個對象的屬性或調用另一個對象的操作。象的屬性或調用另一個對象的操作。 關聯是雙向的,其中的角色代表一個類的關聯是雙向的,其中的角色代表一個類的對象在另一個類中的存在。對象在另一個類中的存在。 聚合(聚合(aggregation)是一種特殊類型的關是一種特殊類型的關聯,它描述了整體和部分間的結構關系。聯,它描述了整體和部分間的結構關系。employeremployee0.
45、1*軟件工程軟件工程5151 聚合關系在整體端有一個菱形作為標記。聚合關系在整體端有一個菱形作為標記。 復合聚合(復合聚合(composite aggregate) 是一種特是一種特殊的聚合關系,它表明整體對象與部分對象殊的聚合關系,它表明整體對象與部分對象具有相同的生存周期。具有相同的生存周期。3)角色的重復度(角色的重復度(Multiplicity)復合聚合復合聚合, ,雙向導航雙向導航0.*0.10.*整體整體 類名類名部分部分 類名類名2部分部分 類名類名1聚合聚合, ,單向導航單向導航0.1軟件工程軟件工程5252表明角色在關聯關系中出現的次數。如表明角色在關聯關系中出現的次數。如1
46、,0.1,1.*,*等。等。 導航(導航(navigation)一般默認關聯關系是雙向的,而導航則限制一般默認關聯關系是雙向的,而導航則限制關聯關系到一個方向。在圖中用箭頭指明方關聯關系到一個方向。在圖中用箭頭指明方向。向。 限定關聯(限定關聯(qualification)如教師與學生的關系由課程的標識決定。如教師與學生的關系由課程的標識決定。companydepartment11.*軟件工程軟件工程5353 關聯類關聯類關聯關系是兩個類之間的語義連接。在比較關聯關系是兩個類之間的語義連接。在比較簡單的情況下,關聯關系的語義用關聯關系簡單的情況下,關聯關系的語義用關聯關系的名字來概括。的名字來
47、概括。但在某些情況下,需要對關但在某些情況下,需要對關聯關系的語義做詳細的定義、存儲和訪問,聯關系的語義做詳細的定義、存儲和訪問,為此可以建立關聯類,為此可以建立關聯類,描述關聯的屬性描述關聯的屬性。teacherstudent1*教師教課教師教課nCourseIDcourse學生選課學生選課教師教學生教師教學生1*限定類限定類目標類目標類軟件工程軟件工程5454v泛化(泛化(Generalization) 一般化一般化特殊化特殊化的關系(繼承)。表明特化的關系(繼承)。表明特化類共享一個或多個泛化類的結構和行為。類共享一個或多個泛化類的結構和行為。 如果兩個類被定義為具有泛化關系,就意味如果
48、兩個類被定義為具有泛化關系,就意味著在任何泛化類(父類)的對象出現的地方,著在任何泛化類(父類)的對象出現的地方,都可以用特化類(子類)來代替。都可以用特化類(子類)來代替。descriptiondateHiredsalaryjobcompanycompany11.*employeremployee軟件工程軟件工程5555EventConsoleWindowDialogBoxControl Windowopen()close()move()display()handleEvent()泛化泛化關聯關聯依賴依賴軟件工程軟件工程5656 繼承的多態(tài)性表明子類的操作的動態(tài)行為繼承的多態(tài)性表明子類的操作
49、的動態(tài)行為可代替父類的可代替父類的同名操作同名操作的動態(tài)行為。的動態(tài)行為。 泛化關系的變體:泛化關系的變體:實現繼承實現繼承。它規(guī)定其中。它規(guī)定其中的子類可繼承其父類的結構和行為,但其的子類可繼承其父類的結構和行為,但其可見性成為私有,也不支持父類的接口。可見性成為私有,也不支持父類的接口。實現(實現(Realization) 類之間的語義關系,其中的一個類元指定類之間的語義關系,其中的一個類元指定了由另一個類保證執(zhí)行的契約。了由另一個類保證執(zhí)行的契約。 兩種情況出現實現關系:兩種情況出現實現關系: 1)在接口和實現它們的類或構件之間;)在接口和實現它們的類或構件之間; 2)在用例和它們的協作
50、之間。)在用例和它們的協作之間。軟件工程軟件工程5757Place OrderOrderManagement用例用例實現實現協作協作軟件工程軟件工程5858類類屬性屬性操作操作對象對象屬性值屬性值操作操作接口接口用例用例構件構件節(jié)點節(jié)點狀態(tài)機狀態(tài)機包包注釋注釋依賴依賴關聯關聯泛化泛化實現實現聚合聚合復合復合 模型中主要的圖形元素模型中主要的圖形元素軟件工程軟件工程5959UMLUML模型的圖形模型的圖形Use CaseDiagramsUse CaseDiagramsScenarioDiagramsScenarioDiagramsStateDiagramsStateDiagramsCompone
51、ntDiagramsComponentDiagramsStateDiagramsStateDiagrams對象圖對象圖ScenarioDiagramsScenarioDiagramsUse CaseDiagramsUse CaseDiagramsStateDiagramsStateDiagrams模型模型軟件工程軟件工程6060UMLUML圖的作用圖的作用nUML 可以用于可以用于: 使用用例(使用用例(use cases)和參與者()和參與者(actors)描)描述系統(tǒng)的邊界和它的主要功能。述系統(tǒng)的邊界和它的主要功能。 使用交互圖(順序圖、協作圖)具體描述用使用交互圖(順序圖、協作圖)具體描
52、述用例的實現。例的實現。 使用類圖表示系統(tǒng)的靜態(tài)結構。使用類圖表示系統(tǒng)的靜態(tài)結構。 是用狀態(tài)轉換圖模型化對象的行為。是用狀態(tài)轉換圖模型化對象的行為。 使用構件圖和部署圖展現系統(tǒng)的物理實現體使用構件圖和部署圖展現系統(tǒng)的物理實現體系結構。系結構。 使用衍型(使用衍型(stereotypes)擴展建模能力。)擴展建模能力。軟件工程軟件工程6161UMLUML工作的實例工作的實例n某大學用計算機管理的注冊(某大學用計算機管理的注冊(registration)系統(tǒng))系統(tǒng) 注冊管理員設置一個學期的所有課程信息注冊管理員設置一個學期的所有課程信息 一個課程可以有多個課程選課單。一個課程可以有多個課程選課單。
53、 學生選擇學生選擇4門主修課和門主修課和2門選修課門選修課 當某學生在學期注冊了,則記賬(當某學生在學期注冊了,則記賬(billing)系統(tǒng))系統(tǒng)會得到通知,在該學期給該學生開設賬號。會得到通知,在該學期給該學生開設賬號。 學生在注冊后一段時間可以使用系統(tǒng)增加學生在注冊后一段時間可以使用系統(tǒng)增加/撤銷所撤銷所選課程。選課程。 教授使用這個系統(tǒng)接受他們課程的選課名冊。教授使用這個系統(tǒng)接受他們課程的選課名冊。 注冊系統(tǒng)的用戶將得到密碼(注冊系統(tǒng)的用戶將得到密碼(password),用于),用于登錄的確認。登錄的確認。軟件工程軟件工程6262用例圖(用例圖(use case diagramuse c
54、ase diagram)n用例圖展現了一組用例、參與者(用例圖展現了一組用例、參與者(Actor)以及它們)以及它們之間的關系。之間的關系。n用例圖通常包括用例、參與者和擴展關系、包含關用例圖通常包括用例、參與者和擴展關系、包含關系等。系等。n用例圖的功能是支持系統(tǒng)的行為,即該系統(tǒng)在它的用例圖的功能是支持系統(tǒng)的行為,即該系統(tǒng)在它的上下文環(huán)境中所提供的外部可見服務。上下文環(huán)境中所提供的外部可見服務。n用例圖的兩種使用方式:用例圖的兩種使用方式:上下文環(huán)境建模上下文環(huán)境建模:說明位于系統(tǒng)之外并與系統(tǒng)進:說明位于系統(tǒng)之外并與系統(tǒng)進行交互的參與者以及他們所扮演的角色的含義。行交互的參與者以及他們所扮演
55、的角色的含義。功能需求建模功能需求建模:說明系統(tǒng)想要的行為。:說明系統(tǒng)想要的行為。 軟件工程軟件工程6363參與者(參與者(ActorsActors)n參與者定義了一組與系統(tǒng)有信息交互關系的人、參與者定義了一組與系統(tǒng)有信息交互關系的人、事、物。它是用例的客戶并與用例進行交互。事、物。它是用例的客戶并與用例進行交互。一個參與者針對每一個與之通信的用例扮演一一個參與者針對每一個與之通信的用例扮演一種角色。種角色。n角色可以是人或外部系統(tǒng)。它定義了系統(tǒng)的邊角色可以是人或外部系統(tǒng)。它定義了系統(tǒng)的邊界。界。軟件工程軟件工程6464用例(用例(Use CasesUse Cases)n一個用例是一種系統(tǒng)應表
56、現行為的模式一個用例是一種系統(tǒng)應表現行為的模式:每個用例是一個參與者與系統(tǒng)在一次對話中所執(zhí)每個用例是一個參與者與系統(tǒng)在一次對話中所執(zhí)行的相關事務的序列。行的相關事務的序列。 n要調查參與者以確定他們的要求:要調查參與者以確定他們的要求:Registrar(注冊管理員)(注冊管理員) 維護所有課程信息維護所有課程信息Professor(教授)(教授) 要求選課名單要求選課名單Student(學生)(學生) 維護選課表維護選課表Billing System(記賬系統(tǒng))(記賬系統(tǒng)) 從注冊中心接受從注冊中心接受記賬信息記賬信息軟件工程軟件工程6565用例的規(guī)格說明用例的規(guī)格說明n為每個用例建立一個規(guī)
57、格說明,描述用例的事件為每個用例建立一個規(guī)格說明,描述用例的事件流(流(flow of event)。)。從參與者角度編寫從參與者角度編寫n它包含在用例執(zhí)行時系統(tǒng)必須為參與者提供的各它包含在用例執(zhí)行時系統(tǒng)必須為參與者提供的各種細節(jié)。種細節(jié)。n典型的內容有典型的內容有用例如何開始和結束用例如何開始和結束基本的事件流基本的事件流候補的事件流候補的事件流異常的事件流異常的事件流軟件工程軟件工程6666保持所有課程信息保持所有課程信息的事件流的事件流n用例開始于注冊管理員登錄到注冊系統(tǒng)并敲入他用例開始于注冊管理員登錄到注冊系統(tǒng)并敲入他的密碼時。系統(tǒng)檢驗此密碼是否有效,并提示注的密碼時。系統(tǒng)檢驗此密碼是
58、否有效,并提示注冊管理員選擇當前學期或下個學期。注冊管理員冊管理員選擇當前學期或下個學期。注冊管理員敲入他期望的學期。然后系統(tǒng)提示選擇他所期望敲入他期望的學期。然后系統(tǒng)提示選擇他所期望的活動,包括:的活動,包括:Add,Delete,Review或或Quit。如果選擇如果選擇Add,則執(zhí)行增加課程的子事件流。,則執(zhí)行增加課程的子事件流。如果選擇如果選擇Delete,則執(zhí)行刪除課程的子事件流。,則執(zhí)行刪除課程的子事件流。如果選擇如果選擇Review,則執(zhí)行審查所有課程信息的子,則執(zhí)行審查所有課程信息的子事件流。事件流。a)如果選擇如果選擇Quit,則用例終止。,則用例終止。軟件工程軟件工程676
59、7register courseregister course(注冊課程)(注冊課程)用例用例n用例允許學生在本學期注冊他的課程申請。用例允許學生在本學期注冊他的課程申請。n如果在本學期開學的一段時間內學生作出如果在本學期開學的一段時間內學生作出add或或drop的變更,他還可修改和刪除他的課程選的變更,他還可修改和刪除他的課程選擇。擇。n課程目錄系統(tǒng)提交一個表格,列出本學期所有課程目錄系統(tǒng)提交一個表格,列出本學期所有的課程申請。的課程申請。n基本事件流:基本事件流:a) 當學生想要注冊課程申請或者想要改變他的當學生想要注冊課程申請或者想要改變他的已有的選課表時,本用例開始。已有的選課表時,本
60、用例開始。軟件工程軟件工程6868 系統(tǒng)要求學生具體說明他可能會執(zhí)行的功系統(tǒng)要求學生具體說明他可能會執(zhí)行的功能(建立、更新或者刪除一個選課表)。能(建立、更新或者刪除一個選課表)。 一旦學生提交了請求信息,將執(zhí)行某一個一旦學生提交了請求信息,將執(zhí)行某一個子流。子流。 如果學生選擇如果學生選擇“建立建立一個選課表一個選課表”,則,則執(zhí)行一個執(zhí)行一個“建立建立”子事件流的服務。子事件流的服務。 如果學生選擇如果學生選擇“更新更新一個選課表一個選課表”,則,則執(zhí)行一個執(zhí)行一個“更新更新”子事件流的服務。子事件流的服務。 如果學生選擇如果學生選擇“刪除刪除一個選課表一個選課表”,則,則執(zhí)行一個執(zhí)行一個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班費管理系統(tǒng)的課程設計
- 班組培訓課程設計
- 2024年封口機械項目申請報告
- 玻璃網行業(yè)研究報告
- 玻璃幕墻別墅施工方案
- 玻璃廠廢氣處理課程設計
- 愛情的課程設計
- 愛國研學課程設計
- 爆破安全課程設計
- 濱湖臨時施工圍擋施工方案
- 技術合作協議技術引進
- 2024年抗菌藥物業(yè)務學習培訓課件
- 護理操作中法律風險防控
- GB 30253-2024永磁同步電動機能效限定值及能效等級
- 2024年福建福州市倉山區(qū)民政局招聘5人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 合肥市2023-2024學年七年級上學期期中語文考試卷
- 相反國課件-大班
- 歷史西漢建立和“文景之治”課件 2024-2025學年統(tǒng)編版七年級歷史上冊
- 中核集團在線測評多少道題
- 語文第13課《紀念白求恩》課件-2024-2025學年統(tǒng)編版語文七年級上冊
- 人教版(2024新版)七年級上冊英語 Unit 1 You and Me 單元測試卷(含答案解析)
評論
0/150
提交評論