面向對象設計(OOD)方法與步驟

   儘管對OOD的地位和作用已經有一定的知識,但目前還沒有現成的,形式化的方法論。相應的工具也處於研究之中。下面簡要介紹OOD的基本方法和步驟

    1.類的認定
    OOD中關於類的認定與OOA中關於對象的認定有着密切關係。但是OOD中對類的認定,不能像OOA中那樣以準確反映問題空間爲衡量準則,更多的要考慮通過對類以及類層次結構的認定,尋找解空間的基本結構,併爲實現提供有效的支持。

    關於如何認定類現在還沒有嚴格的準則,對於下面的經驗準則,人們已經得到了共識。認爲這些準則有助於認定、定義類與方法(這裏方法與OOA中服務相對應)。

    (1)對於問題空間中自然出現的實體,用類進行模型化;
    (2)將方法設計成單用途的;
    (3)如果需要對已有方法進行擴展,就設計一個新的方法;
    (4)避免冗長的方法;
    (5)把那些爲多個方法或某個子類所需要的數據,存貯存實例變量中;
    (6)爲類庫設計,不要只爲你自己或者你目前的應用設計

    2.類的設計

    在任何的面向對象應用中,類實例是系統的主要部分,而且如果採用純面向對象的方法,那麼整個系統就是由類實例組成的。因此,每個獨立的類的設計對整個應用系統都有影響。在進行類的設計時,應考慮下面一些因素:

    (1)類的公共接口的單獨成員應該是類的操作符;
    (2)類A的實例不應該直接發送消息給類B的成分;
    (3)操作符是公共的當且僅當類實例的用戶可用;
    (4)屬於類的每個操作符要麼訪問要麼修改類的某個數據;
    (5)類必須儘可能少地依賴其他類;
    (6)兩個類之間的互相作用應該是顯式的;
    (7)採用子類繼承超類的公共接口,開發子類成員爲超類的特化;
    (8)繼承結構的根類應該是目標概念的抽象模型。

    3.類層次結構的組織

    OOD中類層次結構的組織與OOA採用的策略是相似的,但在涉及遞增開發時將有不同。OOA基於分類的概念,利用現實世界中對事物分類來認定對象及其分類結構,再導出相應的類層次結構。但是如果考慮重用已有的類層次結構,就會出現問題。從設計和實現的角度來看,需要類層次結構中的非葉結構點,也可以有實例。在這一點上,需要設計人員有紮實的面向對象概念基礎,有豐富的經驗,因而是掌握OOD和OOA的難點之一。

    支持重用是OOD的主要任務,繼承機制支持兩種層次的重用。在高層設計階段,繼承性可用作泛化 特化關係的建模工具。使用繼承機制促進開發出有意義的高級抽象,進而有助於重用。繼承關係的重用性使得設計者能夠在抽象中識別一般性,並從一般產生高級抽象。通過識別這種一般性,並把它從的較高的抽象中移出來,它就在當前或今後的設計中變成可重用。

    在詳細設計階段,繼承性支持已有類作爲新定義類的重用基礎,可以把已有的部分代碼複製到新子類中並修改,以適應其新的目的。繼承性在已有類和新的類之間建立了一種依賴關係,子類的新代碼不引起舊代碼失效,繼承的代碼被自動地包含在新定義中,並作爲新類的定義被編譯。對已有的類的任何修改都被歸併到下次編譯的新類中。

  4.類模塊之間的接口技術

    類之間的接口是中的一個關鍵,接口的方法大致有以下幾類:

    (1)通過繼承機制實現類之間的接口

    第一種方法是可定義兩層或多層:描述接口的通用類以及提供各種實現的子類(例如以列表作爲通用類,以堆棧,隊列等作爲列表的實現),從而實現同一接口,不同實現的接口方法。第二種方法使用繼承機制實現類模塊接口對稱目的:採用幾種接口到基本模塊中,通過繼承的正交性與輸出機制來實現此方法。通用類不作輸出,而多個子類執行不同的輸出。例如銀行的賬目作爲通用類,而由不同的用戶來實現對它的查詢。

    (2)使類實例具有人工智能的狀態機和主動數據結構

    在定義類實現抽象數據類型及數據抽象時,將這些抽象設置於“主動”方式。也就是說,類實例不僅作爲信息的被動集合,而且可看作具有內部狀態及局部存儲的狀態機。這爲類之間接口提供了有用的方法。

    5.對類庫和應用構架的支持

    OOD的最終目標是把方法和實例變量放在類庫中抽象層次儘可能高的類中,一個方法在類庫的類層次結構中的層次越高,能夠共享這個方法的子類就越多,以這種方式進行設計,就使重用達到了最大的可能限度。由於類庫的目標是支持重用,所以納入類庫的類層次結構必須仔細加以推敲。這裏主要指從有利於重用的角度來設計。儘管這方面還沒有形式化的方法論,因而也沒有完全自動化的工具,但可從下面3個方面着手:

    (1)改善標準的協議,在面對象系統中,消息傳遞是對象之間通信的唯一方式,從通信的角度來看,消息的內容便是對象之間的通信協議。應提高協議的標準化程度,如:爲相應的方法設計一致的接口;限制消息中的參數個數;簡化方法的功能等。

    (2)提高類的抽象程度,對於一個健全的類庫來說,它的層次結構在進行若干層次的子類設計後,應當是深而窄的。這是因爲,如果類層次結構中的層次較多。而每一層上的類少,就表明對象的共有特性經過了比較細緻的分層次抽象,使用類的特殊性逐漸增強,因而能夠提供較多的、在特定應用範疇內可普遍適用的類。

    (3)認定和培育構架,類庫中的類就象一般建築預製件,可以複雜到整個單元居室,也可以簡單到樑柱,規格比較標準,容易被獨立使用。但需要應用開發人員自己根據應用特徵進行組裝,因此類庫本身並不是重用的基本單位。相對地,構架則是以構件之間有密切的聯繫爲特徵,面向特定的應用範疇,以整個構架而不是其中的單個構件來體現它的能量,因此構架本身是重用的基本單位,一旦與應用特徵相符,就可以整體被重用。所以,構架是OOD是理想的目標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章