Programming/객체 지향 프로그래밍(OOP)

OOP 활용: 제너릭 클래스 예제

vita12321 2023. 10. 21. 08:00
728x90
반응형

이번 글에서는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 핵심 요소 하나인 '제너릭 클래스' 대해 상세하게 다루겠습니다. 이전에는 클래스 정의와 활용법에 대해 살펴봤지만, 이번 글에서는 제너릭 클래스의 정의와 생성, 그리고 제너릭 클래스를 통한 객체 생성 등에 대해 자세하고 심화된 내용을 통해 설명하겠습니다.


1. 제너릭 클래스란?

 

제너릭(Generic) 데이터 타입을 일반화(Generalize)하는 것을 의미합니다. , 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다. 이를 통해 코드의 재사용성이 크게 높아집니다.


2. 제너릭 클래스를 사용하는가?

 

제너릭을 사용함으로써 다음과 같은 이점들이 있습니다:

 

  • 타입 안전성: 컴파일 시점에 타입 체크를 하므로 런타임 에러를 줄일 수 있습니다.
  • 코드 재사용: 다양한 데이터 타입에서 동작하는 하나의 메서드나 하나의 클래스를 만들 수 있으므로 코드 중복을 줄일 수 있습니다.

3. 제너릭 클래스 정의 활용

 

Java 언어에서 제너릭 클래스를 정의하고 활용하는 방법은 아래 예시 코드처럼 구현할 있습니다:

 

public class Box<T> {

    private T t;

 

    public void set(T t) { this.t = t; }

    public T get() { return t; }

 

}

 

public class Main {

   

    public static void main(String[] args){

 

        // Create objects of the generic class

        Box<Integer> integerBox = new Box<>();

        Box<String> stringBox = new Box<>();

 

        integerBox.set(new Integer(10));

        stringBox.set(new String("Hello World"));

 

        System.out.printf("Integer Value :%d\n", integerBox.get());

        System.out.printf("String Value :%s\n", stringBox.get());

    }

}

예시에서 `T` Type 파라미터로, 실제 구체적인 데이터 타입(Integer, String )으로 교체되며 사용됩니다.


4. 중요 사항들

 

제너릭클래스 혹은 메소드를 정의할 때는 대문자 알파벳 글자를 사용하는 것이 일반적입니다. 주로 사용되는 문자들은 다음과 같습니다:

 

  • `E` - Element (컬렉션 요소)
  • `K` - Key
  • `N` - Number
  • `T` - Type
  • `V` - Value

5. 활용 사례

 

제너릭 클래스와 메서드들은 다양한 상황에서 활용됩니다:

 

  • 컬렉션 프레임워크: Java의 컬렉션 프레임워크(List, Set, Map 등)에서는 제너릭을 활용하여 다양한 데이터 타입을 처리할 수 있도록 구현되어 있습니다.

  • 사용자 정의 자료구조: 사용자가 직접 정의한 자료구조에서도 제너릭을 활용하여 여러 타입에 대응할 수 있는 클래스를 만들 수 있습니다.

6. 추가적인 고려사항

 

제너릭 클래스를 설계하고 사용할 때는 가지 주의사항을 기억해야 합니다.

 

1) 제너릭은 컴파일 시점에 타입 체크를 수행하기 때문에 런타임 에러를 방지하는 역할을 합니다. 따라서 가능하면 원시 타입(raw type) 보다는 제너릭 타입을 사용하는 것이 좋습니다.

 

2) 제너릭은 상속 관계를 고려하지 않습니다. 예를 들어, `Box<Number>` `Box<Integer>` 슈퍼타입이 아닙니다. 점은 코드 설계 주의해야 합니다.


7. 결론

 

객체 지향 프로그래밍에서 '제너릭 클래스' 코드 재사용성과 안정성을 높이는 중요한 도구입니다. 각각의 클래스와 메소드가 다양한 데이터 타입에 유연하게 대응하도록 설계함으로써 효율적인 프로그래밍이 가능합니다.

 

제너릭을 통해 우리는 다양한 데이터 타입에서 동작하는 하나의 메서드나 하나의 클래스를 만들 있으므로 코드 중복을 줄일 있습니다. 또한, 컴파일 시점에 타입 체크가 이루어져서 런타임 에러 발생 확률을 줄일 있습니다.

728x90
반응형

 

728x90
반응형