物件導向分析方法中有五個主要活動,在前兩回的內容中,我們談到的尋找類別和物件是其中一項活動,接下來繼續介紹其他四種活動。特別提醒,這五項活動彼此沒有先後順序關係。
確立結構
在原著中,主要提到兩種結構(structure),其一是「一般化-特殊化結構」(generalization-specialization),另一種是「整體-部分結構」(whole-part)。
一般化-特殊化結構是類別之間的結構,通常我們會說,某一個特殊化的類別「是一種」(is a kind of)一般化的類別。比方說,照相手機是一種手機,如圖1所示。
在UML中,把整體-部分結構細分成兩類,其一稱為「聚合」(aggregation),另一種稱為「組合」(composition)。聚合與組合這兩種關係,都可以用來表達整體-部分結構,最大的差別在於,聚合關係中的整體物件與部分物件兩者的生命週期是彼此獨立的,但是組合關係中的整體物件則可以控制部分物件的生滅。
以音樂專輯為例,當某一個音樂專輯不存在時,收錄在音樂專輯中的歌曲並不會因此而消失,甚至某一首歌曲,可以重複收錄在多個不同音樂專輯中。這樣的情況,就適合使用聚合關係,如圖2所示。
再看到圖3的例子,剪刀主要是由兩個刀片和兩個刀柄所組成的,一旦這把剪刀報廢掉了,組成它的刀片和刀柄也將一併報廢掉,所以這個範例適合使用組合關係。
雖然,原著作者沒有細分整體-部分結構,卻提出了下列三種常見的整體-部分結構,很值得我們參考,如下:
● 總體-零件(assembly-parts)
● 容器-內容(container-contents)
● 集合-成員(collection members)
前面提到的圖3中,剪刀與刀片、刀柄之間的關係,屬於此處的集合-成員關係。還有,容器-內容的情況也很常見,像是貨櫃和物品之間的關係,就是容器-內容,如圖4所示。
至於,前面圖2所提到的音樂專輯與歌曲之間的關係,就是此處的集合-成員的情況。不過,集合-成員的情況並不一定是聚合關係,如果系統分析師想要表達整體物件可以控制部分物件的生滅時,就可以使用到組合關係。
譬如,銷售交易和銷售次項之間的情況,屬於集合-成員,但是銷售交易可以控制銷售次項的新增或刪除,所以適合採用組合關係,如圖5所示。
確立主題
「主題」(subject)是個群組機制,系統分析師可以用它來將大量的類別分群。在UML中,提供了「套件」(package)概念和圖示,用來將相關的元素群聚在一起,如圖6所示。
因此,系統分析師可以使用UML的套件圖示,來表達原著書中的主題概念。
一般來說,一個分析模式平均包含了35個類別,如果高達110個類別的話,那這個分析模式就太大了。面對過於龐大的分析模式,可以善用主題來將這些類別分群。
而且,最好採用「問題次領域」(problem sub-domains)做為主題範圍,這樣的主題會比傳統使用功能分解的角度要好多了。問題領域大約可以細分成4個到5個問題次領域,而且每一個問題次領域中,約略可以包含50到100個類別。
以線上購物系統為例,在這個問題領域中,系統分析師可以找到幾個問題次領域,像是:交易和貨品等等做為主題範圍,並且使用套件來表達它們,如圖7所示。
定義屬性與定義服務
物件需要保存的資料,記錄在類別中的屬性格中。以線上購物系統為例,系統必須負責保存顧客的姓名、密碼和電子郵址,因此顧客類別的屬性格中,便會列出這些需要保存的屬性,如圖8。
除了屬性之外,通常系統還需要保存物件之間的連結。在UML中,系統分析師可以使用「結合」(association)關係,來表達兩物件之間的連結。以線上購物系統為例,系統必須負責保存會員與銷售交易之間的連結,所以會員與銷售交易兩類別之間會有結合關係,如圖9所示。
在代表類別的三格矩形中,第一格放置類別名稱,第二格放置屬性,第三格則放置「操作」(operation),也就是物件所提供的服務,如圖10所示。
特別值得參考的是,原著作者依演算的複雜度,將服務分為簡單與複雜兩大類。其中列為簡單的服務有四種:
˙建立(create):建立或初始化屬於該類別的物件。
˙連接(connect):連接兩物件之間的關係。
˙存取(access):取出或設定物件的屬性值。
˙釋放(release):刪除物件,或者刪除兩物件之間的連結。
至於,演算較為複雜的服務有兩種:
˙計算(calculate):依據物件的屬性值來進行運算,譬如圖11例子中的「計算面積」操作,就屬於計算類的服務。
˙監控(monitor):所有與外界系統或設備有關的服務,都歸屬於監控類的服務。不過,一般商用系統較少見這類服務,通常是即時系統比較常見。
到目前為止,我們已經讀了原著作者Peter Coad的兩本書了,如果還想透過他簡潔精湛的文字,多認識些物件導向技術的話,建議你還可以找他寫的《Object-Oriented Design》和《Object Models:Strategies, Patterns, and Applications》這兩本書來讀讀。
熱門新聞
2025-12-12
2025-12-16
2025-12-15
2025-12-15
2025-12-15
2025-12-15
2025-12-15
2025-12-15