軟件工程實踐課件_第1頁
軟件工程實踐課件_第2頁
軟件工程實踐課件_第3頁
軟件工程實踐課件_第4頁
軟件工程實踐課件_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

北京理工大學(xué)

軟件工程實踐

吳際

北京航空航天大學(xué)

第十二講

面向?qū)ο蠓椒ㄅcUML介紹

內(nèi)容和目的

■我們的座標(biāo)

■面向?qū)ο蠓椒?/p>

■面向?qū)ο螅耗芘c不能

-統(tǒng)一建模語言UML

我們的座標(biāo)

■應(yīng)用開發(fā)的變化

-開發(fā)工具和手段的發(fā)展

-開發(fā)方法和技術(shù)的發(fā)展

《應(yīng)用開發(fā)的變化

■70年代:小型機(或服務(wù)器)上的數(shù)學(xué)程序

■80年代:單機(或以太網(wǎng))上的、文本界面

(或簡單圖形界面)、計算型應(yīng)用

■90年代:互聯(lián)網(wǎng)(Internet)、豐富圖形界面、

事務(wù)處理型應(yīng)用,要求快速提交產(chǎn)品

■現(xiàn)在,分布于Internet、Intranet,多種界面形

式(基于WebBrowser、ApplicationGUI等),

多種事務(wù)處理的集成(電子商務(wù)、信息管理),

多種標(biāo)準(zhǔn)的支持(XMLJ2EE,Corba,.NET),

多種平臺的支持(Windows,Linux,Unix,...)

開發(fā)工具和手段的發(fā)展

■70年代:基于匯編代碼的調(diào)試器

■80年代:基于高級語言的調(diào)試器(TurboC,

MicrosoftC,BorlandC,TurboPascal)

■90年代:集成了調(diào)試器、編輯器、配置管理、

框架代碼構(gòu)造、及時編碼提示、應(yīng)用GUI界面

編輯等的集成開發(fā)環(huán)境,如VisualStudio,

Delphi

■現(xiàn)在:在集成開發(fā)環(huán)境基礎(chǔ)上,提供更強大的

開發(fā)平臺支持(,NET,JDK),同時更關(guān)注應(yīng)

用的平臺無關(guān)性和運行安全性

$開發(fā)方法和技術(shù)的發(fā)展

-70年代:結(jié)構(gòu)化方法(設(shè)計、編碼)

■80年代:結(jié)構(gòu)化方法(分析、設(shè)計、編

碼),狀態(tài)圖,需求工程

■90年代:面向?qū)ο蠓治觥⒃O(shè)計、編碼,

對象建模

■現(xiàn)在:商務(wù)建模(businessmodeling)、

面向?qū)ο蠼#ǚ治觥⒃O(shè)計),體系結(jié)

構(gòu)設(shè)計(構(gòu)件化)

面向?qū)ο蠓椒?/p>

-結(jié)構(gòu)化與面向?qū)ο蟮奶岢?/p>

-面向?qū)ο蠓椒ㄌ卣?/p>

■面向?qū)ο笾饕髋?/p>

結(jié)構(gòu)化與面向?qū)ο蟮奶岢?/p>

■CFD&DFD:自頂而下的層次分解策略

■任何一層有變動,其下面的所有層次都必須重新進行層次分

-層次間的解釋關(guān)系使得難以維護層次間的一致性

-強調(diào)數(shù)據(jù)、功能分解,但忽略了數(shù)據(jù)、功能的整合

-數(shù)據(jù)與功能分離的結(jié)構(gòu)化認(rèn)知觀點,實際偏離了人認(rèn)

知世界的基本原則:

■以實體為單位,以關(guān)系為核心

-盡管有缺點,但結(jié)構(gòu)化仍有可借鑒之處:

-結(jié)構(gòu)化原則

■數(shù)據(jù)字典

■狀態(tài)圖

I大幕拉開:面向?qū)ο?/p>

■面相對象的目標(biāo):以人的(獲接近于人

的)認(rèn)知方法和原則來描述事物

