第7章面向對象系統(tǒng)設計_第1頁
第7章面向對象系統(tǒng)設計_第2頁
第7章面向對象系統(tǒng)設計_第3頁
第7章面向對象系統(tǒng)設計_第4頁
第7章面向對象系統(tǒng)設計_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章面向對象系統(tǒng)設計

第7章面向對象系統(tǒng)設計7.1系統(tǒng)體系結構設計

7.2子系統(tǒng)耦合度與聚合度7.3子系統(tǒng)與功能模塊設計

7.4系統(tǒng)數(shù)據管理設計

7.5系統(tǒng)界面設計7.1系統(tǒng)體系結構設計

7.1.1系統(tǒng)邏輯體系結構設計7.1.2系統(tǒng)物理體系結構設計7.1.1系統(tǒng)邏輯體系結構設計1.設計原則面向對象系統(tǒng)設計的第一步就是確定系統(tǒng)邏輯體系結構,它決定了各子系統(tǒng)如何組織以及如何協(xié)調工作。在面向對象系統(tǒng)設計過程中,利用系統(tǒng)分層技術將整個系統(tǒng)進行分層,每個層完成自身的功能,最后,所有的層整合起來構成一個完整的系統(tǒng)邏輯體系結構。

2.邏輯體系結構建模:包圖設計

在UML中,一般采用包圖對系統(tǒng)邏輯體系結構進行建模,一個包相當于一個子系統(tǒng),一個包也可以向下劃分為更小的包。根據設計原則和信息系統(tǒng)原理,將信息系統(tǒng)中比較關心的對象分層.用戶界面層、業(yè)務處理層、數(shù)據訪問層各層中的一些公共部分提出來:權限管理、異常處理。包圖設計用戶界面業(yè)務處理數(shù)據訪問權限管理錯誤處理圖7.2系統(tǒng)邏輯體系結構建模:包圖1)用戶界面包如圖7.3(a)所示,用戶界面層的職責是:(1)與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結果。(2)對于輸入的數(shù)據進行數(shù)據校驗,過濾非法數(shù)據。(3)向業(yè)務處理對象發(fā)送處理請求。用戶界面包含的類如圖7.3(b)所示。用戶界面輸入、輸出數(shù)據校驗發(fā)送業(yè)務處理請求圖7.3(a)用戶界面包用戶界面類輸入輸出元素業(yè)務處理對象數(shù)據校驗()業(yè)務處理()輸入界面輸出界面圖7.3(b)用戶界面包含的類2)業(yè)務處理包如圖7.4(a)所示,業(yè)務處理層的職責是:(1)實現(xiàn)各種業(yè)務處理邏輯或處理算法;(2)驗證請求者的權限;(3)向數(shù)據訪問對象發(fā)送數(shù)據持久化操作的請求;(4)向用戶界面層返回處理結果。業(yè)務處理包含的類如圖7.4(b)所示。業(yè)務處理實現(xiàn)各種業(yè)務邏輯實現(xiàn)各種處理算法權限管理圖7.4(a)業(yè)務處理包業(yè)務處理類權限管理對象業(yè)務對象業(yè)務處理()圖7.4(b)業(yè)務處理包含的類業(yè)務類數(shù)據庫連接對象數(shù)據庫訪問對象業(yè)務處理()3)數(shù)據訪問包如圖7.5(a)所示,數(shù)據訪問層的職責是:(1)實現(xiàn)數(shù)據的持久化操作;(2)實現(xiàn)事務處理。數(shù)據訪問包含的類如圖7.5(b)所示。

