假設我設計的機器人可以拾取各種工具並使用它們。 我會創建一個具有拾取方法的機器人類來選擇我想使用的工具。 對於每個工具,我都會爲它創建一個類,比如說,具有Cut方法的刀類。 在Robot上調用拾取方法後,我想告訴我的機器人要切割。所以對於OOP概念,我必須告訴機器人,而不是刀? Cut方法在Knife上,所以我怎樣才能調用它?我必須在Robot上實現某種UseToolCurrentlyHeld()
以將我的命令傳播給Knife。或者我直接直接用刀(我的機器人持有)直接使用這個:myrobot.ToolCurrentlyInHand.Cut()
隱藏父類的實現細節
我覺得這是奇怪的,一個父方法必須有一切照顧他們包含的類。現在我有重複的方法,如刀具有Cut()
,現在機器人必須只有UseCutOnKnife()
才能在Knife上調用Cut()
,因爲良好的面向對象操作是將刀片抽象出來,讓它感覺像訂購機器人一樣,而不用擔心刀片等內部信息。
另一個問題,如果我撰寫音樂,我會創建Music
類,其中包含很多Measure
類來存儲音符信息。在一個度量中,可以有很多Note
類,其中Note類將具有諸如此筆記駐留的度量中的位置或該筆記播放多長時間的信息。現在我想在措施45的中間添加一個備註。要創建測量,我必須在音樂上撥打CreateMeasure(45)
,然後撥打CreateNote(0.5f)
測量?創建的方法是像這樣的父級?如果現在我想將該筆記更改爲0.25度量單位,負責更改方法的筆記是Note
類本身或Measure
類?或者我必須實施方法來更改最上面的Music
類的筆記?
這是我的課的概述:
class Music
{
List<Measure> measures = new List<Measure>();
//methods...
}
class Measure
{
int measureNumber;
List<Note> notes = new List<Note>();
//methods...
}
class Note
{
float positionInMeasure; //from 0 to 1
}
由於現在的音樂課上的一切,我現在不得不發行通過音樂的一切的頂部?並且鏈接方法最終調用最內層的類?
+1嗅氣味有些不對勁,和闡明其 – razlebe