JAVA

JAVA - 객체 지향 프로그램 연습문제

jonghyeon6084 2024. 1. 3. 11:30
728x90

문제. 1 - 절차 지향 직사각형 프로그램을 객체 지향으로 변경하기

다음은 직사각형 넓이, 둘레 길이, 정사각형 여부를 구하는 프로그램이다.

 

  • 절차 지향 프로그래밍 방식으로 되어 있는 코드를 객체 지향 프로그래밍 방식으로 변경하기
  • Retanngle 클래스를 만들기
  • RetangleOopMain에 해당 클래스를 사용하는 main() 코드 만들기

절차 지향 코드

package oop.ex;

public class RectangleProceduralMain {
    public static void main(String[] args) {
        int width = 5;
        int height = 8;
        int area = calculateArea(width, height);
        System.out.println("넓이: " + area);
        int perimeter = calculatePerimeter(width, height);
        System.out.println("둘레 길이: " + perimeter);
        boolean square = isSquare(width, height);
        System.out.println("정사각형 여부: " + square);
    }

    static int calculateArea(int width, int height) {
        return width * height;
    }

    static int calculatePerimeter(int width, int height) {
        return 2 * (width + height);
    }

    static boolean isSquare(int width, int height) {
        return width == height;
    }
}

 

내가 푼 정답

public class Rectangle {
    int width;
    int height;

    int area() {
        return width * height;
    }

    int perimeter() {
        return 2 * (width + height);
    }

    boolean isSquare() {
        return width == height;
    }
}
public static void main(String[] args) {
    Rectangle rectangle = new Rectangle();
    rectangle.width = 5;
    rectangle.height = 8;

    int area = rectangle.area();
    System.out.println("넓이 : " + area);
    int perimeter = rectangle.perimeter();
    System.out.println("둘레 길이 : " + perimeter);
    boolean square = rectangle.isSquare();
    System.out.println("정사각형 여부 : " + square);
}

 

문제. 2 - 객체 지향 계좌

은행 계좌를 객체로 설계하기.

  • Account 클래스 만들기
    • int balance : 잔액
    • deposit(int amount) : 입금 메서드
      • 입금시 잔액이 증가한다.
    • withdraw(int amount) : 출금 메서드
      • 출금시 잔액이 감소한다.
      • 만약 잔액이 부족하다면 잔액 부족을 출력하기
  • AccountMain 클래스를 만들고 main() 메서드를 통해 프로그램을 시작하기
    • 계좌에 10000원 입금.
    • 계좌에 9000원 출금.
    • 계좌에 2000원 출금.(잔액 부족이 출력되는지 확인)
    • 잔고 출력.
public class Account {
    int balance;
    int amount;
    void deposit(int amount) {
        balance += amount;
    }

    void withdraw(int amount) {
        if (balance >= amount) {
            balance -= amount;
        } else {
            System.out.println("잔액이 부족합니다.");
        }
    }
}
public static void main(String[] args) {
    Account account = new Account();
    account.deposit(10000);
    account.withdraw(9000);
    account.withdraw(2000);
    System.out.println("잔액 : " + account.balance);
}