-完全不同于結(jié)藥叱的描述手段:

■類、對象

■繼承

■多態(tài)

-消息

類、對象是核心

-面向?qū)ο蠓治?、設(shè)計、編碼的基本單位

-數(shù)據(jù)與功能的有效封裝

-可直接映射到現(xiàn)實或抽象的實體

■關(guān)系、狀態(tài)、行為

-開發(fā)管理的基本單位

■類測試就是“單元測試”!

繼承:面向?qū)ο蠊谏厦髦?/p>

■如果沒有繼承,誰能在一個小時之內(nèi),只使用

SDK接口編寫出Notepad?如果使用繼承,你只

需十分鐘(戢更少)!

■繼承至少提供了兩個方向的設(shè)計支持:

-重用

-抽象、接口(COM、DCOM、Bean)

■沒有繼承,幾乎不可能有通用的容器類

(ContainerorCollector)可供使用

■多繼承:你使用過多少次?

多態(tài):面向?qū)ο?自適應(yīng)'中

———---------

■多態(tài)(polymorphism):多種形態(tài),統(tǒng)

一語義

-接口描述了通訊協(xié)議

■多態(tài)使得基于接口的通訊能夠自適應(yīng)

Argl,agr2,

多態(tài):面向?qū)ο?自適應(yīng)'中

■兩種多態(tài):

■同一個類中的不同形態(tài)接口

■不同子類以不同形態(tài)實現(xiàn)(或重載)父類接

■典型例子:畫圖程序中GraphManager類

的Draw,Move,Open,...

■典型例子:文檔編輯中針對不同對象的

統(tǒng)一的Cut/Copy/Paste操作

消息:可能讓你失望

■不要試圖用信息理論或通訊理論中的消

息來理解

■也不要用操作系統(tǒng)中的消息(事件)來

理解

■所謂兩個對象間的一個消息就是一個對

象使用了另一個對象的協(xié)作(operation),

簡單說就是對象的操作調(diào)用!

■Windows中的SendMessage和

PostMessage根本就與面而對象無關(guān)!

對象狀態(tài)

■對象狀態(tài)只決定于對象的數(shù)據(jù),和全局

數(shù)據(jù)、非對象的局部數(shù)據(jù)無關(guān)

■對象狀態(tài)和對象行為之間的關(guān)系:

■<sl,bl>,<s2,b2>,bl=b2iffsi=s2.

■如果你的程序不滿足這條定理,有兩種

情況:

■類的某個方法使用了全局變量

■類的某個方法中的局部變量初始值不確定

對象關(guān)系:無法讓人滿意

-目前的面向?qū)ο筇峁┝巳N對象關(guān)系描

述手段:

■繼承

■聚集(組成)

■關(guān)聯(lián):對象之間有關(guān)系!

■然而,現(xiàn)實世界中實體之間的關(guān)系豐富

多彩,豈止這三種?

'面向?qū)ο蠓治?/p>

■目標(biāo):使用對象來描述問題域,進而抽象出問

題域類,并把求解問題的約束分配到問題域類

■關(guān)注:是否完整、清晰的描述了問題域及約束

■雷區(qū):使用DFD,然后把每個處理節(jié)點都抽象

為一個類

■雷區(qū):很快就在某個局部(通常為方法)進入

算法、編碼

■面向?qū)ο蠓治瞿P偷膬r值(領(lǐng)域重用、測試)

面向?qū)ο笤O(shè)計

■目標(biāo):引入類(族)實現(xiàn)問題域類(在概念層

次上),同時把系統(tǒng)約束分解、落實到類的方

法層次

■關(guān)注:體系結(jié)構(gòu)、接口、效率

■雷區(qū):有些類是‘上帝',而有些類只是‘弱

智的代表'

■雷區(qū):盲目追求所謂封裝、抽象類

■面向?qū)ο笤O(shè)計模型的價值(設(shè)計pattern,風(fēng)險

跟蹤、測試)

4適合面向?qū)ο蟮拈_發(fā)過程

