2012-06-15 30 views
0

我開始爲2D遊戲編寫一些代碼,創建了一個類「objets」,試圖儘可能保持通用。我有幾種方法和屬性,這些方法和屬性對於每種類型的元素(buldings,ppl,接口按鈕等)都是通用的,就像(w,h,x,y ......你知道的那樣),但是大多數方法和屬性只適用於和特定類型的項目。 因此,我將不得不爲遊戲中的每種類型的演員繼承一個新類? 只是想知道這是否是一種常見做法,或者我應該以不同的方式來管理它。OOP:有很多繼承類是正常的嗎?

在此先感謝。

回答

1

如果你介紹行爲然後是子類,但是如果差異是基於屬性的,那麼不要

動物(有.colour和.makeSound) - >狗(有.eatOwnPoop) - > RedDog(不,太具體,由彩色覆膜)

通知我怎麼了動物 「.makeSound」。我本可以把狗放進狗裏,但是我必須把它放進貓裏等。這個子類可以簡單地覆蓋並提供具體的聲音。然而,你可以使用接口來更好地交叉切割你的代碼,但這是一個相當冗長的話題,可能是你的需求的矯枉過正(儘管它可以幫助任何你測試的單元測試)。

1

這聽起來像你是過度使用繼承。當你同時說「像......這樣的常見屬性」和「......只有在應用於特定類型時纔有意義」,它肯定是一個紅旗。此外,域標記(例如building)與像button這樣的接口對象共享一個公共基類是一個紅旗。最後,定義您自己的objetobject?)類是非常不尋常的,系統中的每個類都從其中派生。這不是不可思議的,但結合你的其他評論,這聽起來像是你開始走下一條非生產性的道路。

您可能要參考的面向對象的設計和分析一個很好的教程,如「Head First OOA&D

0

你沒有做任何事情。通常,如果派生類具有某種通用性,但在自然界中需要特定的功能性,則需要使用派生類。如果你想要有多態行爲,使用它也很好。你已經提出了一個非常開放的問題,但基本上並不認爲你必須使用繼承,因爲並不是每個問題都需要繼承,實際上有些人過度使用繼承,並將它引入到真正不需要的地方。總而言之,如果您還沒有閱讀過關於面向對象設計的好書,那麼我會真正推薦您這樣做,因爲這會讓您從不同的角度思考代碼,並極大地改進您查看軟件和設計的方式它。這可能聽起來像一個警察,但這種問題很難回答,不知道你在做什麼的所有細節。