삼성SDS_멀티캠퍼스/Java
12일 차 인터페이스를 이용하여 로봇조립
박성우기
2015. 9. 22. 10:54
반응형
어택 구현
-----------------------------------------------------------------------------------------
public interface Attack {
public void attack();
}
public class MissileAttack implements Attack {
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("미사일로 공격");
}
}
public class PushAttack implements Attack{
@Override
public void attack() {
// TODO Auto-generated method stub
System.out.println("펀치로 공격");
}
}
-----------------------------------------------------------------------------------------
무브 구현
-----------------------------------------------------------------------------------------
public interface Move {
public void move();
}
public class WalkingMove implements Move{
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("걸어서 이동");
}
}
public class FlyingMove implements Move{
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("날아서 이동");
}
}
-----------------------------------------------------------------------------------------
로봇 구현
-----------------------------------------------------------------------------------------
abstract class Robot {
protected String name;
protected Attack attack;
protected Move move;
public abstract void attack();
public abstract void move();
public Robot(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Robot [name=" + name + "]";
}
}
-----------------------------------------------------------------------------------------
로봇들 구현
-----------------------------------------------------------------------------------------
public class Mazinga extends Robot {
public Mazinga(String name) {
super(name);
System.out.println(name);
attack = new PushAttack();
move = new FlyingMove();
}
@Override
public void attack() {
// TODO Auto-generated method stub
attack.attack();
}
@Override
public void move() {
// TODO Auto-generated method stub
move.move();
}
}
public class Lazenca extends Robot {
public Lazenca(String name) {
super(name);
System.out.println(name);
attack = new MissileAttack();
move = new FlyingMove();
}
@Override
public void attack() {
// TODO Auto-generated method stub
attack.attack();
}
@Override
public void move() {
// TODO Auto-generated method stub
move.move();
}
}
public class TaekwonV extends Robot {
public TaekwonV(String name) {
super(name);
System.out.println(name);
attack = new MissileAttack();
move = new WalkingMove();
}
@Override
public void attack() {
// TODO Auto-generated method stub
attack.attack();
}
@Override
public void move() {
// TODO Auto-generated method stub
move.move();
}
}
-----------------------------------------------------------------------------------------
출력
-----------------------------------------------------------------------------------------
public class Test {
public static void main(String[] args) {
Attack ma = new MissileAttack();
Attack pa = new PushAttack();
Move fm = new FlyingMove();
Move wm = new WalkingMove();
Robot mazin = new Mazinga("마징가");
mazin.setAttack(pa);
mazin.setMove(fm);
mazin.attack();
mazin.move();
System.out.println();
Robot taek = new TaekwonV("태권V");
taek.setAttack(ma);
taek.setMove(wm);
taek.attack();
taek.move();
System.out.println();
Robot lazen = new Lazenca("라젠카");
lazen.setAttack(ma);
lazen.setMove(fm);
lazen.attack();
lazen.move();
}
}
반응형