-必須能夠管理面向?qū)ο蠓治?、設(shè)計、實

現(xiàn)、測試、維護各階段的模型的一致性

■需要給出一套基于類的開發(fā)任務(wù)管理方

法(任務(wù)定義、風(fēng)險管理、任務(wù)評審)

■能夠在開發(fā)的不同階段提供不同的知識

庫(不僅僅是類庫?。┮怨┲赜?/p>

■RUP是個不錯的選擇

面向?qū)ο螅耗芘c不能

■Can

■使你以更有效的手段描述、實現(xiàn)系統(tǒng)

■提高系統(tǒng)的重用度

■有效縮短開發(fā)周期

■Cannot

■避免錯誤,尤其是分析、設(shè)計錯誤

■自動生成精巧的算法

統(tǒng)一建模語言UML

-引論

■建模技術(shù)

■UML的模型圖

■UML的基本視圖

■UML的目的、主要特點和和應(yīng)用領(lǐng)域

■WhyUnified?

-UML是一種建模語言

-UML的設(shè)計目標(biāo)

■UML的發(fā)展歷程

《WhyUnified?

■面對眾多的建模語言,用戶沒有能力區(qū)別不同語

言之間的差別。

■在眾多的建模語言中,實際上各有千秋,需要取

長補短,日臻完善。

■雖然不同的建模語言大多相同,但仍存在某些細(xì)

微的差別,這極大地妨礙了用戶之間的交流。

UML是一種建模語言

■建模方法=建模語言+建模過程。建模語言

定義了用于表示設(shè)計的符號(通常是圖形符號);

建模過程描述進行設(shè)計所需要遵循的步驟。

■標(biāo)準(zhǔn)建模語言UML是一種建模語言,而不是一

種方法,它統(tǒng)一了面向?qū)ο蠼5幕靖拍睢?/p>

術(shù)語及其圖形符號,為人們建立了便于交流的

共同語言。

*UML的設(shè)計目標(biāo)

■UML是由Booch,Rumbaugh和Jacobson發(fā)起,

在Booch方法、OMT方法和OOSE方法的基礎(chǔ)上,集

眾家之長,幾經(jīng)修改而成。UML的設(shè)計目標(biāo)是:

■運用面向?qū)ο蟾拍顏順?gòu)造系統(tǒng)模型(不僅僅針對軟件)

■建立起從概念模型直至可執(zhí)行體之間明晰的對應(yīng)關(guān)系

■著眼于那些有重大影響的問題。

■創(chuàng)建一種對人和機器都適用的建模語言。

UML的發(fā)展歷程

1994.10,Booch和Rumbaugh將Booch93和OMT-2統(tǒng)一,

1995.10.發(fā)布UM0.8o

1995年秋,經(jīng)過Booch等三人的努力,1996.6和1996.10發(fā)布

UML0.9和UML0.91。

1996年成立UML成員協(xié)會,有700多公司支持UML,占領(lǐng)00市場的

85%o

1997.1^UML1.0,1997.9發(fā)布UMLL1。

1997.110MG采納UMLL1作為00技術(shù)的標(biāo)準(zhǔn)建模語言。

此后,UML的維護工作由CrisKobryn領(lǐng)導(dǎo)的0MG版本修改小組RTF

(RevisionTaskForce)負(fù)責(zé).

1998.6:UMLV.1.1(編輯修改版).

1999.6:UMLV.1.3(技術(shù)終訂版).

目前正處于UMLV.2?0階段

UML的發(fā)展歷程(續(xù))1999.6UML1.3

UMLL1被OMG

1997.11.17接納為標(biāo)準(zhǔn)

/

1997.9公布UML1.1

A

眾1997.1公布UML1.0合作伙

反/伴意見

&建模技術(shù)

■構(gòu)造模型的目的

■建模技術(shù)要點

-系統(tǒng)的多種特性

0構(gòu)造模型的目的

模型是對事物的抽象。人們常常在正式建造實物之前,先建

