ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10. oop5 - (1) Starcraft Demo (추상클래스)
    java/코드 리뷰 2020. 4. 2. 20:17
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package oop5;
    /**
     * 1
     * @author HYB
     *
     */
     // 추상 클래스 정의
    public abstract class Unit {
        String name;
        
        void move() {
            System.out.println("[" + name + "] 이 지정된 포인트로 이동합니다.");
        }
        
        // 추상 메서드 정의
        abstract void attack();
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package oop5;
    /**
     * 2
     * @author HYB
     *
     */
    public class Marine extends Unit {
        
        @Override
        void attack() {
            System.out.println("[" + name + "]은 적을 총으로 사살합니다.");
            
        }
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package oop5;
    /**
     * 3
     * @author HYB
     *
     */
    public class Firebat extends Unit {
        
        @Override
        void attack() {
            System.out.println("[" + name + "]은 화염으로 적을 사살합니다.");
            
        }
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package oop5;
    /**
     * 4
     * @author HYB
     *
     */
    public class Ghost extends Unit {
     
        @Override
        void attack() {
            System.out.println("[" + name + "]은 자신을 감추고 적을 공격합니다.");
     
        }
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package oop5;
     
    public class Overload extends Unit{
        
        // 수행문이 없어도 메서드 몸체만 있으면 구현 메서드다
        @Override
        void attack() {}
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package oop5;
     
    public class Starcraft {
        
        Unit[] units = new Unit[200];
        int unitCount = 0;
        
        void addUnit(Unit unit) {
            units[unitCount] = unit;
            unitCount++;
            System.out.println(unit.name + "이 추가되었습니다. [현재 총 유닛수 = " + unitCount + "]");
        }
        
        void click() {
            for (int i=0; i<unitCount; i++) {
                Unit unit = units[i];
                unit.move();
            }
        }
        
        void clickA() {
            for (int i=0; i<unitCount; i++) {
                Unit unit = units[i];
                unit.attack();
            }
        }
        
    }
     
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    package oop5;
     
    public class Play {
        public static void main(String[] args) {
            
            Starcraft starcraft = new Starcraft();
     
            Marine u1 = new Marine();
            u1.name = "마린";
            starcraft.addUnit(u1);
     
            Marine u2 = new Marine();
            u2.name = "마린";
            starcraft.addUnit(u2);
     
            Ghost u3 = new Ghost();
            u3.name = "고스트";
            starcraft.addUnit(u3);
     
            Firebat u4 = new Firebat();
            u4.name = "파이어뱃";
            starcraft.addUnit(u4);
            
            // 이동
            starcraft.click();
     
            // 공격
            starcraft.clickA();
            
        }
    }
     
     
Designed by Tistory.