객체 지향 설계 원칙(SOLID) 중 OCP
2023. 8. 26. 21:47ㆍ자격증/정보처리기사
반응형
개방 폐쇄 원칙(OPC : Open Close Principle) : 확장에는 열려있고 변경에는 닫혀 있다 라는 것이다.
이게 무슨 말임? 무슨 번역기 돌린 것 같다. 근데 찾아보면 대부분 이런 말투이다. 물론 코딩을 짜보면 무슨 의미인지 맥락적으로 아는 경우가 많지만 처음 보는 사람은 이게 뭐지 싶을 것이다.
from abc import *
class Shape(metaclass=ABCMeta):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
추상 클래스를 쓰려면 abc(abstract base class)를 불러와야 한다.
Shape라는 클래스를 선언하고 추상메소드로 area를 정의했다.
그리고 원과 사각형의 area를 각각 다르게 구현하도록 정의를 한 것. 그렇다면 만약 삼각형을 추가하고싶다면 기존의 코드를 수정해야 하나?
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return 0.5 * self.base * self.height
삼각형의 area의 공식은 위와 같은데 내가 앞서 정의한 원, 사각형이나 기존의 추상 Shape 클래스를 변경한 것은 아니니까.
이게 OCP다.
728x90
'자격증 > 정보처리기사' 카테고리의 다른 글
2023년 3회차 정보처리기사 필기 후기. 붙은 듯!? ㅅㅅㅅㅅㅅㅅ (1) | 2023.07.08 |
---|---|
정보처리기사 공부하기 8일차. 당일 공부하기. (0) | 2023.07.08 |
정보처리기사 공부하기 7일차. 2021년 3회. 2과목까지. (0) | 2023.07.06 |
정보처리기사 공부하기 6일차. 2022년 1회. 5과목 공부 - 개조졌다. (0) | 2023.07.05 |
정보처리기사 공부하기 5일차. 4과목 내가 모르는 것 개념 및 문제 해석. (0) | 2023.07.03 |