2012-06-06 20 views
4

我正在設計一個Java應用程序,供承包商用來繪製住宅。目前,我正處於建模階段,正在創建一個UML類圖。我的問題是,我不確定模擬我的一些對象的理想方式。用戶將「畫」房屋的元素,如牆壁,燈光,門,窗戶等......每個元素都有一組最初的必需屬性。基於這個初始的所需屬性集,該元素將需要一組不同的屬性。可以改進我的Java應用程序的這個對象模型嗎?

我將使用我的Structure類作爲示例。用戶在圖上「繪製」的一件事是結構。結構的兩個主要屬性是structureType和composition。作文很簡單。客戶端提供了一個用戶可能選擇的組合列表,所以我把這些數據放在一個組合框中,讓選擇從一個下拉列表中選擇。但是,基於structureType,將需要其他屬性。

IE)如果StructureType = Wall,則需要長度和高度。如果StructureType =天花板,則長度,寬度和高度都是必需的。

該示例是簡化的,可能看起來很平凡,但子屬性可能比這更多地涉及,其中有很多。其中一些產生更多的子屬性。然而,儘管過度簡化,它給出了我試圖解決的問題的一個非常具體的想法。

我的想法是我應該有擴展結構的子類,每個子類都有一組對每個子類都唯一的屬性。 IE)class Wall擴展了Class Structure,並且包含一組Wall成員變量。

一些建議,無論我是否清楚地想到這一點,將不勝感激,如果我在基地推動正確的方向將不勝感激。同樣,如果我在決策時忽略了一些考慮因素,歡迎提出一些建設性的批評。

+1

你的方法總是有意義的。還要考慮使用「屬性」對象。 – Hassan

+0

閱讀完Properties之後,它非常適合我需要的東西。我將使用上面陳述的設計,並將爲子類使用屬性而不是個別成員變量。它實際上非常適合我的最終目標,即將所有元素的數據導出到XML,然後導入到另一個應用程序。 – NickAbbey

+0

很高興能幫到你! – Hassan

回答

2

我會延長你的想法一點點進一步。

而不是屬性是結構的一部分,我會讓他們放在一邊,有一個接口StrucutreProperties其中有所有共同的屬性,如getLength(),getWidth()

然後如您所說的有Wall extends Structure而在這種情況下Wall將有WallProperties extends StructureProperties接口。

Ceiling extend StructureProperties的情況下,會出現CeilingProperties extends StructureProperties並將其添加​​。

+0

同意。隨着您的類型層次結構變得更加複雜,您將不得不按照此處的建議進行細分。 – user949300

+0

我喜歡它。很好的意見,謝謝! – NickAbbey

+0

不客氣 – mprabhat

1

是的,你正在思考。

子分類是一種定義子類中唯一屬性的方法,同時還可以繼承父類的屬性。

相關問題