반응형 개발/기타9 SOLID 원칙 (3) - 리스코프 교환 원칙(LSP) 리스코프 교환 원칙(Liskov Substitution Principle) 서브 타입은 언제나 기반 타입으로 교체 가능해야 한다. 서브 타입은 언제나 기반 타입과 호환될 수 있어야 한다. 즉, 기반 클래스는 파생 클래스로 대체할 수 있어야 한다. 부모 클래스 인스턴스 자리에 자식 클래스의 인스턴스가 들어가도 작동해야 한다. 자식이 부모 자리에서 작동하려면 부모와 동일하게 행동해야 함 자식은 부모의 행동 규약을 준수해야 한다 부모 클래스의 속성과 메서드를 그대로 물려받으면 아무 문제 없다 대부분 오버라이딩 과정에서 문제가 발생 오버라이딩 과정에서 변수타입 변경, 메서드의 파라미터나 리턴값 변경 부모의 의도와 다르게 메서드를 변경하는 오버라이딩 LSP를 위반하면 OCP 붕괴(상속에는 닫혀 있고 개방에는 열려.. 2024. 3. 6. SOLID 원칙 (3) - 개방 폐쇄 원칙(OCP) 개방 폐쇄 원칙(Open Close Principle) 이해하기 개방 폐쇄 원칙은 소프트웨어 엔지니어링의 중요한 원칙 중 하나로, '소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다'는 개념을 말한다. 즉, 변경을 위한 비용은 최소화하고 확장을 위한 비용은 극대화해야 한다는 원칙이다. 요구사항의 변경과 기존 요소의 수정 요구사항이 변경되더라도 기존의 코드를 수정하지 않으면서 새로운 기능을 추가할 수 있어야 한다. 이를 통해 기존 요소의 재활용성을 높이고, 확장성을 쉽게 할 수 있어야 한다. 추상화와 다형성의 역할 추상화는 구체적인 것을 떠나 일반적인 개념이나 기준을 정의하는 것을 말한다. 객체의 공통적인 특징을 파악하여 일반화하는 과정이다. 반면, 다형성.. 2024. 2. 26. SOLID 원칙 (2) - 단일 책임 원칙(SRP) 단일 책임 원칙(SRP : Single Responsibility Principle) 클래스는 하나의 책임만 가진다. 클래스가 제공하는 모든 서비스(methods)는 그 책임을 수행하는데 집중한다. 환경이 바뀌어 클래스를 변경하는 경우는 오직 하나 뿐이어야 한다. 환경 변화로 하나의 클래스가 여러 책임을 갖는 경우 → 클래스 분할 복잡한 프로세스를 구현하거나 경험이 부족하면 지키기 어렵다. 대부분 SW 위협 원인이 된다. SRP 장점 클래스 책임 영역이 확실하다 → 하나의 책임 변경에 따른 연쇄 변경에서 자유롭다. 응집도 강화, 결합도 약화, 가독성 향상, 유지보수 용이. SRP 준수 전략 중복된 책임은 추상 클래스로 구현. 기존의 클래스로 해결할 수 없다면 새로운 클래스 구현. 응집도 강화 및 결합도 .. 2024. 2. 22. SOLID 원칙 (1) - 들어가기 객체지향 설계에 등장하는 개념 클래스: 공통되는 것들을 묶어서 대표적인 이름을 붙인 것이며 추상화의 결과이다. 인스턴스: 클래스가 메모리 공간에 할당된 실체이다. 객체: 명확한 의미를 담고 있는 대상으로 설계자의 관점에서는 구체적인 대상을 말하며, 개발자의 관점에서는 클래스에서 생성된 변수를 의미한다. 유익한 식별자와 상태(state)를 가지고 있으며, 연산을 수행할 수 있는 메서드(method)를 포함한다. SOLID 원칙 단일 책임 원칙(Single Responsibility Principle, SRP): 클래스는 하나의 책임만을 가져야 한다. 바리스타는 커피만 만들고, 캐셔는 계산만 하는 것처럼, 클래스도 하나의 기능만을 수행해야 한다. 개방-폐쇄 원칙(Open-Closed Principle, OC.. 2024. 2. 21. 이전 1 2 3 다음 반응형