[Java] Section3 - 문제와 풀이

코드 속의 "진돌"·2024년 2월 2일
0
post-thumbnail

✅ 절차 지향 직사각형 프로그램을 객체 지향으로 변경하기


🔔 문제 설명

다음은 직사각형의 넓이(area), 둘레 길이(perimeter), 정사각형 여부(square)를 구하는 프로그램이다. 이 프로그램을 객체 지향으로 변경해보자.



🔔 요구 사항

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



✏️ 절차 지향 코드

package oop1.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 (width + height) * 2;
  }
  
  static boolean isSquare(int width, int height) {
    return width == height;
  }
}



🖥️ 실행 결과

넓이: 40
둘레 길이: 26
정사각형 여부: false



✏️ 정답

package oop1.ex;

public class Rectangle {
  int width;
  int height;

  // 넓이
  int calculateArea() {
    return width * height;
  }

  // 둘레
  int calculatePerimeter() {
    return (width + height) * 2;
  }

  // 정사각형 여부
  boolean isSquare() {
    return width == height;
  }
}

package oop1.ex;

public class RectangleOopMain {

  public static void main(String[] args) {
    Rectangle rectangle = new Rectangle();  // 객체 생성
    rectangle.width = 5;
    rectangle.height = 8;

    int area = rectangle.calculateArea();
    System.out.println("넓이: " + area);

    int perimeter = rectangle.calculatePerimeter();
    System.out.println("둘레: " + perimeter);

    boolean square = rectangle.isSquare();
    System.out.println("정사각형 여부: " + square);
  }
}




✅ 객체 지향 계좌


🔔 문제 설명

은행 계좌를 객체로 설계해보자.



🔔 요구 사항

  • Account 클래스를 만들어라.
    • int balance : 잔액
    • deposit(int amount) : 입금 메서드
      • 입금 시 잔액이 증가한다.
    • withdraw(int amount) : 출금 메서드
      • 출금 시 잔액이 감소한다.
      • 만약 잔액이 부족하면 잔액 부족을 출력해야 한다.
  • AccountMain 클래스를 만들고 main() 메서드를 통해 프로그램을 시작해라.
    • 계좌에 10000원을 입금해라.
    • 계좌에서 9000원을 출금해라.
    • 계좌에서 2000원을 출금 시도해라. → 잔액 부족 출력을 확인해라.
    • 잔고를 출력해라.
      • 잔고: 1000



🖥️ 실행 결과

잔액 부족
잔고: 1000



✏️ 정답

package oop1.ex;

public class Account {
  int balance;  // 잔액

	// 입금
  void deposit(int amount) {
    balance += amount;
  }

	// 출금
  void withdraw(int amount) {
    if (balance >= amount) {
      balance -= amount;
    } else {
      System.out.println("잔액 부족");
    }
  }
}

package oop1.ex;

public class AccountMain {

  public static void main(String[] args) {
    Account account = new Account();

    account.deposit(10000);
    account.withdraw(9000);
    account.withdraw(2000);  // 오류 메시지 출력

    System.out.println("잔고: " + account.balance);
  }
}
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글