日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第七章 类图

發(fā)布時(shí)間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第七章 类图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?

前言

????類圖是在面向?qū)ο蟮南到y(tǒng)模型中使用得最普遍的圖。類圖包含了一組類、接口和協(xié)作以及他們之間的關(guān)系。

????你使用類圖來為系統(tǒng)的靜態(tài)視圖建模。通常這包括模型化系統(tǒng)的詞匯(從系統(tǒng)的詞匯表中發(fā)現(xiàn)類),模型化協(xié)作,或則模型化模式。類圖還是一些相關(guān)的圖的基礎(chǔ),包括組件圖、分布圖。

????類圖的重要性不僅僅體現(xiàn)在為系統(tǒng)建立可視化的、文檔化的結(jié)構(gòu)模型,同樣重要的是構(gòu)建通過正向和反向工程建立執(zhí)行系統(tǒng)。

?

術(shù)語(yǔ)和概念

類圖:類圖是一組類、接口和協(xié)作以及他們之間的關(guān)系構(gòu)成的。

類圖通常包含如下的內(nèi)容:

l????????

l???????? 接口

l???????? 協(xié)作

l???????? 依賴關(guān)系、繼承關(guān)系、關(guān)聯(lián)關(guān)系

同其他的圖一樣,類圖也可以包含注解和限制。

類圖中也可以包含包和子系統(tǒng),這兩者用來將元素分組。有時(shí)后你也可以將類的實(shí)例放到類圖中。

?注:組件圖和分布圖和類圖類似,雖然他們不包含類而是分別包含組件和節(jié)點(diǎn)。

你通常通過下面三種方式使用類圖:

1,為系統(tǒng)詞匯建模型

為系統(tǒng)的詞匯建模實(shí)際上是從詞匯表中發(fā)現(xiàn)類,發(fā)現(xiàn)它的責(zé)任。

2,模型化簡(jiǎn)單的協(xié)作

協(xié)作是指一些類、接口和其他的元素一起工作提供一些合作的行為,這些行為不是簡(jiǎn)單地將元素加能得到的。例如:當(dāng)你為一個(gè)分布式的系統(tǒng)中的事務(wù)處理過程建模型時(shí),你不可能只通過一個(gè)類來明白事務(wù)是怎樣進(jìn)行的,事實(shí)上這個(gè)過程的執(zhí)行涉及到一系列的類的協(xié)同工作。使用類圖來可視化這些類和他們的關(guān)系。

3,模型化一個(gè)邏輯數(shù)據(jù)庫(kù)模式

想象模式是概念上設(shè)計(jì)數(shù)據(jù)庫(kù)的藍(lán)圖。在很多領(lǐng)域,你將想保存持久性數(shù)據(jù)到關(guān)系數(shù)據(jù)庫(kù)活面向?qū)ο蟮臄?shù)據(jù)庫(kù)。你可以用類圖為這些數(shù)據(jù)庫(kù)模式建立模型。

?

通用建模技術(shù)

????沒有類是單獨(dú)存在的,他們通常和別的類協(xié)作,創(chuàng)造比單獨(dú)工作更大的語(yǔ)義。因此,除了捕獲系統(tǒng)的詞匯以外,還要將注意力集中到這些類是如何在一起工作的。使用類圖來表達(dá)這種協(xié)作。

l???????? 確定你建模的機(jī)制。機(jī)制代表了部分你建模的系統(tǒng)的一些功能和行為,這些功能和行為是一組類、接口和其他事物相互作用的結(jié)果。

l???????? 對(duì)于每個(gè)機(jī)制,確定類、接口和其他的參與這個(gè)協(xié)作的協(xié)作。同時(shí)確定這些事物之間的關(guān)系。

l???????? 用場(chǎng)景來預(yù)排這些事物,沿著這條路你將發(fā)現(xiàn)模型中忽略的部分和定義錯(cuò)誤的部分。

l???????? 確定用這些事物的內(nèi)容來填充它們。對(duì)于類,開始于獲得一個(gè)責(zé)任(類的職責(zé)),然后,將它轉(zhuǎn)化為具體的屬性和方法。

7-1 模型化簡(jiǎn)單的協(xié)作

?

7-1是一個(gè)自治機(jī)器人的類圖。這張的圖焦點(diǎn)聚集那些讓機(jī)器人在路上行走的機(jī)制對(duì)應(yīng)的類上。你可以發(fā)現(xiàn)一個(gè)虛類Motor和兩個(gè)從它派生出來的類:SteeringMotorMainMotor。這兩個(gè)類都從它的父親Motor繼承了五個(gè)方法。這兩個(gè)類又是另一個(gè)類Driver的一部分。類PathAgentDriver有一個(gè)1對(duì)1的關(guān)系,和CollisionSensor1對(duì)n的關(guān)系。

????在這個(gè)系統(tǒng)中其實(shí)還有很多其他的類,但這張圖的重點(diǎn)是放在那些將機(jī)器人移動(dòng)的類上的。在其他的圖中你可能也會(huì)看到這些類。通過將焦點(diǎn)放在不通的功能上,可以獲得從不通的角度對(duì)整個(gè)系統(tǒng)的認(rèn)識(shí),最終達(dá)到認(rèn)識(shí)整個(gè)系統(tǒng)。

 

????很多系統(tǒng)都是有持久性數(shù)據(jù)的,也就是說要將這些數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中以便下一次使用。通常你會(huì)使用關(guān)系型數(shù)據(jù)庫(kù)或面向?qū)ο蟮臄?shù)據(jù)庫(kù),或其它類型的數(shù)據(jù)庫(kù)來保存數(shù)據(jù)。UML很適合為邏輯數(shù)據(jù)庫(kù)模式建模。

?

????UML的類圖是E-R圖(為邏輯數(shù)據(jù)庫(kù)建模的通用工具)的超集,盡管E-R圖的重點(diǎn)是數(shù)據(jù),類圖的擴(kuò)展允許模型化行為。在物理數(shù)據(jù)庫(kù)中這些邏輯操作一半轉(zhuǎn)化為觸發(fā)器或存儲(chǔ)過程。

?

???????? 確定那些狀態(tài)比其生命周期要長(zhǎng)的類。

???????? 創(chuàng)建一張包含這些類的圖,標(biāo)記它們?yōu)槌志眯缘摹?/span>

???????? 詳細(xì)定義它們的屬性。

???????? 對(duì)于使得物理數(shù)據(jù)庫(kù)設(shè)計(jì)復(fù)雜的模式如:循環(huán)關(guān)系、1對(duì)1關(guān)系、N元關(guān)系,考慮創(chuàng)建中間抽象來使得邏輯結(jié)構(gòu)復(fù)雜。

???????? 詳細(xì)定義這些類的操作,特別是那些訪問數(shù)據(jù)和涉及數(shù)據(jù)完整性的方法。

???????? 如果可能的話使用工具來將你的邏輯設(shè)計(jì)轉(zhuǎn)化為物理設(shè)計(jì)。

?

7-2 模式建模

 

????建模是重要的,但要記住的是對(duì)于開發(fā)組來說軟件才是主要的產(chǎn)品,而不是圖。當(dāng)然,畫圖的主要目的是為了更好地理解系統(tǒng),預(yù)測(cè)什么時(shí)候可以提供什么樣的軟件來滿足用戶的需要。基于這個(gè)理由,讓你畫的圖對(duì)開發(fā)有指導(dǎo)意義是很重要的。

?

????某些時(shí)候,使用UML。你的模型并不能直接映射成為代碼。例如,如果你在使用活動(dòng)圖為一個(gè)商業(yè)過程建模,很多活動(dòng)實(shí)際上涉及人而不是計(jì)算機(jī)。

?

????很多時(shí)候,你創(chuàng)建的圖形可以被映射成為代碼。UML并不是專門為面向?qū)ο蟮恼Z(yǔ)言設(shè)計(jì)的,它支持多種語(yǔ)言,但使用面向?qū)ο蟮恼Z(yǔ)言會(huì)更直觀些,特別是類圖的映射,它的內(nèi)容可以直接映射成為面向?qū)ο笳Z(yǔ)言的內(nèi)容。如:C++,SMALLTALKADAObjectPascalEiffelForteUML還支持如Visual Basic這樣的面向?qū)ο蟮恼Z(yǔ)言。

?

????正向工程:是從圖到代碼的過程。通過對(duì)某中特定語(yǔ)言的映射可以從UML的圖得到該語(yǔ)言的代碼。正向工程會(huì)丟失信息,這是因?yàn)?/span>UML比任何一種程序語(yǔ)言的語(yǔ)義都豐富。這也正是為什么你需要UML模型的原因。結(jié)構(gòu)特性、協(xié)作、交互等可以通過UML直觀地表達(dá)出來,使用代碼就不是那么明顯了。

?

對(duì)類圖的正向工程:

???????? 選擇將圖形映射到哪一種程序語(yǔ)言。

???????? 根據(jù)你選擇的語(yǔ)言的語(yǔ)義,你可能要對(duì)使用某寫UML的特性加以限制。例如:UML允許你使用多重繼承,而SmallTalk只允許一重繼承。

???????? 使用標(biāo)記值來指定比的目的語(yǔ)言。你可以在類級(jí)進(jìn)行也可以在協(xié)作或包的層次上進(jìn)行。

???????? 使用工具來對(duì)你的模型進(jìn)行正向工程。

?

????反向工程:反向工程是從代碼到模型的過程。

進(jìn)行反向工程:

???????? 確定將你的程序語(yǔ)言的代碼反向成模型的規(guī)則。

???????? 使用工具(Rose C++ Analyzer)進(jìn)行反向工程。

?

提示和技巧

一個(gè)結(jié)構(gòu)化好的類圖:

???????? 焦點(diǎn)放在系統(tǒng)靜態(tài)設(shè)計(jì)視圖的一個(gè)方面

???????? 只包含為了理解該方面而應(yīng)該存在的元素

???????? 提供足夠的信息來理解該圖

???????? 不讓讀者產(chǎn)生錯(cuò)誤的信息

當(dāng)你畫類圖的時(shí)候:

???????? 給它起一個(gè)名字,這個(gè)名字能表達(dá)類圖的用途

用最少的交叉線來組織它的元素。
?

轉(zhuǎn)載于:https://www.cnblogs.com/springMVC/archive/2007/12/29/2204589.html

總結(jié)

以上是生活随笔為你收集整理的第七章 类图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。