立模型,以便更透徹地了解它的本質(zhì),抓住問題的要害。

■在著手解決一個復(fù)雜問題之前,對解決方案進行

檢測。

-用于同客戶和其他相關(guān)人員進行交流。

-加強視覺效果。

■對復(fù)雜問題進行適度簡化。

L建模技術(shù)要點

/造模型的基本技術(shù)是抽象,應(yīng)突出與問題行關(guān)的

特征,將與問題無關(guān)的性質(zhì)略去。

■不必追求絕對的真實和完全,只需從期望的目的角

度看其是否充分。

?應(yīng)當(dāng)刻畫問題的關(guān)鍵方面,略去相對次要的因素。

■建模語言應(yīng)支持人的由模糊到清晰、由粗到細(xì)逐漸

完善的認(rèn)識過程。

■應(yīng)采用可視化圖形建模語言。

§系統(tǒng)的多種特性

里個系統(tǒng)應(yīng)具有多方面的特點:

■在功能和性能方面:功能正確,性能良好

(效率要高)。

■在非功能方面:魯棒性、可擴充性、可再用

性、兼容性、可移值性、可驗證性、完整性

以及易使用性等方面要好。

一個系統(tǒng)要從多個視角去描述。

一個視圖可能包含多個模型圖,每張模型圖都應(yīng)當(dāng)

簡單明了,易于交流。

UML的模型圖

UML定義了5類、共9種模型圖:

用例圖:從用戶角度描述系統(tǒng)的功能,并指出各功能

的操作者。

靜態(tài)圖:類圖、對象圖和包圖(在UML1.1中,包圖

不再看作一種獨立的模型圖)o

行為圖:狀態(tài)圖,活動圖。

交互圖:順序圖,合作圖。

實現(xiàn)圖:構(gòu)件圖描述部件的物理結(jié)構(gòu)以及各部件之間

的依賴關(guān)系;配置圖定義系統(tǒng)中軟硬件的物理構(gòu)架。

關(guān)于保險業(yè)務(wù)的一張用例圖

靜態(tài)圖:類圖、對象圖和包圖

■靜態(tài)圖包括類圖、對象圖和包圖,用以描述模型

中類及其實例之間的靜態(tài)關(guān)系。

■類圖用于定義系統(tǒng)中的類,包括描述類之間的關(guān)

系(關(guān)聯(lián)、繼承、聚合)以及類的內(nèi)部結(jié)構(gòu),即類

的屬性和操作。

-對象圖顯示類的對象實例,一個對象圖是類圖的

—個實例。

■包圖由包或類組成,主要表示包與包、或包與類

之間的關(guān)系。包圖用于描述系統(tǒng)的分層結(jié)構(gòu)。

?關(guān)于金融貿(mào)易的一張類圖

行為圖:狀態(tài)圖,活動圖

■行為圖包括狀態(tài)圖和活動圖,描述系統(tǒng)的動態(tài)

模型和組成對象間的交互關(guān)系。

■狀態(tài)圖描述一類對象的所有可能的狀態(tài)以及事

件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。

■活動圖描述為滿足用例要求所要進行的活動以

及活動間的約束關(guān)系。使用活動圖可以很方便

地表示并行活動。

上升[幾層]

超時口

一臺打印機服務(wù)器的活動圖

顯示“磁盤已滿”

[磁盤已滿]

的信息

[尚有磁盤空間]顯示“正在打印”

的信息

刪除顯示信,創(chuàng)建附加文,

息的對話框"

J44印機X,

^打印[文件]

交互圖:順序圖,合作圖

■交互圖包括順序圖和合作圖,它描述對象間的交

互(動態(tài)合作)關(guān)系。

■順序圖:用以顯示對象之間在時間順序方面的動

態(tài)合作關(guān)系。因此,如果強調(diào)時間和順序,應(yīng)當(dāng)

使用順序圖。

■合作圖:著重描述對象間的通信方面的動態(tài)合作

關(guān)系。因此,如果強調(diào)通信關(guān)系,則可以選擇合

