2011-11-08 2 views
2

나는 lejos 0.9로 프로젝트를 만들었습니다. 이제 제가 알고있는 것은 클래스가 public static void main(String[] args) 일 때만 eclips 플러그인으로 클래스를 업로드하고 컴파일 할 수 있다는 것입니다 (java에서 nxj 파일까지). 그러나 나는 레고 정신 이상 벽돌에 더 많은 클래스와 인터페이스를 가져야한다. 이것을 할 수있는 방법이 있습니까? 벽돌에 직접 연결하는 것은 좋은 생각이 아닙니다. 그 이유는 Java 파일을 실행할 수없는 벽돌에 놓기 때문입니다.Lejos (java) 및 인터페이스 // UML 제안

이 문제의 또 다른 옵션은 uml 디자인을 변경하는 것일 수 있습니다. 이것은 현재 디자인입니다 enter image description here

기본적으로 로봇 클래스와 휴머노이드와 같은 다른 로봇이이 로봇 클래스를 확장합니다. 그런 다음 행동이 있습니다. 어느 것이 모두 인터페이스 웍스를 구현합니다. 모든 로봇은 다형성 때문에 동적으로 동작을 얻을 수 있습니다. humanoid.java에서

:

package Robots; 

수입 행동. ; 가져 오기 IBehaviours.;

공용 클래스 Humanoid extends Robot { private Iwalk walker = new ForwardLegs(); lejos와 legomindstorm 벽돌에 인터페이스를 넣어하는 방법 : helloworld.java 클래스에서

Iwalk getWalker() { 
    return walker; 
} 

public void setWalker(Iwalk walker) { 
    this.walker = walker; 
} 

public void moving() { 
    setWalker(walker); 
    walker.move(); 
} 
} 

대답에 따라서

 Humanoid asimov = new Humanoid(); 
    asimov.setWalker(new ForwardLegs()); 
    asimov.moving(); 

내 질문에 존재 (바로 시작하기 위해, 모든 클래스에 연결되지 않음). 또는 UML 디자인이 동일하지만 인터페이스가없는 다른 UML 디자인. 미리 타이.

+0

참고 사항 : 신입 사원 용년도에 포함 된 학기 프로젝트 (포함 된 소프트웨어 대신)를 완료하기 위해 Lejos를 사용했고 1 박 (건물/조립품/코드 포함)의 전체 작업을 마쳤습니다. 대학 전체에서 가장 높은 점수를 받았습니다. 재미 있었어 :) – switz

+0

hehe 아주 좋은, 난 아직도 내 프로젝트를 완료하는 몇 주있다 : 피 – Ojtwist

답변

2

나는 인터페이스를 사용하지 않음으로써 문제를 해결했습니다. 이유는 내가 다형성이 필요하기 때문에 인터페이스가 필요했다. IWalk 인터페이스를 추상 클래스로 변경하고 구현에서 동작을 확장하도록 변경할 수도 있습니다.