數(shù)據訪問實現(xiàn)數(shù)據的持久化操作實現(xiàn)事務處理圖7.5(a)數(shù)據訪問包數(shù)據庫訪問類數(shù)據庫連接對象讀?。ǎ懭耄ǎ﹫D7.5(b)數(shù)據訪問包含的類業(yè)務數(shù)據庫連接類開始事務()提交事務()回滾事務()Instance()4)權限管理包如圖7.6(a)所示,權限管理的主要職責是:(1)驗證請求者的請求權限;(2)提供請求者的權限列表。權限管理包含的類如圖7.6(b)所示。權限管理驗證請求者的請求權限提供請求者的權限列表圖7.6(a)數(shù)據訪問包權限管理類操作員對象驗證權限()獲取權限列表()操作員類操作員代碼操作員名稱角色對象表權限列表登陸()退出()是否構建權限表()構建權限列表()角色類角色名構建權限列表圖7.6(b)權限訪問包含的類5)異常處理包如圖7.7(a)所示,異常處理的主要是:(1)匯報運行時的詳細異常信息;(2)記錄異常處理日志。異常處理匯報運行時的詳細異常信息記錄異常處理日志圖7.7(a)異常處理包異常處理包含的類如圖7.7(b)所示異常處理類異常處理實現(xiàn)對象異常處理實現(xiàn)類異常處理實現(xiàn)類系統(tǒng)異常數(shù)據庫異常業(yè)務邏輯異常系統(tǒng)異常實現(xiàn)數(shù)據庫異常實現(xiàn)業(yè)務邏輯異常實現(xiàn)圖7.7(b)異常處理包含的類包圖設計舉例

在圖書管理系統(tǒng)邏輯體系設計中,其系統(tǒng)包圖如圖7.8所示,一共有3個包:“圖書業(yè)務處理”包、“用戶界面”包和“數(shù)據庫”包。在“圖書業(yè)務處理”包中包含了實現(xiàn)圖書館管理的所有類;在“用戶界面”包中包含了該系統(tǒng)的全部界面類;在“數(shù)據庫”包中包含了與實現(xiàn)數(shù)據庫服務有關的全部類。用戶界面圖書業(yè)務處理數(shù)據庫圖7.8圖書管理系統(tǒng)包圖7.1.2系統(tǒng)物理體系結構設計系統(tǒng)物理體系結構設計,不僅包括:(1)不同的節(jié)點和這些節(jié)點之間的連接方式(2)表示了邏輯體系結構和物理結構的依賴關系。在UML中,一般采用構件圖和部署圖來對系統(tǒng)物理體系結構進行建模。構件圖和部署圖可以描述出系統(tǒng)中的類和對象涉及的具體程序或進程,并表明程序或進程使用的硬件設備及它們之間的相互連接。1.系統(tǒng)構件圖構件是程序代碼的實際物理模塊,系統(tǒng)的構件圖用來顯示代碼模塊間的關系。在圖書管理系統(tǒng)物理體系設計中,其系統(tǒng)構件圖如圖7.9所示。系統(tǒng)包含3個類包,即界面包、圖書業(yè)務包和數(shù)據庫包,以及1個圖書管理系統(tǒng)包。

圖書管理系統(tǒng)exe界面包圖書業(yè)務包數(shù)據庫圖7.9圖書管理系統(tǒng)構件圖在圖7.9所示圖書管理系統(tǒng)構件圖中,圖書業(yè)務包包含5個構件部分,如圖7.10所示。

人文書刊.java

借閱記錄.java

借閱者信息.java

技術書刊.java

預定記錄.java圖7.10圖書業(yè)務構件圖2.系統(tǒng)部署圖部署圖用來描述系統(tǒng)硬件的物理拓撲結構以及在此結構上執(zhí)行的軟件。在圖書管理系統(tǒng)物理體系設計中,圖書管理系統(tǒng)的各個部分可以部署在不同的節(jié)點上,通過網絡相互通信。圖書管理系統(tǒng)是一個客戶機/服務器結構的分布式系統(tǒng),它的數(shù)據庫放置在圖書館的數(shù)據庫服務器上,圖書館服務器向用戶提供了借書管理服務和信息管理服務,借閱者和圖書管理員可以通過客戶端借閱、預定、返還書籍并進行各種信息的維護?;诖?,繪制圖書管理系統(tǒng)部署圖如圖7.11所示??蛻舳藞D書館服務器數(shù)據庫服務器圖7.11圖書管理系統(tǒng)部署圖7.2子系統(tǒng)耦合度與聚合度

1.子系統(tǒng)之間耦合度耦合度描述了兩個子系統(tǒng)之間依賴關系的程度。耦合度越低,表明兩個子系統(tǒng)之間的依賴關系越松散,它們之間相互獨立性越強,那么當其中一個子系統(tǒng)發(fā)生變化時對另外一個子系統(tǒng)產生的影響很小。耦合度越高,表明兩個子系統(tǒng)之間的依賴關系越緊密,那么當其中一個子系統(tǒng)發(fā)生變化時可能對另外一個子系統(tǒng)產生很大影響。2.子系統(tǒng)內部聚合度聚合度描述了子系統(tǒng)內部的依賴程度。如果某個子系統(tǒng)含有多個彼此相關的對象,并且它們執(zhí)行類似的任務,它們的相關性就比較高,那么子系統(tǒng)內部聚合度就高。聚合度越高,子系統(tǒng)獨立性越強,反之亦然。要堅持低耦合、高聚合的原則,從而保證子系統(tǒng)與功能模塊的獨立性。通常在聚合度和耦合度之間存在一個平衡,將系統(tǒng)不斷分解成子系統(tǒng)可以提高系統(tǒng)的聚合度,但是,隨著子系統(tǒng)之間接口數(shù)量的增加,也會提高耦合度。7.3子系統(tǒng)與功能模塊設計在系統(tǒng)設計的過程中,系統(tǒng)設計人員將系統(tǒng)分解成能由單個團隊實現(xiàn)的較小的子系統(tǒng),又稱為功能模塊,這些子系統(tǒng)的設計要遵循“低耦合、高聚合、強獨立”的原則,主要的設計活動包括服務與子系統(tǒng)接口設計、分層與分區(qū)等。7.3.1子系統(tǒng)分解與功能模塊學籍管理系統(tǒng)6個子系統(tǒng),即用戶管理子系統(tǒng)、學生檔案管理子系統(tǒng)、班級管理子系統(tǒng)、交費管理子系統(tǒng)、課程管理子系統(tǒng)和成績管理子系統(tǒng)。交費管理子系統(tǒng)可以細分為如圖7.12所示的包圖。設置收費類型和收費標準:frmTuitionSet,收取學費、學費類型明細及查詢、學生個人收費情況、學生收費明細、學生收費查詢分別設計為frmTuitionCollect,frmTuitionSetBrow,frmTuitionStu,frmTuitionDetail,frmTuitionSetQry。<<MDIForm>>frmMain(from登陸及主控程序包)<<Form>>frmTuitionSet<<Form>>frmTuitionCollect<<Form>>frmTuitionDetail<<Form>>frmTuitionStu<<Form>>frmTuitionSetQry<<Form>>frmTuitionSetBrow交費管理包<<DataReport>>DataReportTuitionDetail(from報表包)學費Info(from系統(tǒng)實體類包)<<DataReport>>DataReportTuition(from報表包)圖7.12學籍管理交費管理子系統(tǒng)分解

學費信息實體類分解

