Skip to content

Latest commit

 

History

History
44 lines (27 loc) · 1.73 KB

OOP.md

File metadata and controls

44 lines (27 loc) · 1.73 KB

OOP

프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라,
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.



특징

  1. 추상화

    • 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것
  2. 캡슐화

    • 필드와 메소드를 클래스로 묶는 데이터 캡슐화
    • 외부에서 객체의 상태를 변경하는것을 막기위한 은닉화(접근제어자)
  3. 상속

    • 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
  4. 다형성

    • 어떤 변수,메소드가 상황에 따라 다른 결과를 내는 것 (오버라이딩, 오버로딩)



객체지향 5 원칙 (SOLID)

  1. SRP (단일 책임 원칙)

    • 객체는 오직 하나의 책임을 가져야한다.
  2. OCP (개방-폐쇄 원칙)

    • 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙
  3. LSP (리스코프 치환 원칙)

    • 자식 클래스는 언제나 자신의 부모 클래스를 대체할수 있다는 원칙
  4. ISP (인터페이스 분리 원칙)

    • 클라이언트에서 사용하지 않는 메서드는 사용해선 안된다. 그러므로 인터페이스를 다시 작게 나누어 만든다.
  5. DIP (의존성 역전 원칙)

    • 추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안된다는 원칙