• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            《設計模式精解》學習日志1

            Posted on 2007-06-14 10:09 Michael Liang 閱讀(729) 評論(0)  編輯 收藏 引用 所屬分類: 學習日志

            在程序設計中,

                內聚度:程序中操作之間聯系緊密的程度,反應一個子程序內部成份相互聯系的強度

                耦合度:兩子程序之間聯系的強度

            顯然,程序設計的目標是強內聚和松耦合(子程序內部完整性強,與其他子程序的聯系靈活,程度?。?。

            功能分解是面向過程設計時很自然的一種處理復雜問題的方法,它的基本思想是把問題拆分成多個功能步驟。,由于“需求總會發生變化”,因此不可避免的程序設計時要處理變化。對此功能分解的對策是模塊化設計,但是模塊化設計的一大缺點是低聚合和緊耦合,“牽一發而動全身”。

            UML Relationships(關系)初探

            基本關系有四種:依賴(Dependency), 關聯(Association), 泛化(Generalization),實現(Realization)
            每種都可以細化為變體。

            依賴關系(Dependency)
                是事物(Thing)之間的關系, 因此包括類之間的關系、包之間的關系、用例之間的關系、對象之間的關系、建模元素與模型之間的關系等。
                依賴關系用虛線加普通箭頭表示,由客戶(源*)指向供應(目標*)

                兩個類之間的依賴關系可以是:
                客戶類訪問定義在供應者類內部的數據值
                客戶類的操作調用了定義在供應者類內部的操作
                客戶類的返回類或參數是供應者類的實例
                如果在順序圖中的兩個對象存在消息的傳送,而且它們之間沒有結構方面的連接,可以在類圖上用依賴關系建模。
               
            類之間依賴關系的細化:
            a.友元依賴<<friend>>
                目標類視源類為友元,允許源類訪問目標類的所有私有屬性和操作
                例: 目標類:二叉樹,源類:迭代器
            b.導出依賴<<derive>>
                源類可以從目標類通過計算得出。
                例: 源類: 年齡Age   目標類: 出生日期
            c.細化依賴<<refine>>
                在類圖中表示同一模型的不同詳細程度的規格說明,源類比目標類更為詳細.
            d.實例化依賴<<instantiate>>
                一個類的對象是由另一個的對象創建,則稱為實例化依賴。源類創建了目標的一個實例
                例:源類: Array        目標類: Stack 
            e.使用依賴<<use>>
                不加任何修飾的依賴即為使用依賴。
                如Binary Search Tree類使用依賴于Binary Tree類
            f.綁定(Binding)依賴
                目標類是模板類,源類是模板實例化后的類
               
            包(package)之間依賴關系的細化:
            a.訪問依賴<<access>>
                源包被授予了可訪問目標包的權限
            b.導入依賴<<import>>
                它表明了源包可以訪問目標包里的元素,但各個包有自己獨立的命名空間,這意味著屬于不同包的兩個元素可以重名。導入
                依賴可以使目標包內的公共可見元素進入源包的命名空間。

            用例(use case)之間依賴關系的細化:
            a.包含依賴<<include>>
                源用例顯式的包含目標用例作為其行為的一部分。此時源用例稱為基用例,目標用例稱為內含用例
                如果兩個用例存在包含依賴關系,則說明基用例的動作序列中含有特定的步驟把內含用例的動作序列包含進來
            b.擴展依賴<<extend>>
                它表明源用例擴展了目標用例的行為。此時,源用例稱為基用例,目標用例稱為擴展用例。
                擴展用例在特定條件下為基用例提供附加的動態行為。
                例如,在人機交互過程(基用例)中出現差錯時進行的異常處理即為擴展動作。
                擴展依賴與包含依賴的區別在于,如果僅將擴展從基用例地動作序列中去除,基用例仍然是語義完備的,
                即它的執行仍將產生有意義的結果。而包含依賴則不然。

            對象之間依賴關系的細化:
            a.轉換依賴<<become>>
                當需要在交互圖上表示對象狀態的轉換時可以用轉換依賴。主要強調由于消息而導致對象狀態的改變。
                轉換依賴連接的目標對象和源對象是同一個對象。
            b.調用依賴<<call>>
                當需要在交互圖或對象圖上顯式強調對象之間或操作之間的調用關系時要用調用依賴。
                它表明源對象引用了目標對象的操作,或源操作引用了目標操作。
            c.復制依賴<<copy>>
               為了在交互圖或活動圖上描述對象復制的動作可以采用復制依賴。它連接兩個對象,目標對象是源對象的完全相同而又獨立的副本。
            d.發送依賴<<send>>
                它連接一個對象(在源端)和一個消息(在目標端),表明源對象在交互過程中發送了一個消息,可以用在狀態機的描述中。
                它針對內嵌有狀態機的對象,可用來描述如何通過發送信號以產生某種事件的動作。
               
            建模元素與模型之間的依賴關系:
            a.回溯依賴<<trace>>
                它連接兩個模型元素,表明目標是源的歷史上的前驅。如交互和協作就是從用例導出的。
               
            關聯關系(association)
                關聯是一種結構關系, 它描述一組鏈,這些鏈是類之間或類與接口之間的連接。
                通過這種連接,一個對象可以訪問另一個對象的屬性或調用另一個對象的操作。
                關聯是雙向的,其中的角色代表一個類的對象在另一個類中的存在。
                例: 兩個類Employee, Employer存在關聯關系
               
                聚合(aggregation)是一種特殊類型的關聯, 它描述整體與部分的結構關系。整體端有一個菱形作為標記
                復合聚合(composite aggregation)是一種特殊的聚合關系, 又稱組合,它表明整體對象與部分對象有相同的生存周期。
                角色的復雜度(Multiplicity)指角色在關聯關系中出現的次數,如1, 0..1, 1..*, *等

                例如,對應于現實中的飛機場Airport, 可以說它聚合了0..*架飛機Aircraft,同樣的,一架Aircraft被0..1個Airport包容(可能處于飛行狀態),此時Airport與Aircraft的關系是聚合。

                又如,一輛汽車Car,用于4~5個輪胎Tire(可能有備用胎),Car和Tire是密不可分的,Tire是Car的一部分,因此用組合來表示二者之間的關系。一個Car組合了4..5個Tire,一個Tire屬于1輛Car

                聚合和組合都可以說是一種has-a關系,“擁有”,Airport“擁有”Aircraft,Car“擁有”Tire,二者的區別在于組合強調的“擁有”是真正意義的部分與整體的關系,從程序設計角度來看組合關系雙方生存期一致,同生共死;聚合的“擁有”則更多強調部分的一個集合與整體有從屬關系,部分集合內部各元素是獨立的。

             

            久久精品国产亚洲av麻豆色欲| 色婷婷狠狠久久综合五月| 99久久精品免费看国产一区二区三区| 久久久久国产| 少妇无套内谢久久久久| 91精品国产9l久久久久| 久久久精品国产亚洲成人满18免费网站 | 久久精品国产久精国产果冻传媒| 东方aⅴ免费观看久久av| 精品少妇人妻av无码久久| 国产精品欧美亚洲韩国日本久久 | 久久精品九九亚洲精品| 国产AV影片久久久久久| 亚洲精品国精品久久99热一| 国产成人久久精品二区三区| 无码AV波多野结衣久久| 久久精品视频一| 99热成人精品免费久久| 777米奇久久最新地址| 久久久久久精品免费免费自慰| 国产精品久久久天天影视香蕉| 久久婷婷成人综合色综合| 亚洲?V乱码久久精品蜜桃| 精品久久久久久国产三级| 99久久精品费精品国产一区二区| 偷偷做久久久久网站| 日批日出水久久亚洲精品tv| 国产精品成人99久久久久| www久久久天天com| 97久久精品无码一区二区天美| 久久九九久精品国产免费直播| 亚洲国产综合久久天堂 | 久久久久高潮综合影院| 伊人精品久久久久7777| 国内精品久久久久久久影视麻豆 | 国产精品久久午夜夜伦鲁鲁| 中文字幕热久久久久久久| 亚洲精品无码久久久久sm| 综合网日日天干夜夜久久| 亚洲va久久久噜噜噜久久天堂| 亚洲AV无码久久精品狠狠爱浪潮 |