유틸리티 클래스란?
여러 클래스에서 공통적으로 사용할 수 있는 메서드를 모아 만든 클래스이다. 유틸리티 클래슨 기본적으로 정적 메서드만 구현하여 제공하기 때문에 인스턴스화할 필요가 없다.
유틸리티 클래스를 활용하게 되면 기능만 분할한 절차지향 프로그래밍이다. 결합도가 커지고 의존성을 분리한 단위 테스트를 하기 어렵다.
그렇다면 유틸리티 클래스를 활용한 절차지향형 프로그램과 객체지향형 프로그래밍의 구현은 다음과 같다.
package com.example.ooptest;
// 유틸리티 클래스
public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
public static int multiply(int a, int b) {
return a * b;
}
}
package com.example.ooptest;
// 객체지향
public class Calculator {
public int a;
public int b;
public Calculator(int a, int b) {
this.a = a;
this.b = b;
}
public int add() {
return a + b;
}
public int multiply() {
return a * b;
}
}
package com.example.ooptest;
public class OopTestApplication {
public static void main(String[] args) {
int num1 = 2;
int num2 = 10;
// 유틸리티 클래스 사용하기(절차지향 프로그래밍)
int 절차지향_합 = MathUtil.add(num1, num2);
int 절차지향_곱 = MathUtil.multiply(num1, num2);
System.out.println("절차지향_합 = " + 절차지향_합); //절차지향_합 = 12
System.out.println("절차지향_곱 = " + 절차지향_곱); //절차지향_곱 = 20
// 객체 사용하기(객체지향 프로그래밍)
Calculator calculator = new Calculator(num1, num2);
int 객체지향_합 = calculator.add();
int 객체지향_곱 = calculator.multiply();
System.out.println("객체지향_합 = " + 객체지향_합); //객체지향_합 = 12
System.out.println("객체지향_곱 = " + 객체지향_곱); //객체지향_곱 = 20
}
}
유틸리티 클래스는 이렇게 구현해 봤지만, 절차지향과 객체지향의 정확한 차이는 와닿지 않았다.
절차지향과 객체지향에 대해 더 찾아봐야겠다
참고링크
https://velog.io/@ikjo39/%EC%9C%A0%ED%8B%B8-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%9E%80
https://www.mimul.com/blog/oop-alternative-to-utility-classes/
'우테코 프리코스 7기' 카테고리의 다른 글
11, 12일차 - 기능 구현 해보기 (1) | 2024.11.01 |
---|---|
10일차 - 구현 기능 목록 작성하기 (0) | 2024.10.27 |
8일차 - 코드리뷰하기 (0) | 2024.10.24 |
1주차 회고 - 지나치게 고민하지 말고 일단 해보기 (0) | 2024.10.24 |
5,6일차 - 과제 제출하기 (0) | 2024.10.23 |
댓글