개발/JAVA

Java 객체 지향 프로그래밍 - Point 클래스 만들기

예니03 2025. 2. 5. 09:57
반응형

1. 개요

이번 포스팅에서는 Java의 객체 지향 프로그래밍(OOP) 개념을 익히기 위해 Point 클래스를 만들어보겠습니다. 이 클래스는 좌표 (x, y)를 저장하고, 해당 점을 화면에 출력하는 기능을 합니다. 또한, 캡슐화(Encapsulation)생성자(Constructor) 개념을 적용하여 더욱 깔끔하고 확장 가능한 코드를 작성해 보겠습니다.

2. Point 클래스 - 버전 1 (기본적인 구조)

먼저, 가장 기본적인 Point 클래스를 만들어 보겠습니다.

Point 클래스 (v1)

package com.javaex.oop.point.v1;

public class Point {
    // 필드 (은닉)
    private int x;
    private int y;

    // Getter & Setter
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }

    // 점을 그리는 메서드
    public void draw() {
        System.out.printf("점[x=%d, y=%d]을 그렸습니다.%n", x, y);
    }
}

PointApp 클래스 (v1)

package com.javaex.oop.point.v1;

public class PointApp {
    public static void main(String[] args) {
        Point one = new Point();
        one.setX(5);
        one.setY(5);

        Point two = new Point();
        two.setX(10);
        two.setY(23);

        one.draw();
        two.draw();
    }
}

실행 결과

점[x=5, y=5]을 그렸습니다.
점[x=10, y=23]을 그렸습니다.

💡 설명

  • Point 클래스는 x와 y 좌표 값을 가집니다.
  • setX(), setY() 메서드를 이용해 값을 설정할 수 있습니다.
  • draw() 메서드는 현재 좌표를 출력합니다.

하지만, 매번 setX(), setY()를 사용해 값을 설정하는 것은 번거롭습니다. 이를 해결하기 위해 생성자를 추가해보겠습니다.

3. Point 클래스 - 버전 2 (생성자 추가)

생성자는 객체가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 이를 활용하면 객체를 만들 때 필드를 초기화하는 작업을 간편하게 처리할 수 있습니다.

Point 클래스 (v2)

package com.javaex.oop.point.v2;

public class Point {
    // 필드 (은닉)
    private int x;
    private int y;

    // 기본 생성자
    public Point() {
    }

    // 모든 필드를 초기화하는 생성자
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public void draw() {
        System.out.printf("점[x=%d, y=%d]을 그렸습니다.%n", x, y);
    }
}

PointApp 클래스 (v2)

package com.javaex.oop.point.v2;

public class PointApp {
    public static void main(String[] args) {
        Point one = new Point(5, 5);
        Point two = new Point(10, 23);

        one.draw();
        two.draw();
    }
}

실행 결과

점[x=5, y=5]을 그렸습니다.
점[x=10, y=23]을 그렸습니다.

🔥 개선된 점

  • 생성자(Constructor) 를 활용하여 setX(), setY()를 사용하지 않고도 좌표 값을 설정할 수 있습니다.
  • 기본 생성자도 추가하여 필요할 경우 빈 객체도 만들 수 있습니다.
  • 코드가 더 간결하고 읽기 쉬워졌습니다.

4. 정리

이번 포스팅에서는 클래스, 객체, 필드, 메서드, 생성자 개념을 활용하여 Point 클래스를 만들었습니다.

  • 버전 1: setX(), setY() 메서드를 이용하여 좌표 값을 설정.
  • 버전 2: 생성자를 활용하여 객체 생성과 동시에 필드 값을 초기화.

이제 Point 클래스를 확장하여 색상 추가, 좌표 이동 등의 기능을 넣어볼 수도 있습니다. 객체 지향 프로그래밍을 배우는 데 중요한 개념이니, 직접 코드를 작성해보면서 익혀보세요! 😊

 

반응형