作圖。

一臺打印機服務(wù)器的順序圖

I:計算機I:打印服務(wù)程序:打印機:打印隊列

一臺打印機服務(wù)器的合作圖

[打印機空閑]

L1打?。畚募?/p>

實現(xiàn)圖:構(gòu)件圖,配置圖

■實現(xiàn)圖包括構(gòu)件圖和配置圖。

-構(gòu)件圖:描述部件的物理結(jié)構(gòu)以及各

部件之間的依賴關(guān)系。

■配置圖:定義系統(tǒng)中(特別是在分布式

及網(wǎng)絡(luò)環(huán)境中)軟硬件的物理構(gòu)架。

反映程序代碼構(gòu)件之間

依賴關(guān)系的構(gòu)件圖

graphic.dll:

IIWhnd.cpp:Whnd.obj:

巴窗口處理器

■尺5窗口處理器圖形庫

*0A■

||comhnd.cpp:

呂命令處理器IIcomhnd.obj:eclient.exe:

命令處理器客戶程序

A

main.obj:

[|main.cpp:

審卷類e主類

描述系統(tǒng)物理構(gòu)架的配置圖

《DecNet協(xié)議》

數(shù)據(jù)庫服務(wù)器:

《TCP/IP協(xié)議》VAX

UML的基本視圖

-UML的用例視圖

-UML的邏輯視圖

-UML的構(gòu)件視圖

-UML的并發(fā)視圖

-UML的配置視圖

UML的五類基本視圖

UML的五類基本視圖(續(xù))

■用例視圖:從系統(tǒng)外部執(zhí)行者的角度理解、展示

系統(tǒng)功能。

■邏輯視圖:從系統(tǒng)的靜態(tài)結(jié)構(gòu)和動態(tài)行為的角度

展示系統(tǒng)內(nèi)部功能性設(shè)計。

-構(gòu)件示圖:展示代碼構(gòu)件的組織結(jié)構(gòu)。

■并發(fā)視圖:展示系統(tǒng)的并發(fā)性,刻畫并發(fā)系統(tǒng)中

的通訊和同步問題。

■配置視圖:展示系統(tǒng)的物理的體系結(jié)構(gòu),其中用

到的計算機和各種設(shè)備稱作節(jié)點。

UML的用例視圖

■從系統(tǒng)外部執(zhí)行者的角度理解系統(tǒng)的功能:它描

述執(zhí)行者與系統(tǒng)的交互,其執(zhí)行者可以是一個用

戶,也可以是另一個系統(tǒng)。

■用例圖面向客戶、建模人員、開發(fā)人員和測試人

員,是系統(tǒng)模型圖的核心。

■用例視圖:用例圖和活動圖描述。

■一張用例圖是系統(tǒng)的一種用途的描述;一組用例

圖描述了整個系統(tǒng)所期望的用途。

&UML的邏輯視圖

-描述系統(tǒng)如何提供要求的功能:

■靜態(tài)結(jié)構(gòu):

類(界面,內(nèi)部結(jié)構(gòu));對象;關(guān)系

用類圖和對象圖描述。

■動態(tài)行為:

對象之間相互發(fā)送消息而引發(fā)的動態(tài)合作關(guān)系

用狀態(tài)圖、順序圖、合作圖和活動圖描述

■各種特性:永久性,并發(fā)性

■主要是面向設(shè)計人員和開發(fā)人員

&UML的構(gòu)件視圖

■描述實現(xiàn)的各個模塊及其相互之間的關(guān)系:

?模塊的內(nèi)部結(jié)構(gòu)

-模塊間的依賴關(guān)系

■關(guān)于各構(gòu)件的一些附加信息:

■資源分配(構(gòu)件的責(zé)任)

-其它管理信息,如開發(fā)工作的進展報告等

-主要面向開發(fā)人員

■構(gòu)件視圖:由構(gòu)件圖組成,其中構(gòu)件表示不

同類型的代碼模塊

/UML的并發(fā)視圖

「愛統(tǒng)中進程和處理器的劃分與任務(wù)的分配

■屬于非功能性特性:

-著眼于資源的有效利用

-并行執(zhí)行,并發(fā)地執(zhí)行多線程控制,處理線程之間的通

信和同步

-處理來自外部環(huán)境的同步事件

■面向開發(fā)人員和系統(tǒng)集成人員

-描述并發(fā)視圖的主要模型圖:

-動態(tài)圖:狀態(tài)圖,合作圖,活動圖

-實現(xiàn)圖:構(gòu)件圖,配置圖

&UML的配置視圖

■展示系統(tǒng)的物理配置,如計算機和其它設(shè)備(統(tǒng)

稱結(jié)點)及其相互之間的連接關(guān)系,包括在物理

的體系結(jié)構(gòu)中如何配置構(gòu)件的映像關(guān)系。

-面向開發(fā)、集成和測試人員。

■配置視圖用配置圖描述。

《面向?qū)ο竺枋龅娜齻€層面

