你好,我需要下一個作業問題的幫助。接口和繼承java
這只是問題的一部分,但我只需要幫助該部分。
我想製作一個模擬奧運遊戲的小系統。我想要模擬,游泳,騎自行車和跑步三種運動。我想使用四種類型的運動員,游泳運動員,騎自行車的人,短跑運動員(可分別參加游泳,騎自行車和跑步比賽)和超級運動員,他們可以參加所有三場比賽(這是我遇到的最多問題) 。每個運動員應該有一個競賽()方法,這個方法會隨機產生跑步10到20秒,游泳100到200秒和騎自行車500到800秒的時間,這個時間將被用來阻止遊戲的勝利者。
我的問題是如何模擬這個問題,使用什麼樣的類,以及它們的關係是什麼。我需要一種方法來創建不同的遊戲對象,比如只有Swim和Super Athlete的SwimGame。
這是我現在的做法。
因此,我將擁有基本的抽象類運動員,而cycler,runner游泳運動員和superAthlete將從這一類擴展而來。
我也會有遊戲抽象類,SwimGame,CycleGame和RunningGame將從這裏延伸。每場比賽都會有在比賽中競爭的運動員名單。
我如何能夠防止亞軍被添加到游泳比賽,而類似的情況
我將如何延長計算時間,當superAthleat可以參加所有3場比賽
在起初我還以爲我做3個接口:
interface swimInterface() {
public void calculateSwimTime();
}
interface runInterface() {
public void calculateRunTime();
}
interface cycleInterface() {
public void calculateCycleTime();
}
,然後進行swimmerAthleate實施swimInterface,然後runAthlete實現[R unInterface,cycleAthlete實施cycleInterface,最重要的superAthlete實現runInterface,swimmerInterface和cycleInterface,所以我有這樣的事情:
public abstract class Athlete {
...
// what should be here
}
public class SwimAthlete extends Athlete implements SwimInterface {
...
public void calculateSwimTime() {...}
}
public class RunAthlete extends Athlete implements RunInterface {
...
public void calculateRunTime() {...}
}
public class CylcleAthlete extends Athlete implements CycleInterface {
...
public void calculateCycleTime() {...}
}
public class SuperAthlete extends Athlete implements SwimInterface, CycleInterface, RunInterface() {
public void calculateSwimTime() {...}
public void calculateRunTime() {...}
public void calculateCycleTime() {...}
}
但後來我有很多其他的問題: 如果我有像這樣:
public class Game {
ArrayList<Athlete> listOfCompetitors;
public Game(){
listOfCompetitors = new ArrayList<Athlete>();
}
}
public class SwimGame extends Game {
// I could have something like this here
// how could I add only SwimAthlete and SuperAthlete here
// how to traverse the array of athletes and only call calculateSwimTime method.
}
// similar for other games.
如果您需要更多的解釋,我很樂意討論這個問題。
問:你有沒有考慮添加一個「事件」類,即「有一個」遊戲和運動員?也可能不允許「游泳運動員」運動員參加「跑步」遊戲? – FoggyDay 2014-10-11 21:54:47
當你打電話競爭()時,你怎麼知道運動員參加哪項比賽?每個事件都有一個單獨的接口,每個接口都有自己的方法('swim()','run()'等),然後讓每種類型的運動員都實現接口被允許參與競爭。 – azurefrog 2014-10-11 21:56:03
好的我使用了這種方法,但是我遇到了如何從不同的遊戲中調用這些方法的問題。我會更新我的問題以反映這種情況。 – aleksamarkoni 2014-10-11 22:04:39