⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oobject102301.htm

📁 UML基础(好)
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><!-- InstanceBegin template="/Templates/neirong.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" --> 
<title>UML软件工程组织</title>
<!-- InstanceEndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable --> 
<style type="text/css">
<!--
@import url("style.css");
-->
</style>
</head>

<body>
<table width="760" height="38" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td width="129" align="center">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="100" height="71">
        <param name="movie" value="../images/logo.swf">
        <param name="quality" value="high">
        <embed src="logo-1.swf" tppabs="http://www.uml.org.cn/images/logo.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100" height="71"></embed></object></td>
    <td width="631"><B><FONT color=#008080 
      size=6>UML</FONT><FONT color=#008080><FONT face=方正姚体 color=#008080 
      size=6>软件工程</FONT><FONT face=方正姚体 size=6>组织</FONT></FONT></B>
      <table width="50%" border="0" align="right" cellpadding="0" cellspacing="1">
        <tr>
          <td class="content"><div align="center" class="content"><a href="javascript:if(confirm('http://www.uml.net.cn/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://www.uml.net.cn/'" tppabs="http://www.uml.net.cn/" target="_blank" class="content_a">北京火龙果软件工程技术中心</a></div></td>
        </tr>
      </table></td>
  </tr>
</table>
<hr width="760" size="1" noshade>
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> 
    <td height="56" align="center" valign="middle" class="title"> <B><FONT color=#ff0000 
size=3><!-- #BeginEditable "1" --></FONT><span class="h2">為何要使用 UML?<br>    
      </span><FONT color=#ff0000  
size=3><!-- #EndEditable --></FONT></B></td>
  </tr>
  <tr> 
    <td height="40" align="center" class="formtitle">
      <!-- #BeginEditable "2" --><span class="h2">Martin Fowler</span><!-- #EndEditable --></td>   
  </tr>
