第13章 術 語 大 全 (8)

331.子狀態(substate)
作爲複合狀態一部分的一個狀態。
見覆合狀態(composite state)、併發子狀態(concurrent substate)、互斥子狀態(disjoint substate)。
332.可替代性規則(substitutability principle)
給定其類型聲明爲X的變量或者參數的一個定義,任何X後代的實例都可以用做實際值而不會違反聲明和使用的語義,這就是可替代性規則。換言之,後代元素的實例可以替代祖先元素的實例。(這是 Barbara Liskov 的貢獻)
見泛化(generalization)、實現繼承(implementation inheritance)、繼承(inheritance)、接口繼承(interface inheritance)、多態(polymorphic)、私有繼承(private inheritance)。
討論
可替代性規則的目的是使多態操作可以正常工作。這不是一個邏輯規則,而是提供一定封裝性的實用編程規則。泛化關係支持可替代性。
可替代性規則使得孩子不能去掉或者放棄它的父親的屬性。否則,孩子就不能在其父親被聲明的地方替代。
333.子系統(subsystem)
作爲一個整體處理的元素構成的包,包括把包的內容作爲一個內在整體處理時對其行爲的聲明。子系統被模型化爲包和類。子系統有一個接口的集合,這些接口描述了它與系統的其他部分的聯繫以及在何種情況下可以使用它們。
見 接口(interface)、包(package)、實現(realization)。
語義
子系統是系統的一個內在的可以被作爲一個抽象獨立單元的部分。它代表系統的某一部分自然發生的行爲。作爲一個整體,它有它自己的行爲聲明和實現部分。它的行爲聲明定義了作爲一個整體,它和別的子系統交互的自然發生的行爲。它的行爲聲明以用例和別的行爲元素的形式給出。實現部分以構成其內容的附屬元素的形式描述了行爲的實現,並且作爲被包含元素之間的合作集合給出。
系統本身構成最頂層的子系統。一個子系統的實現可以寫成一些低級子系統的合作。在這種方式下,整個系統可以擴展爲子系統的層次樹,直到最底層的子系統以普通類的形式定義給出。
子系統可能包含結構元素和聲明元素,比如由子系統導出的用例和操作。子系統聲明通過結構元素實現。子系統的行爲實際上是它裏面的元素的行爲。
結構
對一個子系統的聲明包含指定爲聲明元素的元素,連同作爲一個整體定義在子系統上的操作和接口。聲明元素包括用例,限制,用例之間的聯繫等等。這些元素和操作定義了子系統作爲自然實體所執行的行爲,即它的各個部分協同工作的淨結果。用例聲明瞭子系統和外部操作者的完整的交互順序。聲明沒有說明各個部分是如何交互以完成必要的行爲。
子系統裏的其他元素實現它的行爲。這可能包含各種類元和它們之間的聯繫。子系統聯繫元素之間的合作構成的集合實現這個聲明。通常,由一個或者多個合作實現每個用例。每個合作描述實現元素的實例如何合作完成用例或操作聲明的行爲。在聲明級別的所有到達和出發的消息都必須被映射爲它的實現元素以及其他子系統的實現元素之間的消息。
子系統是一個包,具有包的特性。特別的,子系統的導入象對包的描述那樣工作,子系統之間的泛化具有和它的內容相同的可見性。
表示法
子系統表示爲在子系統名稱上面的包含關鍵字 subsystem 的包符號(帶有小標籤的矩形)。如圖13-175。
13-175.gif
討論
考慮一個子系統,它處在設計元素的自然分組裏,比如邏輯類。一個組件是一個實現元素的構成的自然分組,例如實現級別的類。在很多情況下,子系統作爲組件實現。這簡化了從設計到實現的映射。所以,這是一種普通的結構方法。更進一步,很多組件實現爲直接實現組件接口的的類。在這種情況下,子系統、組件、類可以有完全相同的接口。
334.子類型(subtype)
是其他類型的孩子的類型。更中性的術語"孩子"可以用於任何可泛化元素。
見泛化(generalization)。

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