從圖7.12可以看出,學籍管理交費子系統(tǒng)表示為UML包,該子系統(tǒng)的分解包括包的組成和其與主界面的構成關系,子系統(tǒng)虛線箭頭說明子系統(tǒng)與其他子系統(tǒng)或類之間的依賴關系。其中,學費信息實體類可以進一步劃分為學費類型和交費明細兩部分,相當于數(shù)據庫中的兩個表,如圖7.13所示。學費Info(from系統(tǒng)實體類包)學費類型(fromdbo)年級:STRING專業(yè):STRING年制:STRING學期:STRING學費:MONEY交費明細(fromdbo)學號:STRING學期:STRING交費:MONEY日期:DATETIME操作員:STRING圖7.13學費信息實體類分解7.3.2服務與子系統(tǒng)接口設計服務指的是一組有著共同目標的相關操作,就是通過為其他子系統(tǒng)提供服務來確定其特點的,從而形成子系統(tǒng)與子系統(tǒng)之間的接口,稱為子系統(tǒng)接口。子系統(tǒng)接口也稱為應用程序接口(ApplicationProgrammingInterface,API),包括操作的名稱、參數(shù)、類型和返回值。子系統(tǒng)提供的服務在系統(tǒng)設計集中進行定義,包括列舉操作、參數(shù)和它們的高層行為;子系統(tǒng)接口設計在對象集中進行定義,包括參數(shù)的類型和每個操作的返回值,也包括應用軟件調用操作系統(tǒng)的函數(shù)接口。在學籍管理系統(tǒng)的服務與子系統(tǒng)接口設計中,系統(tǒng)公用模塊就是為所有子系統(tǒng)提供服務的一個子系統(tǒng),它主要提供訪問數(shù)據層的接口,定義公用訪問數(shù)據庫的連接,定義全局性的變量和方法供各子系統(tǒng)使用,如圖7.14所示。班級管理包(fromUseCaseView)課程管理包(fromUseCaseView)<<Module>>ModuleExecuteSQL()ConnString()ExecuteCheck()成績管理包(fromUseCaseView)學生檔案管理包(fromUseCaseView)交費管理包(fromUseCaseView)用戶管理包(fromUseCaseView)圖7.14學籍管理系統(tǒng)的服務與子系統(tǒng)接口設計

7.3.3子系統(tǒng)分解與確定

1.子系統(tǒng)分解子系統(tǒng)分解指得是利用分層與分區(qū)的方法,將系統(tǒng)循環(huán)地分解成可管理的較小的、簡單的部分,直到能讓一個人或者一個小組處理為止。系統(tǒng)地使用這個方法就可以得到結構化的分解,其中每個子系統(tǒng)或者每一層可以根據低層子系統(tǒng)提供的服務為其高層服務,每一層還可以訪問其下一層。在面向對象的系統(tǒng)設計過程中,系統(tǒng)的分解可以分為3個層次:(1)頂層的登錄管理和主控界面;(2)中間層為各業(yè)務處理子系統(tǒng);(3)底層為實體類層和報表層。就學籍管理系統(tǒng)而言,其系統(tǒng)分解分為3個層次,如圖7.15所示,頂層是登錄及主控程序包;中間層是6個業(yè)務處理包,即用戶管理包、學生檔案管理包、班級管理包、交費管理包、課程管理包和成績管理包;底層是系統(tǒng)實體類包和報表包。用戶管理包學生檔案管理包班級管理包交費管理包課程管理包登陸及主控程序包系統(tǒng)實體類包報表包成績管理包頂層中間層底層圖7.15學籍管理系統(tǒng)的分層設計2.子系統(tǒng)確定

最初的子系統(tǒng)分解來自功能性需求,隨著這種需求的不斷變化,子系統(tǒng)的分解也隨之不斷修改和完善:若干簡單的子系統(tǒng)合并到一個子系統(tǒng)中,復雜的子系統(tǒng)分解成多個部分,為了實現(xiàn)新的功能而增加子系統(tǒng)等。確定子系統(tǒng)的方法就是將功能相關的對象放在一起,作為獨立的功能或共享的模塊,被多個子系統(tǒng)所共享;或者把復雜的子系統(tǒng)分解為較為簡單的子系統(tǒng)。確定子系統(tǒng)的方法可歸納為以下幾個方面:(1)將一個用例中確定的對象分配到同一個子系統(tǒng)中;(2)為兩個以上子系統(tǒng)傳遞數(shù)據或提供服務的對象創(chuàng)建一個專用的子系統(tǒng);(3)將子系統(tǒng)與子系統(tǒng)之間的關聯(lián)關系降到最小;(4)同一個子系統(tǒng)內的所有對象必須功能相關,業(yè)務處理配合緊密。7.4系統(tǒng)數(shù)據管理設計

7.4.1數(shù)據模型數(shù)據模型是嚴格定義的一組概念的集合,這些概念精確地描述了系統(tǒng)的靜態(tài)、動態(tài)特性和完整性約束條件。1.數(shù)據模型的組成要素

