?? uml基礎(chǔ) 統(tǒng)一建模語言簡介.htm
字號:
200排行榜的報告。這個圖還告訴我們,系統(tǒng)將通過一個名為"排行榜報告服務(wù)"的外部系統(tǒng)提供Billboard排行榜報告。 </P>
<P>此外,在用例圖中,沒有列出的用例表明了該系統(tǒng)不能完成的功能。例如,它不能提供給樂隊經(jīng)理收聽Billboard
200上不同專輯中的歌曲的途徑 -- 也就是說,系統(tǒng)沒有引用一個叫做"收聽Billboard
200上的歌曲"的用例。這種缺少不是一件小事。在用例圖中提供清楚的、簡要的用例描述,項目贊助商就很容易看出系統(tǒng)是否提供了必須的功能。
</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/blue_rule.gif" width="100%"><BR><IMG
height=6 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/rational/r-uml/#main"><B>回頁首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=3><SPAN class=atitle>類圖</SPAN></A></P>
<P><BR>類圖表示不同的實體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖可用于表示邏輯類,邏輯類通常就是業(yè)務(wù)人員所談及的事物種類--搖滾樂隊、CD、廣播劇;或者貸款、住房抵押、汽車信貸以及利率。類圖還可用于表示實現(xiàn)類,實現(xiàn)類就是程序員處理的實體。實現(xiàn)類圖或許會與邏輯類圖顯示一些相同的類。然而,實現(xiàn)類圖不會使用相同的屬性來描述,因為它很可能具有對諸如Vector和HashMap這種事物的引用。
</P>
<P>類在類圖上使用包含三個部分的矩形來描述,如圖2所示。最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作(或者說"方法")。
</P><BR><IMG alt=類圖中的示例類對象 src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image002.gif">
<BR>
<P><B>圖2:類圖中的示例類對象</B> </P>
<P>根據(jù)我的經(jīng)驗,幾乎每個開發(fā)人員都知道這個類圖是什么,但是我發(fā)現(xiàn)大多數(shù)程序員都不能正確地描述類的關(guān)系。對于像圖3這樣的類圖,您應(yīng)該使用帶有頂點指向父類的箭頭的線段來繪制繼承關(guān)系1,并且箭頭應(yīng)該是一個完全的三角形。如果兩個類都彼此知道對方,則應(yīng)該使用實線來表示關(guān)聯(lián)關(guān)系;如果只有其中一個類知道該關(guān)聯(lián)關(guān)系,則使用開箭頭表示。
</P><BR><IMG alt=一個完整的類圖 src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image003.gif">
<BR>
<P><B>圖3:一個完整的類圖,包括了圖2所示的類對象</B> </P>
<P>在圖3中,我們同時看到了繼承關(guān)系和兩個關(guān)聯(lián)關(guān)系。CDSalesReport類繼承自Report類。一個CDSalesReport類與一個CD類關(guān)聯(lián),但是CD類并不知道關(guān)于CDSalesReport類的任何信息。CD類和Band類都彼此知道對方,兩個類彼此都可以與一個或者多個對方類相關(guān)聯(lián)。
</P>
<P>一個類圖可以整合其他許多概念,這將在本系列文章的后續(xù)文章中介紹。 </P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/blue_rule.gif" width="100%"><BR><IMG
height=6 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/rational/r-uml/#main"><B>回頁首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=4><SPAN class=atitle>序列圖</SPAN></A></P>
<P><BR>序列圖顯示具體用例(或者是用例的一部分)的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中中不同對象之間的調(diào)用關(guān)系,同時還可以很詳細(xì)地顯示對不同對象的不同調(diào)用。
</P>
<P>序列圖有兩個維度:垂直維度以發(fā)生的時間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對象實例。 </P>
<P>序列圖的繪制非常簡單。橫跨圖的頂部,每個框(參見圖4)表示每個類的實例(對象)。在框中,類實例名稱和類名稱之間用空格/冒號/空格來分隔,例如,myReportGenerator
:
ReportGenerator。如果某個類實例向另一個類實例發(fā)送一條消息,則繪制一條具有指向接收類實例的開箭頭的連線,并把消息/方法的名稱放在連線上面。對于某些特別重要的消息,您可以繪制一條具有指向發(fā)起類實例的開箭頭的虛線,將返回值標(biāo)注在虛線上。就我而言,我總喜歡繪制出包括返回值的虛線,這些額外的信息可以使得序列圖更易于閱讀。
</P>
<P>閱讀序列圖也非常簡單。從左上角啟動序列的"驅(qū)動"類實例開始,然后順著每條消息往下閱讀。記住:雖然圖4所示的例子序列圖顯示了每條被發(fā)送消息的返回消息,但這只是可選的。
</P><BR><IMG alt=一個示例序列圖 src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image004.gif">
<BR>
<P><B>圖4:一個示例序列圖</B> </P>
<P>通過閱讀圖4中的示例序列圖,您可以明白如何創(chuàng)建一個CD銷售報告(CD Sales
Report)。其中的aServlet對象表示驅(qū)動類實例。aServlet向名為gen的ReportGenerator類實例發(fā)送一條消息。該消息被標(biāo)為generateCDSalesReport,表示ReportGenerator對象實現(xiàn)了這個消息處理程序。進(jìn)一步理解可發(fā)現(xiàn),generateCDSalesReport消息標(biāo)簽在括號中包括了一個cdId,表明aServlet隨該消息傳遞一個名為cdId的參數(shù)。當(dāng)gen實例接收到一條generateCDSalesReport消息時,它會接著調(diào)用CDSalesReport類,并返回一個aCDReport的實例。然后gen實例對返回的aCDReport實例進(jìn)行調(diào)用,在每次消息調(diào)用時向它傳遞參數(shù)。在該序列的結(jié)尾,gen實例向它的調(diào)用者aServlet返回一個aCDReport。
</P>
<P>請注意:圖4中的序列圖相對于典型的序列圖來說太詳細(xì)了。然而,我認(rèn)為它才是足夠易于理解的,并且它顯示了如何表示嵌套的調(diào)用。對于初級開發(fā)人員來說,有時把一個序列分解到這種詳細(xì)程度是很有必要的,這有助于他們理解相關(guān)的內(nèi)容。
</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/blue_rule.gif" width="100%"><BR><IMG
height=6 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/rational/r-uml/#main"><B>回頁首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=5><SPAN class=atitle>狀態(tài)圖</SPAN></A></P>
<P><BR>狀態(tài)圖表示某個類所處的不同狀態(tài)和該類的狀態(tài)轉(zhuǎn)換信息。有人可能會爭論說每個類都有狀態(tài),但不是每個類都應(yīng)該有一個狀態(tài)圖。只對"感興趣的"狀態(tài)的類(也就是說,在系統(tǒng)活動期間具有三個或更多潛在狀態(tài)的類)才進(jìn)行狀態(tài)圖描述。
</P>
<P>如圖5所示,狀態(tài)圖的符號集包括5個基本元素:初始起點,它使用實心圓來繪制;狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;狀態(tài),它使用圓角矩形來繪制;判斷點,它使用空心圓來繪制;以及一個或者多個終止點,它們使用內(nèi)部包含實心圓的圓來繪制。要繪制狀態(tài)圖,首先繪制起點和一條指向該類的初始狀態(tài)的轉(zhuǎn)換線段。狀態(tài)本身可以在圖上的任意位置繪制,然后只需使用狀態(tài)轉(zhuǎn)換線條將它們連接起來。
</P><BR><IMG alt=顯示類通過某個功能系統(tǒng)的各種狀態(tài)的狀態(tài)圖
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image005.gif"> <BR>
<P><B>圖5:顯示類通過某個功能系統(tǒng)的各種狀態(tài)的狀態(tài)圖</B> </P>
<P>圖5中的狀態(tài)圖顯示了它們可以表達(dá)的一些潛在信息。例如,從中可以看出貸款處理系統(tǒng)最初處于Loan
Application狀態(tài)。當(dāng)批準(zhǔn)前(pre-approval)過程完成時,根據(jù)該過程的結(jié)果,或者轉(zhuǎn)到Loan
Pre-approved狀態(tài),或者轉(zhuǎn)到Loan
Rejected狀態(tài)。這個判斷(它是在轉(zhuǎn)換過程期間做出的)使用一個判斷點來表示--即轉(zhuǎn)換線條間的空心圓。通過該狀態(tài)圖可知,如果沒有經(jīng)過Loan
Closing狀態(tài),貸款不可能從Loan Pre-Approved狀態(tài)進(jìn)入Loan in
Maintenance狀態(tài)。而且,所有貸款都將結(jié)束于Loan Rejected或者Loan in Maintenance狀態(tài)。
</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/blue_rule.gif" width="100%"><BR><IMG
height=6 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/rational/r-uml/#main"><B>回頁首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=6><SPAN class=atitle>活動圖</SPAN></A></P>
<P><BR>活動圖表示在處理某個活動時,兩個或者更多類對象之間的過程控制流。活動圖可用于在業(yè)務(wù)單元的級別上對更高級別的業(yè)務(wù)過程進(jìn)行建模,或者對低級別的內(nèi)部類操作進(jìn)行建模。根據(jù)我的經(jīng)驗,活動圖最適合用于對較高級別的過程建模,比如公司當(dāng)前在如何運作業(yè)務(wù),或者業(yè)務(wù)如何運作等。這是因為與序列圖相比,活動圖在表示上"不夠技術(shù)性的",但有業(yè)務(wù)頭腦的人們往往能夠更快速地理解它們。
</P>
<P>活動圖的符號集與狀態(tài)圖中使用的符號集類似。像狀態(tài)圖一樣,活動圖也從一個連接到初始活動的實心圓開始。活動是通過一個圓角矩形(活動的名稱包含在其內(nèi))來表示的。活動可以通過轉(zhuǎn)換線段連接到其他活動,或者連接到判斷點,這些判斷點連接到由判斷點的條件所保護(hù)的不同活動。結(jié)束過程的活動連接到一個終止點(就像在狀態(tài)圖中一樣)。作為一種選擇,活動可以分組為泳道(swimlane),泳道用于表示實際執(zhí)行活動的對象,如圖6所示。</P><BR><IMG
alt=活動圖 src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image006.gif"> <BR>
<P><B>圖6:活動圖,具有兩個泳道,表示兩個對象的活動控制:樂隊經(jīng)理,以及報告工具</B> </P>
<P>圖字(沿箭頭方向):樂隊經(jīng)理;報告工具;選擇"查看樂隊的銷售報告";檢索該樂隊經(jīng)理所管理的樂隊;顯示報告條件選擇屏幕;選擇要查看其銷售報告的樂隊;從銷售數(shù)據(jù)庫檢索銷售數(shù)據(jù);顯示銷售報告。
</P>
<P>該活動圖中有兩個泳道,因為有兩個對象控制著各自的活動:樂隊經(jīng)理和報告工具。整個過程首先從樂隊經(jīng)理選擇查看他的樂隊銷售報告開始。然后報告工具檢索并顯示他管理的所有樂隊,并要求他從中選擇一個樂隊。在樂隊經(jīng)理選擇一個樂隊之后,報告工具就檢索銷售信息并顯示銷售報告。該活動圖表明,顯示報告是整個過程中的最后一步。</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/blue_rule.gif" width="100%"><BR><IMG
height=6 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif" width=8
border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0 align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/c.gif"
width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt=""
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/u_bold.gif" width=16
border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www.ibm.com/developerworks/cn/rational/r-uml/#main"><B>回頁首</B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=7><SPAN class=atitle>組件圖</SPAN></A></P>
<P><BR>組件圖提供系統(tǒng)的物理視圖。它的用途是顯示系統(tǒng)中的軟件對其他軟件組件(例如,庫函數(shù))的依賴關(guān)系。組件圖可以在一個非常高的層次上顯示,從而僅顯示粗粒度的組件,也可以在組件包層次2上顯示。
</P>
<P>組件圖的建模最適合通過例子來描述。圖7顯示了4個組件:Reporting Tool、Billboard
Service、Servlet 2.2 API和JDBC API。從Reporting Tool組件指向Billboard
Service、Servlet 2.2 API和JDBC API組件的帶箭頭的線段,表示Reporting Tool依賴于那三個組件。
</P><BR><IMG alt=組件圖顯示了系統(tǒng)中各種軟件組件的依賴關(guān)系
src="UML基礎(chǔ) 統(tǒng)一建模語言簡介.files/image007.gif"> <BR>
<P><B>圖7:組件圖顯示了系統(tǒng)中各種軟件組件的依賴關(guān)系</B> </P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -