본문 바로가기

OOP5

[OOP] 객체지향의 원칙 SOLID - 의존성 역전 원칙 (DIP) 의존성 역전 원칙 (Dependency Inversion Principle, DIP)고수준 모듈은 저수준 모듈에 의존해서는 안 된다 둘 다 추상화에 의존해야 한다추상화는 세부 사항에 의존해서는 안 된다. 세부 사항은 추상화에 의존해야 한다  DIP의 장점유연성 향상: 시스템의 한 부분을 변경해도 다른 부분에 영향을 주지 않으므로 시스템의 유연성이 높아다.테스트 용이성: 각 모듈이 추상화에 의존하기 때문에 단위 테스트가 용이하다.유지보수성 향상: 코드의 변경이 적고 재사용성이 높아져 유지보수성이 향상된다. 다른 원칙과의 관계:SRP: SRP를 지키면 각 클래스가 단일 책임을 가지므로, 의존성 주입 시 명확한 역할을 가진 객체들 간의 관계를 설정할 수 있습니다.OCP: DIP를 지키면 구체적인 구현체 대신 .. 2024. 6. 23.
[OOP] 객체지향의 원칙 SOLID - 인터페이스 분리 원칙 (ISP) 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않도록 해야 한다 (추상화)  인터페이스 분리 원칙은 객체가 자신의 책임이 아닌 행위를 물려 받지 않게 하는 것으로 각 책임별로 인터페이스를 나누어서 생성해야 한다는 것이다만약 그렇지 않고 범용 인터페이스를 생성하면 나중에 코드의 유지보수가 어렵다 다른 원칙과의 관계SRP: SRP를 지키면 인터페이스도 단일 책임을 가지게 되어 ISP를 만족할 수 있습니다.OCP: 인터페이스가 잘 분리되어 있으면 새로운 기능을 추가할 때 특정 인터페이스를 확장하기 쉬워 OCP를 만족할 수 있습니다.LSP: .. 2024. 6. 23.
[OOP] 객체지향의 원칙 SOLID - 리스코프 치환 원칙 (LSP) 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 자식 클래스는 부모 클래스의 기능을 대체하거나 확장할 수 있어야 한다. (상속 , is-a 관계) 리스코프 치환 원칙은 상속에 관한 원칙으로 객체지향에서의 서브타입과 슈퍼타입에 대한 개념으로 생각할 수 있다. 서브타입은 자식클래스로, 슈퍼 타입은 부모 클래스로 생각하면 서브 타입은 특수화 타입이고 슈퍼 타입은 일반화된 타입이므로 서브 타입인 자식클래스가 슈퍼 타입인 부모 클래스에 순응을 한다고 할 수 있다 이때 순응이란 서브타입이 슈퍼타입의 구조화 행위를 따라하는 것이다하위형식에서선행조건을 더할 수 없음자식 클래스에서 부모 클래스에 있는 기능에 추가적인 조건을 덧붙일 수 없다하위형식에서 후행조건을 약화실킬 수 없음부모 클래스에서 기능의 .. 2024. 6. 23.
[OOP] 객체지향의 원칙 SOLID - 개방 폐쇄 원칙 (OCP) 개방-폐쇄 원칙 (Open/Closed Principle, OCP)소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다. 새로운 기능을 추가할 때 기존 코드를 수정하지 않고도 확장할 수 있어야 한다. 개방 폐쇄 원칙의 정의는 즉 새로운 기능을 추가하거나 기존 성능을 확장 할 때 기존의 안정적인 코드를 변경하지 않고 새로운 코드를 추가해야 한다는 것이다 이러한 개방 폐쇄 원칙은 객체 지향의 네 가지 특성 중 (캡슐화, 다형성, 추상화)과 연관이 있다  캡슐화 :  다른 객체가 객체의 데이터에 대한 접근을 제어하고 데이터의 변경을 최소화 하는 것그렇기에 개방 패쇄 원칙은 공용 인터페이스(public) 을 통해 다를 객체와 협력하고 다른 메서드들과 상태들은 들어.. 2024. 6. 21.
[OOP] 객체지향의 원칙 SOLID - 단일 책임 원칙 (SRP) 객체지향에서 가장 중요한 키워드는 바로 '객체' 이다객체는 역할을 가지고 책임이 있으며, 다른 객체와 협력하는 존재이다또한 객체는 협력적이며 자율적이어야 한다 협력적 : 객체가 협력적이지 않고 혼자 스스로 처리하려고 하면 내부 복잡도에 의해 소멸한다자율적 : 스스로 책임에 대해 수행할 수 있어야 한다 , 다른 객체의 영향을 받으면 안된다 (캡슐화) 이러한 객체의 개념을 생각하면서 SOLID를 생각해야 조금 이해가 쉬워진다또한 객체지향에서 말하는 용어와 자바에서 말하는 용어가 겹쳐질 때가 있는데 단어만 같은 것이지 의미는 객체지향이 더 포괄적이므로 자바의 용어와 헷갈리지 말자   단일 책임 원칙 (Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 한다.클래스가.. 2024. 6. 21.