프로그래밍/Typescript

타입스크립트에서 클래스와 추상 클래스의 이해

shimdh 2025. 3. 31. 09:09
728x90

타입스크립트는 자바스크립트의 상위 집합으로, 객체 지향 프로그래밍(OOP) 패러다임을 지원합니다. 이 글에서는 타입스크립트에서 클래스와 추상 클래스의 개념을 깊이 있게 살펴보고, 이를 활용하여 코드의 재사용성과 유지보수성을 높이는 방법에 대해 논의하겠습니다.

클래스의 정의

클래스는 객체 지향 프로그래밍의 핵심 개념으로, 객체를 생성하기 위한 청사진 역할을 합니다. 클래스는 속성과 메서드를 정의하여, 이를 기반으로 다양한 객체를 생성할 수 있게 해줍니다. 다음은 클래스의 기본적인 정의 방법입니다.

class Animal {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    speak(): void {
        console.log(`${this.name}가 소리를 냅니다.`);
    }
}

const dog = new Animal("개");
dog.speak(); // "개가 소리를 냅니다."

위의 예제에서 Animal 클래스는 name이라는 속성과 speak()라는 메서드를 포함하고 있습니다. 이 클래스를 통해 인스턴스를 생성하고, 해당 인스턴스를 사용하여 동물의 소리를 출력할 수 있습니다. 클래스의 이러한 구조는 객체의 속성과 행동을 명확하게 정의하고, 다양한 객체를 쉽게 생성하고 관리할 수 있도록 도와줍니다.

추상 클래스의 이해

추상 클래스는 다른 클래스들이 상속받기 위한 기본 클래스로 사용되며, 직접 인스턴스를 만들 수 없는 특성을 가지고 있습니다. 일반적으로 추상 클래스는 여러 자식 클래스들이 공통적으로 가져야 할 기능이나 속성을 정의하기 위해 만들어집니다. 추상 메서드는 자식 클래스에서 반드시 구현해야 하는 메서드로, 자식 클래스가 이 메서드를 구현함으로써 구체적인 동작을 정의할 수 있습니다.

추상 클래스를 정의하기 위해서는 abstract라는 키워드를 사용합니다. 다음은 추상 클래스의 예시입니다:

abstract class Shape {
    abstract area(): number; // 추상 메서드

    displayShapeType(): void {
        console.log("이것은 도형입니다.");
    }
}

class Circle extends Shape {
    radius: number;

    constructor(radius: number) {
        super();
        this.radius = radius;
    }

    area(): number { // 부모로부터 상속받은 추상 메서드 구현
        return Math.PI * this.radius * this.radius;
    }
}

const circle = new Circle(5);
circle.displayShapeType(); // "이것은 도형입니다."
console.log(`원의 면적: ${circle.area()}`); // "원의 면적: 78.53981633974483"

위의 코드에서는 Shape라는 이름의 추상 클래스를 정의하고, 그 안에 하나의 추상 메서드인 area()와 일반 메서드인 displayShapeType()을 포함했습니다. 이 추상 클래스를 상속받아 실제 원을 표현하는 Circle 클래스를 작성하였으며, 이를 통해 원의 면적을 계산하고 출력하는 기능을 구현하였습니다. 이러한 구조는 다양한 도형을 다룰 때, 각 도형의 공통적인 특성을 정의하고 관리하는 데 매우 유용합니다.

클래스와 추상 클래스의 활용

  1. 코드의 재사용성: 클래스를 사용하면 공통된 속성과 메서드를 정의하여 여러 객체에서 재사용할 수 있습니다. 이는 코드의 중복을 줄이고, 유지보수성을 높이는 데 기여합니다.

  2. 구조화된 설계: 추상 클래스를 통해 공통된 인터페이스를 정의함으로써, 다양한 자식 클래스들이 일관된 방식으로 동작하도록 강제할 수 있습니다. 이는 대규모 애플리케이션에서 특히 유용합니다.

  3. 유지보수성 향상: 클래스와 추상 클래스를 적절히 활용하면, 코드의 변경이 필요할 때 영향을 받는 부분을 최소화할 수 있습니다. 이는 개발자에게 더 나은 유지보수 환경을 제공합니다.

요약

  • 클래스는 객체 지향 프로그래밍에서 중요한 구성 요소로, 특정한 데이터와 행동을 캡슐화하여 코드의 가독성과 유지보수성을 높입니다.
  • 추상 클래스는 다른 클래스들이 공통적으로 가져야 할 특성이나 동작을 정의하며, 직접 인스턴스화할 수 없는 특성을 가지고 있습니다. 이를 통해 코드의 일관성을 유지하고, 중복을 줄이는 데 기여합니다.
  • 이러한 개념들은 복잡한 시스템 내에서 일관성을 유지하고 코드 중복을 줄이는 데 매우 유용합니다.

실제로 대규모 애플리케이션 개발 시에는 여러 종류의 도형들을 다루어야 할 경우가 많습니다. 이때 각 도형에 대한 공통 인터페이스를 제공하는 추상 클래스를 통해 관리하면 더 효율적인 코딩이 가능해집니다. 이러한 방식은 코드의 재사용성을 높이고, 유지보수성을 향상시키는 데 큰 도움이 됩니다.

728x90