</table>
<table width="760" height="65" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td height="65" class="content"><!-- #BeginEditable "3" -->
      <table width="85%" border="0" align="center">
        <tr> 
          <td class="content"><font color="#000000">當今物件導向開發的世界中,第二條大新聞是什麼?那就是『統一模塑語言』</font><font face="Comic Sans MS" color="#000000">(Unified 
            Modeling Language; UML)</font><font color="#000000">,其不僅獲得物件管理小組</font><font face="Comic Sans MS" color="#000000">(Object 
            Management Group; OMG)</font><font color="#000000">所承認,也將取代 
            </font><font face="Comic Sans MS" color="#000000">Booch</font><font color="#000000">、</font><font face="Comic Sans MS" color="#000000">Coad</font><font color="#000000">、</font><font face="Comic Sans MS" color="#000000">Jacobson</font><font color="#000000">、</font><font face="Comic Sans MS" color="#000000">Odell</font><font color="#000000">、</font><font face="Comic Sans MS" color="#000000">Rumbaugh</font><font color="#000000">、</font><font face="Comic Sans MS" color="#000000">Wirfs-Brock 
            </font><font color="#000000">等分析及設計方法原先所使用的表示法,成為全新唯一的表示法。此舉將終結軟體開發人員究竟要使用那些方法,這類令人生厭的爭議,我們將進入和睦、友愛及提升生產力的新時期</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">就算那些舊架構的方法已經相當成熟了,卻從未達到這樣的水準, 
            對此也只能一笑置之</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">。</font>
            <p style="TEXT-INDENT: 32px"><font color="#000000">假如你是 </font><font face="Comic Sans MS" color="#000000">B.S. 
            (before standardization</font><font color="#000000">; 
            標準化之前</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">方法之一的方法迷</font><font face="Comic Sans MS" color="#000000">(keen 
            user)</font><font color="#000000">,你鑽研</font><font face="Comic Sans MS" color="#000000">(bite 
            the bullet)</font><font color="#000000">、轉換至 </font><font face="Comic Sans MS" color="#000000">UML 
            </font><font color="#000000">時,不免暗地抱怨,沒有看到你所喜愛方法中的 
            </font><font face="Comic Sans MS" color="#000000">x </font><font color="#000000">特性,而你所不喜歡的 
            </font><font face="Comic Sans MS" color="#000000">y </font><font color="#000000">及 
            </font><font face="Comic Sans MS" color="#000000">z </font><font color="#000000">特性卻充塞其中。但是,你是否真的冷靜下來,思考像 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">這樣的塑模表示法,為何是有用的嗎?</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">詢問一位方法論大師</font><font face="Comic Sans MS" color="#000000">(methodologist</font><font color="#000000">; 
            在我們業界指的是創造方法論的人</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">有關這方面的看法時,會招致一頓軟體品質如何如何的嚴厲訓斥。方法論大師會談論到,我們的產業遭受到怎樣的危機,缺乏軟體品質所遭致的問題,良好設計的重要性 
            </font><font face="Comic Sans MS" color="#000000">... </font><font color="#000000">等等。這樣也好</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">雖然我想軟體產業在最近幾十年已經做得很好了</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">,但是如何確實地實施 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">才是有幫助的?詢問 
            </font><font face="Comic Sans MS" color="#000000">CASE </font><font color="#000000">工具廠商時,你將會上一堂課,是有關改善品質、文件自動化及程式碼產生器的生產值,然而我們大家都知道,</font><font face="Comic Sans MS" color="#000000">CASE 
            </font><font color="#000000">工具廠商接下來的動作會是什麼。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">假如你是一位開發人員,質疑所有方法的本質,不過是另類的管理流行時尚,你一想起會產生毫無用處的紙張,就感到戰慄,然後 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">恰好佯裝成關懷這類問題,而成為另一種表示法</font><font face="Comic Sans MS" color="#000000">(notation)</font><font color="#000000">,至少這是目前僅有的。可是,你也瞭解下次你必須更改系統時,在你必須修護程式碼往後的幾個版本,這些 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">圖還是有所助益的。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">我早在軟體職業生涯中學會方法,既使我具有工程的背景,然而這些方法似乎成為一種天然的知識領域,這般的吸引著我。大多數的工程科系採用繪圖來描述如何建構事物,同時相當用心的 
            ,根據這份設計圖來做這些事物,我明白方法論的圖型也具相同功效。有段時間,我學習類似的方式</font><font face="Comic Sans MS" color="#000000">(the 
            lie of that analogy)</font><font color="#000000">,然而我仍舊發現這些方法是有用的,儘管我對於某些開發人員不喜歡這些方法深表同情。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">接著下來我要說明為何我發現 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">是有用的,首先我快速的提醒各位, 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">『<b>是一種塑模語言,而非方法</b></font><b><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">或方法論</font><font face="Comic Sans MS" color="#000000">)</font></b><font color="#000000">』,同時以此作為下面論述的開始。</font><font face="Comic Sans MS" color="#000000">UML 
            </font><font color="#000000">訂定了一些圖型,以及這些圖型的意涵。而方法則更進一步描述開發軟體的步驟,什麼樣的圖型在什麼順序中產生,由誰來做那些工作 
            </font><font face="Comic Sans MS" color="#000000">... </font><font color="#000000">等。支持 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">的方法是各自獨立的,過了明年或明後年,我們將看到不同人士提供各種運用 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">表示法的方法。然而,你不須要使用方法,才會利用 
            </font><font face="Comic Sans MS" color="#000000">UML</font><font color="#000000">,在這篇文章裡,我不去假定任何特定的開發方法。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">因此,如果我們除去所有方法的裝飾,除了少數你能夠繪製的圖型樣式外,被留下來的還有什麼?這個問題,從「</font><font face="Comic Sans MS" color="#000000">UML 
            </font><font color="#000000">有什麼用途?」變成了「這些圖型有什麼用?」</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">答案可以歸結成一詞:『<b>溝通</b>』</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">譯註:英文是一字:</font><font face="Comic Sans MS" color="#000000">communication)</font><font color="#000000">,這是一個重要的詞彙,軟體如此地迷惘 
            ,以致於難以開發的原因,主要就在於<b>溝通</b>。我們知道,假若我們只要在週末偷閒一下,而程式碼就此消失,事情將是如何簡單,困難的癥結在於我們必須與多位開發人員溝通。</font><font face="Comic Sans MS" color="#000000">UML 
            </font><font color="#000000">之所以重要,就是因為它有助於軟體開發人員之間的溝通。我們必須在某種程度上使用它,以協助溝通,而非阻礙溝通。</font></p>
            <p> </p>
            <table width="416" border="0" vspace="5" hspace="5">
              <tbody>
                <tr>
                  <td align="middle"><font color="#000000"><img height="350" src="0003zf11.gif" tppabs="http://www.dotspace.twmail.net/umlcolumn/articles/umlwriting/image/0003zf11.gif" width="317" border="1"></font></td>
                </tr>
                <tr>
                  <td align="middle"><font color="#000000"><b>圖解</b><font face="Comic Sans MS"><b> 
                    1. UML 圖型,用以展示 Java AWT Container 類別的 
                    Container</b></font></font></td>
                </tr>
              </tbody>
            </table>
            <p style="TEXT-INDENT: 32px"><font color="#000000">圖解 </font><font face="Comic Sans MS" color="#000000">1 
            </font><font color="#000000">說明了 </font><font face="Comic Sans MS" color="#000000">UML 
            </font><font color="#000000">如何協助溝通的範例,此圖型一開始是用來描述 
            </font><font face="Comic Sans MS" color="#000000">Java </font><font color="#000000">抽象視窗工具集</font><font face="Comic Sans MS" color="#000000">(Java's 
            Abstract Windowing Toolkit; AWT)</font><font color="#000000">的容器類別</font><font face="Comic Sans MS" color="#000000">(Container 
            class)</font><font color="#000000">,透過閱讀這個圖型,我能夠了解一大堆東西。我能夠瞭解容器</font><font face="Comic Sans MS" color="#000000">(Container)</font><font color="#000000">是元件</font><font face="Comic Sans MS" color="#000000">(Component)</font><font color="#000000">的子型態</font><font face="Comic Sans MS" color="#000000">(subtype)</font><font color="#000000">,可以把元件製作成可視的</font><font face="Comic Sans MS" color="#000000">(visible)</font><font color="#000000">或主動的</font><font face="Comic Sans MS" color="#000000">(active)</font><font color="#000000">,以及其他類型的元件,這些元件包括標籤</font><font face="Comic Sans MS" color="#000000">(labels)</font><font color="#000000">、按鈕</font><font face="Comic Sans MS" color="#000000">(buttons)</font><font color="#000000">以及其他種種。我可以詢問一個容器有關它所包容的元件,但是並非所有的元件都需要容器。容器</font><font face="Comic Sans MS" color="#000000">(Containers)</font><font color="#000000">包含元件</font><font face="Comic Sans MS" color="#000000">(Components)</font><font color="#000000">,容器</font><font face="Comic Sans MS" color="#000000">(Containers)</font><font color="#000000">也可能包含其他容器</font><font face="Comic Sans MS" color="#000000">(Containers)</font><font color="#000000">,同時容器擁有一個佈置管理者</font><font face="Comic Sans MS" color="#000000">(layout 
            manager)</font><font color="#000000">。容器就如同元件般,屬於抽象類別</font><font face="Comic Sans MS" color="#000000">(abstract 
            class)</font><font color="#000000">,其子型態包含畫板</font><font face="Comic Sans MS" color="#000000">(panels)</font><font color="#000000">及視窗</font><font face="Comic Sans MS" color="#000000">(windows)</font><font color="#000000">。視窗能夠顯示及處置視窗本身,視窗也有框架</font><font face="Comic Sans MS" color="#000000">(frame)</font><font color="#000000">及對話方塊</font><font face="Comic Sans MS" color="#000000">(dialog)</font><font color="#000000">兩種子類別</font><font face="Comic Sans MS" color="#000000">(subclasses)</font><font color="#000000">,兩者皆有標題列,同時能夠設定其大小是否可以變更</font><font face="Comic Sans MS" color="#000000">(resize)</font><font color="#000000">。雖然視窗的兩種子類別都可以做上述的事,然而這些行為並非視窗本身的一部分。可以將對話方塊</font><font face="Comic Sans MS" color="#000000">(Dialogs)</font><font color="#000000">標示為模組式</font><font face="Comic Sans MS" color="#000000">(modal)</font><font color="#000000">,然而框架</font><font face="Comic Sans MS" color="#000000">(frames)</font><font color="#000000">卻不可以。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">你可能喜歡這個圖型,也有可能喜歡我前面那段論述,這端賴你是否熟悉 
            </font><font face="Comic Sans MS" color="#000000">UML</font><font color="#000000">,以及你是喜歡視覺化的敘述,或者喜歡敘事式的陳述。關於此,我喜歡視覺化,然而有些人喜歡文字方式,即使他們也懂得這些圖型。你可以給他們文字描述,或者</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">或許會更好</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">給他們一段程式碼選集</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">如<a href="#Listing 1">列表 
            </a></font><a href="#Listing 1"><font face="Comic Sans MS" color="#000000">1 
            </font></a><font color="#000000">所示</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">。那一個是你願意選擇的?那一個是你的同僚所想要的?這些問題對於 
            </font><font face="Comic Sans MS" color="#000000">UML </font><font color="#000000">及類似語言的角色是至關緊要的。我發現有些人喜歡文字的方式,有些人喜歡圖型的方式,還有某些人在某些事物上選擇圖型,同時在某些事物上選擇文字。最後,圖型僅有在可以強化溝通的情況下才值得去做。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">除了注意那些圖型展示甚麼之外,你也該注意到那些圖型不能夠展示甚麼,類別整體描述有較圖解 
            </font><font face="Comic Sans MS" color="#000000">1 </font><font color="#000000">或<a href="#Listing 1">列表 
            </a></font><font face="Comic Sans MS" color="#000000"><a href="#Listing 1">1</a> 
            </font><font color="#000000">所標示的介面更大。我未曾提到佈置管理者</font><font face="Comic Sans MS" color="#000000">(Layout 
            Manager)</font><font color="#000000">是一個介面,或者那個元件實作若干介面,許多人可能會因此而責難圖解 
            </font><font face="Comic Sans MS" color="#000000">1 </font><font color="#000000">不夠完整。它是不完整,但不完整是一種缺點嗎?在圖型裡,我決定去描寫那些類別的特性,並且慎重的決定那些不該顯示出來。事實上,我所顯示出來的某些特性,就是我所要突顯出來的特性。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">選擇所要強調的資訊,是溝通很重要的一環。在類別的任一群體中,為了取得這些類別最初的理解,去了解某些觀點</font><font face="Comic Sans MS" color="#000000">(aspects)</font><font color="#000000">是相當重要的。假如你展示每件事,你會失去引出那些特點,同時你的讀者會對於首要了解的事物,以及往後才須專注的細枝末節毫無概念。當我使用類別圖,我是為了最初的理解而利用它們,以便於瞭解我想表達這些類別的關鍵觀點。我知道讀者經常是從 
            </font><font face="Comic Sans MS" color="#000000">Javadoc </font><font color="#000000">檔案中,去取得這些介面完整的敘述。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">我鼓勵你以這種有選擇性的方式來使用類別圖,這樣做不僅可以促進圖型溝通的價值,也可以使它們容易維護</font><font face="Comic Sans MS" color="#000000">(keep 
            up to date)</font><font color="#000000">。你無須為了類別每一個小改變就變更圖型,既然難以維護這些各式各樣的圖型,為重大的問題之一,這種做法就有相當大的好處。</font></p>
            <p style="TEXT-INDENT: 32px"><font color="#000000">就像鼓勵有選擇性一般,我也鼓勵人們去強調介面</font><font face="Comic Sans MS" color="#000000">(interface)</font><font color="#000000">而非實作。我在元件上顯示一個 
            </font><font face="Comic Sans MS" color="#000000">isEnabled </font><font color="#000000">的屬性</font><font face="Comic Sans MS" color="#000000">(attribute)</font><font color="#000000">,這不是說元件類別有一個資料欄位</font><font face="Comic Sans MS" color="#000000">(field)</font><font color="#000000">稱為 
            </font><font face="Comic Sans MS" color="#000000">isEnabled (</font><font color="#000000">我真的沒有注意到,因為它無關緊要</font><font face="Comic Sans MS" color="#000000">)</font><font color="#000000">。其所表達的意思是你可以假設這個類別有這樣的屬性,然而你要從類別外部透過適當的操作</font><font face="Comic Sans MS" color="#000000">(operations)</font><font color="#000000">來存取內部的資料。理論下,可能有這些操作的命名約定</font><font face="Comic Sans MS" color="#000000">(</font><font color="#000000">在 
            </font><font face="Comic Sans MS" color="#000000">Java </font><font color="#000000">程式庫的這些日子,命名的方式為 
            </font><font face="Comic Sans MS" color="#000000">isBooleanAttribute 
            </font><font color="#000000">及 </font><font face="Comic Sans MS" color="#000000">setBooleanAttribute)</font><font color="#000000">。我不顯示類別的操作,因為我發現屬性的表示方式 
            ,更能適當地傳達程式碼的意圖。屬性也可延伸至結合關係</font><font face="Comic Sans MS" color="#000000">(associations)</font><font color="#000000">,我不知道容器</font><font face="Comic Sans MS" color="#000000">(Container)</font><font color="#000000">及元件</font><font face="Comic Sans MS" color="#000000">(Component)</font><font color="#000000">之間存在那些資料結構,這些操作會使人聯想到這些結合關係。</font></p>
            <p style="TEXT-INDENT: 32px"><font face="Comic Sans MS" color="#000000">許多人士以實作的觀點來繪製類別圖,即是將屬性(attributes)及結合關係(associations)反映至資料結構中,這些資料結構之所以有用,乃在於你期望表達甚麼。無論如何,通常 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -