교수님이 LeJOS NXT를 사용하여 특정 동물의 행동을 시뮬레이트하는 로봇을 만들어야한다는 Java 과제가 있습니다. 나는 을 선택하여 용을 개발했습니다. 지금까지 내가 생각해 낸 모든 가능한 행동은 다음과 같습니다.동물의 행동을 묘사 할 때 어떤 객체 구조를 사용해야합니까?
- 장애물과 너무 가까우면 뒤돌아 봅니다.
- 배터리가 부족할 때 잠자기 상태가됩니다.
- 닿은 경우 개체를 밀기.
- 너무 밝 으면 어두운 부분을 찾으십시오.
- 등
나는 하나 개의 클래스에 순차적으로 그것을 개발하거나 다른 클래스로 모든 드래곤의 행동을 분할 여부를 알 수 없기 때문에 지금 매우 혼란 스러워요. 아래의 내 설명을 살펴보십시오. 대신이 같은 하나 개의 클래스 안에 모든 기록의
:
Dragon.java 그러나
public class Dragon {
LightSensor ls = new LightSensor
public static main(String args[]) {
while (!BUTTON.Escape.IsPressed()) {
if (this.closeToObject()) {
this.turnAround();
}
// more conditions
}
}
private boolean closeToObject() {
//TODO
return false;
}
private void turnAround() {
//TODO
}
//... more methods
}
을, 나는 더 객체 지향하는 과정으로이에 의미 것으로 보인다 만들고 싶어 더 많은 OOP 기술을 습득 할 수있게 도와줍니다.
Dragon.java
public class Dragon {
Detect detect = new Detect(); // carry all the detection methods: distance, sound, etc.
TurnAround turnAround = new TurnAround();
public static main(String args[]) {
while (!BUTTON.Escape.IsPressed()) {
if (detect.tooCloseToObject()) {
turnAround.prepare(); // beep beep alert
turnAround.setDerection(true); // e.g. turn right
turnAround.turn();
}
}
}
}
DragonBehaviors.java
abstract class DragonBehavior {
abstract void prepare();
public void setDirection(boolean direction) {
//...
}
}
: 그래서 내 두 번째 옵션은 (거의) 같은 드래곤의 행동 추상 클래스를 확장 액션 클래스를 만드는 것입니다 TurnAround.java
public class TurnAround extends DragonBehaviors {
String direction;
public void TurnAround() {}
public void prepare() {
// sound alert
}
public void setDirection(boolean direction) {
if (direction) this.direction = "Right";
else this.direction = "Left";
}
public void turn() {
// TODO
}
}
위의 코드는 대략 초안이므로 초점을 맞추지 마십시오. 결국 위의 OO 구조에 대한 제 생각이 합리적인지 묻고 싶습니다. 그렇지 않으면 한 클래스에서 모든 것을 개발하는 것이 훨씬 쉽지만 OOP와는 아무런 관련이 없습니다. 또한 코드를 완성 할 여러 그룹 멤버가 있으므로 OOP 방식으로 개발할 클래스를 공유하는 것이 더 좋을 것이라고 생각합니다.
이 상황에서 어떤 방향으로 가야합니까?
나는 모든 의견을 (감사 :
* 숙제 * 태그 –
을 모두 추가하면이 경우에는 과장 될 것입니다. 당신은 많은 동물이 있다면, 당신은이 흥미로운 것을 발견 할 것입니다 : http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ –