2014-06-13 230 views
0

我有一堆類需要繼承相同的基類和接口。從每個具體的課程中獲得箭頭使得圖表非常混亂。我想做一些事情,比如將具體類放在一個「子組」中,只需從基類和接口中抽取箭頭到包中,並且包內的所有東西都會得到這個繼承。另外,我看到了泛化集合,但這仍然需要許多箭頭,並且很混亂。UML組繼承

是這樣的:

BaseClass Interface 
    |   |  
    |   | 
    |   | 
    |   | 
    \/  \/ 
________________ 
|ClassA  | 
|ClassB  | 
|ClassC  | 
|ClassD  | 
________________ 

而且具有ClassA的,ClassB的,ClassC和D類所有同時繼承BaseClass的和接口。

btw我使用的是視覺範式。

回答

0

在UML中沒有任何方法對專門的分類器或接口進行分組。 您必須將每個專用分類器和通用分類器連接成一個分離的泛化關係。泛化與兩端完全是直接關係。一個用於一般,另一個用於專門的分類器。如果泛化集已定義,則可以使用樹型連接器。泛化集中的樹樣式定義了專用分類器專用於相同的泛化集。樹的風格也使你的圖更清晰。

我建議你也使用更多圖表。

0

您的問題不受您的UML Deisgn軟件影響,它是一個更通用的U.M.L.題。

Altought UML設計軟件非常有幫助,我強烈建議您從白板/筆記本的角度嘗試UML圖表。

然後,在您選擇的軟件工具中代表那些圖表。

由於您的類從「BaseClass」下降,並支持「BaseInterface」,請記住支持一個或多個接口,它也被子類別接受。

.................................................. 
..+------------------+......+------------------+.. 
..| BaseClass  +--(o--+ BaseInterface |.. 
..+------------------+......+------------------+.. 
..| [+] SomeProperty |............................ 
..+--------+---------+............................ 
...........|...................................... 
...........|...................................... 
...........^...................................... 
........../.\..................................... 
........./...\.................................... 
........+-----+................................... 
...........|...................................... 
...........|................+------------------+.. 
...........+----------------+ AChildClass |.. 
...........|................+------------------+.. 
...........|...................................... 
...........|................+------------------+.. 
...........+----------------+ BChildClass |.. 
............................+------------------+.. 
...........|...................................... 
...........|................+------------------+.. 
...........+----------------+ CChildClass |.. 
............................+------------------+.. 
.................................................. 

在這個例子中: 「AChildClass」, 「BChildClass」 和 「CChildClass」,即是 「的BaseClass」 的後代,inhereted了 「SomeProperty」 屬性。但是,也支持「BaseInterface」界面。

大多數編程語言支持此功能,altought,我記得看一些編程語言,其中相同的接口支持,必須在每類中明確聲明。

乾杯。