본문 바로가기

💻 개발IT/OOP

2. Object-Oriented Principles

5가지 원리

  1. Abstraction
  2. Encapsulation
  3. Inheritance
  4. Polymorphism
  5. Composition



Abstraction (추상화)

  • := 모델링
  • 중요하지 않은 것은 무시하고 중요한 것들만 포함시키는 과정 (Emphasizes relevant characteristics, but suppresses other characteristics)



Encapsulation (캡슐화)

  • 내부적으로 어떻게 동작하는지 몰라도 쉽게 사용할 수 있도록 만드는 것
  • := information hiding
    • 객체 안에 있는 데이터를 외부로부터 숨김
    • Client는 Deposit() 수행하면서 내부에 어떤 정보가 변경되는지 모름 
  • Example : 자동차(object)에 많은 엔진, SW가 포함되어있지만 운전을 위해서는 detail한 정보 필요 없이 브레이크, 엑셀 밟는 방법만 알면 됨



Inheritance (상속)

  • := generalization (UML)
  • "is a kind of", "is-a" relationship (위 아래 계층이 있음)
    • 공통적인 부분을 상위 class로 묶음 (기존 개체에 속한 데이터와 동작을 모두 사용할 수 있음)
  • Java에서는 Single Inheritance (superclass가 1개여야함)



Polymorphism (다형성)

  • client가 호출하는 interface(외부의 act가 접근할 수 있는 포인트)가 1개인데 상황(context)에 따라서 다른 return
  • Example : 사람에 따라 다른 object의 implementation이 실행됨



Composition

  • Polymorphism을 구현할 수 있는 방법
  • Object composition
    • 특정 object가 다른 object를 가지고 잇음 ("has_a" relationship between objects)
    • 런타임에 동적으로 정의됨 (late binding)

반응형

'💻 개발IT > OOP' 카테고리의 다른 글

3. Object-Oriented Development (OOD)  (0) 2022.02.04
1. Object-Oriented  (0) 2022.02.02