목록OOP (5)
yoongrammer
목차의존성 역전 원칙 (DIP: Dependency Inversion Principle)1. 상위 모듈은 하위 모듈에 의존해서는 안 되고 둘 다 추상화에 의존해야 한다. 2. 추상화는 세부 사항에 의존해서는 안 되고 세부사항(구체적인 구현)은 추상화에 의존해야 한다.로버트 C. 마틴 의존성 역전 원칙(DIP)은 변화하기 쉬운 것에 의존하지 말라는 원칙입니다.DIP를 지킴으로써 하위 모듈(or 클래스)에 대한 상위 모듈(or 클래스)의 종속성을 줄일 수 있습니다.상위 모듈(or 클래스): 도구로 작업을 실행하는 클래스하위 모듈(or 클래스): 작업을 실행하는데 필요한 도구DIP 적용 전다음 예를 보겠습니다.Calculator 클래스가 Add클래스를 사용하여 덧셈을 하는 예입니다.여기서 Calculator ..
목차인터페이스 분리 원칙 (ISP: Interface Segregation Principle)클라이언트는 사용하지 않는 인터페이스에 강제로 의존해서는 안된다.로버트 C. 마틴 인터페이스 분리 원칙(ISP)은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙입니다.ISP를 지킴으로써 큰 덩어리의 인터페이스를 구체적이고 작은 단위로 분리시키며 클라이언트가 꼭 필요한 메서드만 이용할 수 있게 합니다.ISP 적용 전ISP를 위반하는 예를 보겠습니다.Vechicle은 go(), fly() 메서드를 가진 추상 클래스입니다.from abc import ABC, abstractmethodclass Vehicle(ABC): @abstractmethod def go(self): pass @abstr..
목차리스코프 치환 원칙 (LSP: Liskov Substitution Principle) S가 T의 하위 유형이면 프로그램에서 자료형 T의 객체는 해당 프로그램의 원하는 속성을 변경하지 않고 자료형 S의 객체로 교체(치환)할 수 있어야 한다.바바라 리스코프(Babara Liskov) 로버트 C마틴은 이것을 다음과 같이 요약했습니다.자식 클래스는 부모 클래스를 대체할 수 있어야 한다. 이 원칙의 핵심은 부모 클래스를 사용하는 위치에 자식 클래스를 대신 사용했을 때 코드가 원래 의도대로 작동해야 한다는 것을 의미합니다. LSP 위반 사례일반적으로 많이 드는 예시가 바로 직사각형을 상속한 정사각형 클래스의 예시입니다.class Rectangle: def __init__(self, width, height): ..
목차개방-폐쇄 원칙 (OCP: Open-Closed Principle)소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다.Bertrand Mayer 계방 폐쇄 원칙은 기존 코드를 변경하지 않으면서(Close) 기능을 추가(Open)할 수 있도록 설계가 되어야 한다는 원칙입니다. 이 원칙을 지키기 위해서 주로 객체지향의 추상화와 다형성을 활용합니다.OCP 적용 전class File: def __init__(self, name): self.name = name def __repr__(self): return f'File(name={self.name})'class FileStorage: def save_t..
목차단일 책임 원칙 (SRP: Single Responsibility Principle)클래스를 변경하는 이유는 단 한 가지여야 한다.로버트 C. 마틴 단일 책임 원칙(SRP: Single Responsibility Principle)은 다섯 가지 SOLID 애자일 원칙 중 하나입니다. 클래스를 변경하는 이유가 한 가지이기 위해서는 하나의 액터에 대한 책임만 가지고 있어야 합니다.여기서 책임은 하나의 특정 액터를 위한 기능 집합이고, 액터란 기능(=클래스 ,모듈)을 사용하는 주체입니다. SRP 적용 전class Car(): def start(self): pass def stop(self): pass def drive(self): pass def wash(self): pass def chan..