Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

유틸리티 클래스는 객체지향이 아닌 이유는? #1

Open
f1v3-dev opened this issue Nov 6, 2024 · 1 comment
Open

유틸리티 클래스는 객체지향이 아닌 이유는? #1

f1v3-dev opened this issue Nov 6, 2024 · 1 comment

Comments

@f1v3-dev
Copy link
Owner

f1v3-dev commented Nov 6, 2024

유틸리티 클래스를 보자면,

public class NumberUtils {

    private NumberUtils() {
        throw new UnsupportedOperationException("Utility class");
    }


    public static String formatWithCommas(int number) {
        // 숫자를 천 단위로 쉼표를 찍어주는 메서드
    }
}

위와 같이 static method를 통해 접근만 가능하다. 또한 생성자를 private 접근 제어자를 통해 인스턴스화를 막아두었다.

  • 단순하게 공통적으로 사용되는 메서드를 한 곳에 모아 재사용성을 높인것
  • 해당 유틸리티 클래스를 사용하는 클래스와 강한 결합도를 갖추게 된다.

인스턴스화를 막기 때문에 객체지향이 될 수 없는 것 같다. 오히려 절차지향에 가깝다고 할 수 있을 것 같다.
객체지향이 되기 위해서는 다른 객체와 협력 관계에서 메시지를 주고 받아야 하는데 유틸리티 클래스는 '객체'가 아님

읽어보자

@f1v3-dev
Copy link
Owner Author

객체가 식별 가능하다는 것은 구별할 수 있는 특정한 프로퍼티, 식별자가 객체 안에 존재한다는 것이라고 한다.

여기서 식별자는 new 키워드를 통해 만들어진 인스턴스가 가지는 Heap 영역 메모리 주소라고 봐도 무방한가?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant