객체지향의 사실과 오해 - 타입과 추상화

Groot·2022년 11월 9일
0

TIL

목록 보기
98/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 객체지향의 사실과 오해 - 타입과 추상화

📍 추상화

  • 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
  • 복잡성을 다루기 위한 추상화의 차원
    • 첫 번째 차원 : 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것
    • 두 번째 차원 : 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것이다.
  • 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것

📍 개념(타입)

  • 공통점을 기반으로 객체들을 묶기 위한 그릇.
  • 객체란 특정한 개념을 적용할 수 있는 구체적인 사물을 의미한다.
  • 개념이 객체에 적용됐을 대 객체를 개념의 인스턴스라고 한다.
  • 추상화의 첫 번째 차원인 일반화를 적용한 결과.

🔗 개념의 세 가지 관점

  • 심볼 : 개념을 가리키는 간략한 이름이나 명칭
  • 내연 : 개념의 완전한 정의를 나타내며 내연의 의미를 이용해 객체가 속하는지 여부를 확인할 수 있다.
  • 외연 : 개념에 속하는 모든 객체의 집합

🔗 분류

  • 객체에 특정한 개념을 적용하는 작업. 객체에 특정한 개념을 적용하기로 결심했을 때 우리는 그 객체를 특정한 집합의 멤버로 분류하고 있는 것.

🔗 타입과 객체

  • 객체가 어떤 행동을 하느냐에 따라 객체의 타입이 결정된다.
    • 다형성
  • 객체의 타입은 객체의 내부 표현과는 아무런 상관이 없다.
    • 좋은 객체지향은 외부에 행동만을 제공하고 데이터는 행동 뒤로 감춰야 한다.
    • 캡슐화

🔗 타입의 계층

  • 일반화 : 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 것
  • 특수화 : 일반적인 타입이 가진 모든 공통점은 포함하고, 거기에 더 해 특수한 행동을 가지는 것.
  • 슈퍼타입과 서브타입
    • 슈퍼타입 : 일반적인 타입
    • 서브타입 : 조금더 특수한 타입
    • 어떤 타입의 다른 타입의 서브타입이 되기 위해서는 행위적 호환성을 만족시켜야 한다.
    • 서브타입은 슈퍼타입을 대체할 수 있어야 한다.

📍 동적 모델과 정적 모델

  • 정적 모델 : 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현하는 것.
  • 동적 모델 : 실제로 객체가 살아 움직이는 동안 상태가 어떻게 변하고 어떻게 행동하는지 포착하는 것.

📍 결론

  • 타입은 추상화다.
  • 객체를 분류하는 기준은 타입, 타입을 나누는 기준은 객체가 수행하는 행동.
  • 객체지향에서 중요한 것은 동적으로 변하는 객체의 상태와 상태를 변경하는 행위다.
profile
I Am Groot

0개의 댓글