풀스택 개발자 과정 36일차 +@

너구·2026년 6월 26일

풀스택 성장과정

목록 보기
39/85

자바 객체지향 문제 연습(1)

package practice.pet;

public class Pet {

    private String name;
    private int energy;
    private boolean hungry;

    public Pet(String name) {
        this.name = name;
        energy = 50;
        hungry = true;
    }

    public void feed() {

        if (hungry) {
            energy = energy + 20;

            if (energy > 100) {
                energy = 100;
            }

            hungry = false;

        } else {
            System.out.println("배가 부릅니다.");
        }
    }

    public void play() {
        if (hungry) {
            System.out.println("배고파서 놀 수 없습니다.");
        } else {
           energy = energy - 10;
        }

        if (energy <= 0) {
            System.out.println("지쳐서 배가 고파졌습니다.");
            hungry = true;
        }
    }

    public void rest() {

        energy = energy + 30;

        if (energy > 100) {
            energy = 100;
        }

    }

    public void showInfo() {
        System.out.println("이름: " + name);
        System.out.println("에너지: " + energy);
        if (hungry) {
            System.out.println("배고픔: 배고픔");
        } else {
            System.out.println("배고픔: 배부름");
        }
    }
    
    public static void main(String[] args) {

        Pet pet = new Pet("콩이");

        pet.showInfo();

        pet.play();

        pet.feed();

        pet.play();
        pet.play();

        pet.rest();

        pet.showInfo();
    }
}

자바 객체지향 문제 연습(2)

package practice.character;

public class Character {

    private String name;
    private int hp;
    private boolean alive;

    public Character(String name) {
        this.name = name;
        hp = 100;
        alive = true;
    }

    public void attack(int damage) {
        if (!alive) {
            System.out.println("이미 쓰러진 상태입니다.");
            return;
        }

        hp = hp - damage;

        if (hp <= 0) {
            hp = 0;
            alive = false;
            System.out.println("쓰러졌습니다.");
        }
    }

    public void heal(int amount) {
        if (alive) {
            hp = hp + amount;
            if (hp >= 100) {
                hp = 100;
            }
        } else {
            System.out.println("쓰러진 상태에서는 회복할 수 없습니다.");
        }
    }

    public void revive() {
        if (!alive) {
            alive = true;
            hp = 50;
            System.out.println("부활했습니다.");
        } else {
            System.out.println("이미 살아있는 상태입니다.");
        }
    }

    public void showInfo() {
        System.out.println("이름: " + name);
        System.out.println("HP: " + hp);
        if (alive) {
            System.out.println("상태: 생존");
        } else {
            System.out.println("상태: 사망");
        }
    }
    

    public static void main(String[] args) {

        Character c = new Character("철수");

        c.showInfo();

        c.attack(30);

        c.attack(80);

        c.heal(20);

        c.revive();

        c.heal(10);

        c.showInfo();
    }
}

자바 객체지향 문제 연습(3)

package practice.bank;

public class BankAccount {
    
    private String owner;
    private int balance;
    private boolean locked;

    public BankAccount(String owner) {
        this.owner = owner;
        balance = 0;
        locked = false;
    }

    public void deposit(int amount) {

        if (!locked) {
            balance = balance + amount;
        } else {
            System.out.println("계좌가 잠겨있습니다.");
        }
    }

    public void withdraw(int amount) {

        if (locked) {
            System.out.println("계좌가 잠겨있습니다.");
            return;
        }

        if (balance <= amount) {
            System.out.println("계좌 잔액이 부족합니다.");
            return;
        }

        balance = balance - amount;
    }

    public void lockAccount() {
        if (!locked) {
            locked = true;
            System.out.println("계좌가 잠겼습니다.");
        } else {
            System.out.println("이미 잠겨있는 계좌입니다.");
        }
    }

    public void unlockAccount() {
        if (locked) {
            locked = false;
            System.out.println("계좌가 열렸습니다.");
        } else {
            System.out.println("이미 열린 계좌입니다.");
        }
    }

    public void showInfo() {
        
        System.out.println("예금주: " + owner);
        System.out.println("잔액: " + balance);

        if (locked) {
            System.out.println("상태: 잠김");
        } else {
            System.out.println("상태: 정상");
        }
    }

    public static void main(String[] args) {

        BankAccount acc = new BankAccount("철수");

        acc.deposit(5000);
        acc.withdraw(2000);

        acc.lockAccount();

        acc.deposit(1000);
        acc.unlockAccount();

        acc.withdraw(1000);

        acc.showInfo();
    }

}

마무리

아직은 많이 틀리고 헷갈려서 이정도 수준의 문제를 더 연습해서 내 걸로 만들어봐야겠다!

0개의 댓글