Java 문제, 직사각형 객체 지향 만들기

직사각형 넓이(Area), 둘레 길이(Perimeter), 정사각형 여부(square)를 구하는 프로그램이다.

요구사항

  • 절차 지향 프로그래밍을 객체 지향 프로그래밍 방식으로 변경하기
  • RectangleClass 클래스를 만들기
  • RectangleClass 클래스를 사용 하는 main() 코드 만들기

절차 지향 코드

public class Main {
    public static void main(String[] args) {
        int width = 6;
        int height = 10;
        int area = calculateArea(width, height);
    }

    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;
    }
}

출력 결과:

넓이: 60
둘레 길이: 32
정사각형 여부: false

직사각형 문제 풀이

절차 지향 프로그래밍에서 객체 지향으로 코드를 변경하였다.

클래스

public class Quadrangle {
    int width;
    int height;

    int calculateArea() {
        return width * height;
    }

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

    boolean isSquare() {
        return width == height;
    }
}

Main 함수

public class Main {
    public static void main(String[] args) {
        Quadrangle quad = new Quadrangle();
        quad.width = 6;
        quad.height = 10;
        int area = quad.calculateArea();
        System.out.println("넓이: " + area);

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

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

출력 결과:

넓이: 60
둘레 길이: 32
정사각형 여부: false

Main 코드를 보면 마치 객체에게 물어보면 답을 꺼내는 것처럼 동작하는 것을 볼 수 있다. 이러한 느낌을 주는 이유는 캡슐화가 잘 되어있기 때문이다.

Quadrangle 사각형 클래스를 new 키워드로 메모리에 생성했기에 언제든지 메소드를 호출하여 기능을 구현할 수 있다.