1 분 소요

객체 지향 프로그램이 왜 이러한 특성을 가지고 있는지도 같이 고민해보면 개념의 “이해”에 도움이 된다 » 논리 오류를 줄여준다.

  • Encapsulation 캡슐화
    • 실제 구현 내용을 외부에 감추는 것.
    • 객체가 목적에 맞게끔, 논리에 맞게끔 작동하도록 하기 위해. 자동차: 계기판(읽기)과 엔진(쓰기)의 역할
  • Inherit 상속
    • 부모 객체가 자기 필드와 메서드를 자식 객체에 물려준다.
    • Copy & past와 다른게 뭐지?
    • 재사용성을 높이고 유지 보수 시간을 최소화한다.
    • (자식 객체) 특별화
  • Polymorphism 다형성
    • 사용 방법은 동일(메서드 호출은 하나)하지만 실행 결과가 다양함: 다양한 형태를 대응
    • 를 인자로 쓰는 메서드 뿐 아니라 인터페이스도 다형성의 한 가지이다.

SOLID

SRP(Single Responsebility Principle): 단일 책임 원칙

모든 클래스는 각각 하나의 책임만 가져야 한다: 클래스는 그 책임을 완전히 캡슐화해야 한다.

OCP(Open Closed Principle): 개방 폐쇄 원칙

확장에는 열려있고, 수정에는 닫혀있다. 기존의 코드를 변경하지 않으면서 기능을 추가살 후 있도록 설계가 되어야 한다.

LSP(Listov Substitution Principle): 리스코프 치환 원칙

  • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다. 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 제대로 작동해야 한다.
  • 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.

ISP(Interface Segregation Principle): 인터페이스 분리 원칙

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.

DIP(Dependency Inversion Principle): 의존 역전 원칙

의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다 변화하기 어려운 것, 거의 변과가 없는 것에 의존해야 한다. 구체 클래스보다 인터페이스나 추상 클래스와 관계를 맺어야 한다.

참고 자료

SOLID 원칙 - 홍찬기, Medium

댓글남기기