JAVA_coding_14

AMJ·2023년 3월 6일
0

code_log_java

목록 보기
16/29

조건에 맞는 기능 구현

방법1 각각의 무기를 따로 클래스에 부여


// 조건 : 전사객체를 만들고 순서대로 칼, 창, 지팡이로 공격하게 해주세요.
// 단 : 전사는 무기라는 것이 존재한다는 것은 알지만 칼, 창, 지팡이에 대해선 몰라야 합니다.

class Main {
    public static void main(String[] args) {
        // 구현 시작
        전사 a전사 = new 칼전사();
        a전사.공격();
        전사 b전사 = new 창전사();
        b전사.공격();
        전사 c전사 = new 지팡이전사();
        c전사.공격();
        전사 d전사 = new 전설의지팡이전사();
        d전사.공격();
    }
}

/* 구현 시작 */
abstract class 전사{
    무기 a무기;
    void 공격(){
        a무기.작동();
    }
}
class 칼전사 extends 전사{
    칼전사 (){
        a무기 = new 칼();
    }
}
class 창전사 extends 전사{
    창전사 (){
        a무기 = new 창();
    }
}
class 지팡이전사 extends 전사{
    지팡이전사 (){
        a무기 = new 지팡이();
    }
}
class 전설의지팡이전사 extends 전사{
    전설의지팡이전사 (){
        a무기 = new 전설의지팡이();
    }
}
abstract class 무기{
    int 데미지;
    String 무기명;

    무기() {
        무기명 = "";
        데미지 = 0;
    }
    void 작동(){
        System.out.println(무기명+"(으)로 공격합니다.");
        System.out.println("데미지 : "+데미지+"\n");
    }
}
class 칼 extends 무기{
    칼(){
        무기명 = "칼";
        데미지 = 78;
    }
}
class 창 extends 무기{
    창(){
        무기명 = "창";
        데미지 = 80;
    }
}
class 지팡이 extends 무기{
    지팡이(){
        무기명 = "지팡이";
        데미지 = 12;
    }
}

class 전설의지팡이 extends 무기{
    전설의지팡이(){
        무기명 = "전설의지팡이";
        데미지 = 120;
    }
}
/* 구현 끝 */

방법2 전사에게 무기를 쥐어주는 방식

class Main {
    public static void main(String[] args) {
        // 구현 시작
        전사 a전사 = new 전사();

        a전사.a무기 = new 칼();
        a전사.공격();
        a전사.a무기 = new 창();
        a전사.공격();
        a전사.a무기 = new 지팡이();
        a전사.공격();
        a전사.a무기 = new 전설의지팡이();
        a전사.공격();
    }
}

/* 구현 시작 */
class 전사{
    무기 a무기;
    void 공격(){
        a무기.작동();
    }
}
abstract class 무기{
    int 데미지;
    String 무기명;

    무기() {
        무기명 = "";
        데미지 = 0;
    }
    void 작동(){
        System.out.println(무기명+"(으)로 공격합니다.");
        System.out.println("데미지 : "+데미지+"\n");
    }
}
class 칼 extends 무기{
    칼(){
        무기명 = "칼";
        데미지 = 78;
    }
}
class 창 extends 무기{
    창(){
        무기명 = "창";
        데미지 = 80;
    }
}
class 지팡이 extends 무기{
    지팡이(){
        무기명 = "지팡이";
        데미지 = 12;
    }
}

class 전설의지팡이 extends 무기{
    전설의지팡이(){
        무기명 = "전설의지팡이";
        데미지 = 120;
    }
}
profile
재미있는 것들

0개의 댓글