數(shù)據模型通常由數(shù)據結構、數(shù)據操作和完整性約束三部分組成,這三部分稱為數(shù)據模型的三要素。1)數(shù)據結構是對系統(tǒng)靜態(tài)特性的描述,它分為層狀結構、網狀結構和關系結構。數(shù)據結構是刻畫數(shù)據模型性質最重要的方面,因此數(shù)據庫系統(tǒng)中通常按照數(shù)據結構類型來命名數(shù)據模型,如層次模型、網狀模型和關系模型。2)數(shù)據操作是對系統(tǒng)動態(tài)特性的描述,它主要包括對數(shù)據庫的兩大類操作:即檢索和更新。檢索是指對數(shù)據的篩選、統(tǒng)計和讀取等操作;更新是指對數(shù)據的插入、刪除和修改操作。3)數(shù)據的完整性約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定數(shù)據模型中數(shù)據及其聯(lián)系所具有的制約和依存規(guī)則,這些規(guī)則的作用是保證數(shù)據的正確、有效和相容性。比如,本科生年齡不大于30歲,研究生年齡不大于38歲,學生累計成績不得有三門以上不及格,屬于數(shù)據的完整性約束條件。2.常用的數(shù)據模型

數(shù)據庫領域最常用的數(shù)據模型有四種:層次模型(HierarchicalModel)網狀模型(NetworkModel)關系模型(RelationalModel)面向對象模型(ObjectOrientedModel)7.4.2關系數(shù)據模型1.關系表在用戶看來,關系模型中數(shù)據結構就是一張二維表,如表7.1和表7.2所示。學號姓名性別年齡系號年級980104王小明女190198980206黃大鵬男200298980508張文斌女180598………………系號系名辦公室主任電話01計算機教209張立558502102物理教501李可2334102……………05地質工程教301陳鵬5585206表7.1學生登記表

表7.2系信息表

2.關系數(shù)據模型中的一些術語1)關系(Relation):一個關系對應通常所說的一張二維表;2)元組(Tuple):表中的一行即為一個元組;3)屬性(Attribute):表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名。表7.1中有六列,對應六個屬性(學號,姓名,性別,年齡,系號和年級);4)域(Domain):屬性的取值范圍,所以又稱“值域”;5)分量:元組中的一個屬性值;6)關系模式:對關系的描述,一般表示為:關系名(屬性1,屬性2,…,屬性n);7)關鍵字或碼(Key):表中用來唯一確定(標識)一個元組的某個屬性或屬性組合。如表中學號;關鍵字必須唯一,但它的唯一性不是只對關系的當前元組構成來確定的。還要考慮元組構成的將來可能性。3.關系數(shù)據模型的操縱

1)操作:查詢、插入、刪除、修改。前一種為檢索,后三種為更新,2)關系數(shù)據操作的理論標準為關系代數(shù)或關系演算。其中,關系演算又分為元組關系演算和域關系演算兩種。關系代數(shù)、元組關系演算和域關系演算三種抽象語言在表達能力上是完全等價的。3)介于關系代數(shù)和關系演算之間的實用的代表性的關系操縱語言是SQL(StructuredQueryLanguage)。4.數(shù)據的完整性約束條件包括:實體完整性、參照完整性、用戶定義的完整性。1)實體完整性(EntityIntegrity)。若屬性A是基本關系R的一個主屬性,則任何元組在A上的分量都不能為空。實體完整性規(guī)定主碼的任何屬性都不能為空。這是因為:2)參照完整性(ReferentialIntegrity)。參照完整性是對關系間引用數(shù)據的一種限制。若屬性組A是基本關系R1的外碼,它與基本關系R2主碼K相對應,則R1中每個元組在A上的值必須為以下兩種情況之一.3)用戶定義的完整性。實體完整性和參照完整性是關系模型必須滿足的兩個完整性約束條件,任何關系系統(tǒng)都必須自動維護之。5.關系數(shù)據模型的規(guī)范化

