2012-09-23 79 views
0

什麼是設計課程的好方法?我正在嘗試創建一個簡單的聊天程序。我希望屏幕上的所有對象都用於封裝。我創建了幾個類,一個日誌記錄類,一個消息堆類(用於保存已收到和已發送的消息),一個文本框類和一個按鈕類。我想要消息堆,文本框和按鈕共享相同的字符串變量,除了我希望封裝在類中。兩個繼承的類可以訪問基類中的同一個變量嗎?

我曾嘗試創建一個基類。這將包含文本框和按鈕類通用的所有數據和功能。這三個類將從Base派生出來以使用它的共享變量。只有當我做了這個變量不共享。有沒有辦法做到這一點?有點像全局變量?只有在它自己的類和它的派生類中?兩個派生類的兩個對象都應該能夠訪問Base類對象的變量。

+2

你在用什麼語言? – David

+0

將基類想象爲其後代的模式。這些的每個實例都將包含其自己的派生變量 - 不與其他人共享。所以,在這種情況下繼承不起作用。有很多可能的解決方案。例如,你可能想要另一個類來管理你所有的東西。創建你想在那裏共享的變量,並將它注入通過構造函數創建的對象中 - 作爲參數傳遞,存儲到它們的變量中。在UI中,通常使用名爲MVC的模式。它基於一個相似的想法。一個好的OOD教程會有所幫助。 –

+0

我正在使用C++。但是,這是非常豐富和有益的!謝謝! –

回答

1

您在混合類和對象。當你有一個帶有某個成員變量的基類時,所有派生類都可以(可能)訪問基類中的成員變量。

但是,當您實例化不同派生類或其中一個多次時,每個對象都有一組完整的成員變量,包括來自基類的成員變量,因爲這正是對象的內容。

如果你想讓某些對象組使用相同的「共享」變量,那麼你可以將這些共享的東西粘貼到一個專用的「共享」類中。然後,對於需要共享這些「變量」的每個對象組,將創建此「共享」類的實例,並將其傳遞給組中的所有對象。

這比用「靜態」類成員擺弄或者用你正在使用的語言調用的任何東西都更靈活,因爲你可以通過多個「共享」對象來擁有多個這樣的對象「組」並確切地確定哪些「實際」對象共享相同的「共享」數據/變量。

不知道更多關於如何發生的事情,很難給出有關如何設計類和對象層次結構的更多建議。

相關問題