Composition

codakcodak·2023년 10월 11일
0

OOP python

목록 보기
10/19
post-custom-banner

컴포지션

  • 다른 클래스의 일부 기능을 그대로 이용하고 싶으나, 전체 기능 상속은 피하고 싶을 때 사용
  • Composition 또는 Aggregation 이라고도 한다.
  • 부모 클래스의 메서드 오버라이딩을 하는 경우 내부 구현 방식의 얕은 이해로 오류가 생길 가능성이 증가
  • 부모클래스가 변하면 자식 클래스는 계속 수정 되어야 한다.
class Calc:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.calc2 = Calc2(x, y)  # 해당 클래스의 객체를 명시적으로 가져옴

    def add(self):
        return self.x + self.y

    def subtract(self):
        return self.x - self.y

    def multiply(self):
        return self.calc2.multiply()  # 해당 클래스의 객체에 있는 메서드를 명시적으로 활용함


class Calc2:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def multiply(self):
        return self.x * self.y


cal1 = Calc(2, 11)
print(cal1.multiply())
22
profile
숲을 보는 코더
post-custom-banner

0개의 댓글