[javascript] 객체의 다형성을 활용한 유연한 코드 작성

객체의 다형성은 객체지향 프로그래밍에서 중요한 개념 중 하나입니다. 이를 통해 코드를 더 유연하고 재사용 가능하게 작성할 수 있습니다. 다형성을 활용하여 개발하면 코드를 간결하게 유지할 수 있고, 유지보수가 쉬워집니다.

다형성이란 무엇인가요?

다형성(Polymorphism)은 여러 개의 클래스가 같은 이름의 메서드를 가지고 있지만 각각의 객체에 따라 다르게 동작할 수 있는 특성을 말합니다. 이를 통해 여러 객체를 동일한 인터페이스를 사용하여 처리할 수 있고, 코드의 유연성과 확장성을 높일 수 있습니다.

다형성의 장점

  1. 유연한 코드 작성: 다형성을 활용하면 유사한 기능을 하는 여러 클래스들을 하나의 인터페이스로 다룰 수 있습니다. 이는 코드의 일반화를 통해 유연한 코드 작성을 가능케 합니다.
  2. 코드 재사용성 향상: 동일한 인터페이스를 사용하여 다양한 객체를 처리할 수 있기 때문에, 코드 재사용성이 증가합니다.
  3. 유지보수성 향상: 새로운 클래스를 추가하거나 기존 클래스를 수정할 때, 다형성을 활용하면 기존 코드에 영향을 덜 미치며 유지보수가 용이해집니다.

예제를 통한 다형성 활용

class Shape {
  calculateArea() {
    throw new Error("This method should be overridden.");
  }
}

class Circle extends Shape {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  calculateArea() {
    return Math.PI * this.radius ** 2;
  }
}

class Rectangle extends Shape {
  constructor(width, height) {
    super();
    this.width = width;
    this.height = height;
  }

  calculateArea() {
    return this.width * this.height;
  }
}

function printArea(shape) {
  console.log("Area: " + shape.calculateArea());
}

const circle = new Circle(5);
const rectangle = new Rectangle(4, 6);

printArea(circle); // Output: Area: 78.54
printArea(rectangle); // Output: Area: 24

위 예제에서 Shape 클래스를 상속받는 CircleRectangle 클래스가 각각 calculateArea 메서드를 구현하고 있습니다. printArea 함수는 Shape 타입을 인자로 받아들여 여러 형태의 도형을 처리할 수 있습니다.

결론

객체의 다형성을 적절히 활용하면 코드의 유연성과 재사용성을 높일 수 있습니다. 이는 객체지향 프로그래밍에서 중요한 원칙 중 하나이며, 코드를 더 간결하고 유지보수가 쉬운 형태로 설계할 수 있도록 도와줍니다.

참조: MDN Web Docs - 다형성