概念層BusinessModel

說明層Architecture

實現(xiàn)層Detailing

層次間沒有分解對應(yīng)關(guān)系

^^2:每個面向?qū)ο竺枋鲈囟伎蓪?yīng)到這三個層面

UML的主要特點、目的和應(yīng)用領(lǐng)域

-UML的主要特點

-使用UML的目的

■UML的應(yīng)用領(lǐng)域

UML的主要特點

■UML統(tǒng)一了Booch,OMT和OOSE等方法中的基

本概念:用例圖從OOSE來;類圖從OMT和

Booch等方法來;實現(xiàn)圖(構(gòu)件圖和配置圖)從

Booch的模塊圖和過程圖來。

■UML吸取了00技術(shù)領(lǐng)域各流派的長處:狀態(tài)圖

從Harel而來;活動圖從工作流圖而來;合作圖

從Booch的對象圖和Fusion的對象交互作用圖等

而來;等等。

■在演變過程中UML提出了一些新的概念。

使用UML的目的

軟件開發(fā)的過程猶如雕琢一件藝術(shù)品,由無形

到有形,由粗到細(xì)。但軟件開發(fā)的最終形式必

須生成程序代碼。因此當(dāng)考慮使用UML時,一

定要想清楚,使用UML的目的以及對編寫代碼

有何幫助。

■學(xué)習(xí)面向?qū)ο蠹夹g(shù)

■和領(lǐng)域?qū)<医涣?/p>

■幫助理解全局

學(xué)習(xí)面向?qū)ο蠹夹g(shù)

■UML的各種模型圖,其中用例圖描述系統(tǒng)的功

能及其外部的使用者,確定誰使用系統(tǒng)以及做

彳十么。

■類圖描述系統(tǒng)的靜態(tài)構(gòu)架,即構(gòu)成系統(tǒng)的各種

對象類及其相互關(guān)系。對象圖是類圖的實例化,

描述系統(tǒng)在某個時刻可能包含的對象和相互關(guān)

系。

-行為圖和交互圖描述系統(tǒng)的動態(tài)行為。

■構(gòu)件圖和配置圖描述系統(tǒng)實現(xiàn)體的構(gòu)成及其在

硬件環(huán)境中的配置情況。

和領(lǐng)域?qū)<医涣?/p>

■有效的方法是使用用例。一個用例描述了系統(tǒng)

的某一側(cè)面,所有用例構(gòu)成了系統(tǒng)的整個外觀。

用例也有助于制訂項目規(guī)劃和對問題進行深入

理解。

■類圖很有用,但應(yīng)注重在概念層上使用。應(yīng)將

每個類對應(yīng)用戶心中一個概念,并用用戶的語

言來命名和定義。

■對于側(cè)重于工作流過程的應(yīng)用系統(tǒng),活動圖非

常有用?;顒訄D也有助于對實際業(yè)務(wù)流程中的

并行特性進行自然描述。

幫助理解全局

-JI_

■對于大型項目,常常只見樹

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論