符合某一種級別的關系模式的集合稱為范式。關系數(shù)據模型規(guī)范化的基本思想就是:逐步消除不合理的數(shù)據依賴,使范式中的各個關系模式達到某種程度的“分離”,這種規(guī)范化遵循如下三種范式:(1)第一范式:每個分量必須是不可分的數(shù)據項;(2)第二范式:每個非主屬性完全依賴于主屬性;(3)第三范式:任何一個非關鍵字數(shù)據項都不傳遞依賴于它的關鍵字。其中,第一范式到第二范式消除了非主屬性對候選鍵的局部依賴;第二范式到第三范式消除了非主屬性對候選鍵的傳遞依賴。7.4.3從UML映射到關系數(shù)據模型1.映射原則(1)基礎類可以采用一類一表制或一類多表制的映射原則;(2)當類之間有一對多關系時,一個表也可以對應多個類;(3)存在繼承關系的類可以映射為一個表,用屬性來區(qū)別不同的子類,也可以是不同的子類分別映射一個表;(4)類屬性映射為表字段,類之間的關聯(lián)也用表字段來表示;(5)按關系數(shù)據模型規(guī)范化原則來調整表結構。2.映射實體類實體類到關系表的映射必須符合列是不可再分的。不過,在UML分析模型中的類屬性(對立于類關系)已經是符合這個條件,這一點簡化了這個映射。對于每個實體類來說,可以映射成一個表,類中的屬性和表中的屬性相同。在圖書管理系統(tǒng)中,借閱者實體類映射實例如圖7.16所示。Loan(userID,bookID,borrowdata,returndata,state)圖7.16圖書管理系統(tǒng)借閱者實體類映射3.映射關聯(lián)

1)一對多關系。在一對多關聯(lián)中,一個對象可以與多個對象相鏈接。一種方法是將關系的“1”端對象的關鍵字附加到“多”端的一個列(或多列)。另一種方法是用一個獨立表來存儲一對多關系,在圖書管理系統(tǒng)中,一對多的映射實例如圖7.17所示。Item(bookID,bookno,state…)圖7.17圖書管理系統(tǒng)中一對多的映射實例2)多對多關系。對于多對多關系,需要增加一個表,這個表由具有鏈接關系的表的關鍵字組成,在圖書管理系統(tǒng)中,多對多的映射實例如圖7.18所示。Reservation(userID,bookno,date…)圖7.18圖書管理系統(tǒng)中多對多的映射實例3)一對一關系。零或一對一關聯(lián),把“l(fā)”端的主鍵添加到“0或l”表。其他一對一關聯(lián),可以把一個對象的主鍵添加到另一個對象中,在圖書管理系統(tǒng)中,多對多的映射實例如圖7.19所示。Fine(userID,bookID,date,…)圖7.19圖書管理系統(tǒng)中一對一的映射實例4.映射聚集和組合對于一對一的組合,可以將子類與超類建立成一個表;對于一對多的情況,無論聚集還是組合,對子類必須建立一個獨立的表,將父類主鍵屬性加入子類的表中。例如,Office類和OfficeMember類之間存在著聚集關系,將該關系映射到關系數(shù)據庫中,這種聚集的映射實例如圖7.20所示。Office(officeID,…)OfficeMember(OfficeMemberID,officeID,…)圖7.20聚集的映射實例5.映射泛化

泛化的映射策略有三種:(1)父類與子類可各自映射成表,將父類的主鍵屬性加入子類中,建立外鍵關聯(lián)。在關系數(shù)據模型中用外鍵參照關系來表示繼承關系。(2)將子類表的屬性添加到父類表的屬性中,而不建立子類表。通過這種方式,可以使關系數(shù)據模型支持繼承關系和多態(tài)。(3)不建立父類表,而只建立子類表。將子類繼承的父類的屬性加入子類中。在圖書館管理系統(tǒng)中,對于Book類來說,選擇第二種方案,在Book表中添加書的類別屬性,泛化的映射實例如圖7.21所示。Book(bookID,…,t

溫馨提示

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

評論

0/150

提交評論