안녕하세요 저는 다음 숙제 문제에 대한 도움이 필요합니다.인터페이스 및 상속 java
이것은 문제의 일부일 뿐이지 만이 부분에 대해서만 도움이 필요합니다.
나는 올림픽 게임을 시뮬레이트하는 작은 시스템을 만들고 싶습니다. 시뮬레이션, 수영, 자전거 타기, 달리기 등 3 가지 스포츠가 있습니다. 선수, 수영 선수, 자전거 타는 사람, 단거리 선수 (수영, 사이클링, 달리기에서 각각 경쟁 할 수있는 선수)와 3 가지 게임에서 모두 경쟁 할 수있는 슈퍼 애플릿이 4 가지 유형이 있습니다 (이것이 내가 가장 문제가되는 것임) . 각 선수는 달리기를 위해 10-20 초, 수영을 위해 100-200 초, 자전거를 타기 위해 500-800 초 사이의 시간을 무작위로 생성하는 compete() 메소드가 있어야합니다.이 시간은 게임의 승자를 억제하는 데 사용됩니다.
제 질문은이 문제를 어떻게 시뮬레이트 할 것인가, 어떤 종류의 수업을 사용할 것인가, 어떤 관계가 될 것인가입니다. SwimGame과 같은 다른 게임 개체를 만드는 방법이 필요합니다. SwimGame에는 Swim 및 Super Athlete만의 목록이 있습니다.
이것은 현재 나의 접근 방식입니다.
그래서 나는 추상적 인 추상 클래스 인 Athlete를 가질 것이고, cycler, runner swimmer와 superAthlete는이 클래스에서 확장 할 것이다.
나는 게임 추상 클래스도 가질 것이고, SwimGame, CycleGame, RunningGame은 여기서 확장 될 것이다. 모든 게임에는 게임에서 경쟁하는 선수 목록이 있습니다.
내가 게임을 수영에 추가하고, 비슷한 상황 수 주자를 방지 할 수있을 것입니다 방법
나는 superAthleat 모든 3 개 게임
을에서에 참여할 수있을 때, 시간을 계산 연장하는 방법 다음 runAthlete는 R을 구현
interface swimInterface() {
public void calculateSwimTime();
}
interface runInterface() {
public void calculateRunTime();
}
interface cycleInterface() {
public void calculateCycleTime();
}
다음 swimmerAthleate이 swimInterface을 구현합니다 첫번째 나는 3 인터페이스를 만들 생각 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.
자세한 설명이 필요한 경우이 질문에 대해 기꺼이 설명해 드리겠습니다.
Q : "게임"클래스, "게임"및 athelete 추가 여부를 고려 했습니까? 또한 "수영"선수가 "달리기"게임에 참여하지 못하게 할 수 있습니까? – FoggyDay
'compete()'을 호출하면, 어떤 선수가 경쟁 중인지 어떻게 알 수 있습니까? 각 이벤트마다 별도의 인터페이스를 갖는 것이 좋을 것입니다. 각각의 메소드 ('swim()','run()'등)를 가지고, 그리고 나서 각 유형의 선수에게 그 타입의 이벤트를위한 인터페이스를 구현하게하십시오 – azurefrog
좋아, 내가 그 방법을 사용하지만, 그때 난 diffrent 게임 에서이 methodes를 호출하는 방법의 문제가 있습니다. 나는이 상황을 반영하기 위해 나의 질문을 업데이트 할 것이다. – aleksamarkoni