2011-04-06 39 views
1

我有一個類爲特定實體繪製圖形,圖形節點是可點擊的,因此我具有特定的方法用於顯示適當的信息。繼承層次結構 - 如何拆分類

由於這只是一個原型,我沒有考慮其他實體 - 它們將有完全不同的節點點擊。

我不確定如何使用繼承我可以分解它,所以我有一個圖作爲一個主類,並取決於什麼實體(繪製圖表的類型)拆分相關的方法點擊項目,使他們分離到自己的空間?

例如,鍵入的圖表

Bannana - 具有皮膚,大小,顏色,數量爲可點擊實體來說

但類型的曲線圖

橙色 - 具有顏色,片段類型的橙色,數量

任何想法,對不起窮人例如:/

感謝

下面我們有一個實體的xml文件,基於節點類型的層次結構是樹如何繪製的。其他實體的佈局相似,但會有不同的價值。這有助於解決問題嗎?也可能是值得一提的不同實體將分享一些相同的項目,因此,例如,所有的人都點擊觀看複合圖像標籤

<graph> 
    <node label="Batch"> 
    <node label="Searched Batch"> 
     <node label ="a batch number" /> 
    </node> 
    <node label="Compound Number"> 
     <node label ="a compound number" /> 
    </node> 
    <node label="Parent Number"> 
     <node label ="a parent number" /> 
    </node> 
    <node label="Chemist Name"> 
     <node label ="Name 1" /> 
    </node> 
    <node label="Quantity Available"> 
     <node label ="N/A" /> 
    </node> 
    <node label="Molecular Formula"> 
     <node label ="a molecular formula" /> 
    </node> 
    <node label="Notebook Number"> 
     <node label="a notebook number" /> 
    </node> 
    <node label="Analytical Images"> 
     <node label ="show some pdf files" /> 
    </node> 
    <node label="Who has Registered Batches"> 
     <node label ="Name 1" /> 
     <node label ="Name 2" /> 
     <node label ="Name 3" /> 
     <node label ="Name 4" /> 
     <node label ="Name 5" /> 
    </node> 
    <node label="Chemical Structure" > 
     <node label="Click to view compound image" /> 
    </node> 
    </node> 
</graph> 

回答

0

好吧,我會用鹼Graph類開始。從那裏我會爲每個圖類型創建一個子類,每個類都從基礎圖繼承。基本的Graph類幾乎肯定會有一個方法Draw()來顯示圖形,這將被每個子類所覆蓋,從而允許每個圖獨立繪製。在繪製每個圖形時,您將使用適當的對象來表示圖形及其所需的功能,在這裏您將改變節點類型。

看看ZedGraph,這是一個非常全面的圖形/圖表庫,它是開源的,所以你可以在那裏探索對象圖,看看每個不同的圖表類型是如何演變的。

+0

這非常合理,但是每個實體都是從xml文件中繪製的。所以,我會有一個超級類,其中有一個單獨的XML文件的繪製方法,並在每個子類中有一個硬編碼的XML文件,它傳遞給超類?我正在使用.netcharting作爲我的圖形軟件 – ricki 2011-04-06 08:49:11

+0

不完全是,超級類可能已經吸取了純粹的虛擬方法。這是重要的子類實現。該方法可能需要一個XML,但我建議將XML加載到構造函數或特定方法中,以便將XML解析爲適合您的圖表的更合適的表單。您可以通過發佈您正在使用的一些XML示例來更具體地說明您的示例嗎? – Lazarus 2011-04-06 08:57:24

+0

我將不得不改變數據,因爲它包含工作數據:/ 2分鐘,我會發布一些2個實體(從XML文件派生)「減少」的例子 – ricki 2011-04-06 09:00:18

0

從圖形的角度來看,我將使用一個接口來顯示圖形中顯示的對象,該接口應該以常見的方式顯示圖形的屬性。一個關鍵值對集合...

0

我會建議您調查Composite Visitor Pattern

相信你不會只需要畫出這個東西,但也堅持圖表,進行命令等

如果你把邏輯放到類層次本身,它最終將做大和凌亂,條件邏輯,依賴於UI組件等等。