[F-Lab 모각코 챌린지] 20일차 - 객체지향

F-Lab 모각코 챌린지 20일차 객체지향에 대해 정리하였습니다 객체지향 너무 어렵습니다..

[F-Lab 모각코 챌린지] 20일차 - 객체지향
💡
책의 저자에 대한 절대적 믿음은 금물이다
필자가 책을 통해 이야기 하는 것이 진짜 그러한지 스스로 확인하는 습관을 들이자
💡
사상과 제품은 별개이다.

객체지향

  • 객체지향 사상
  • 객체지향 패러다임

객체지향의 4대 특성

캡슐화(Encapsulation)
  • 클래스의 내부 상태를 외부로부터 숨긴다
  • 클래스에서 허용한 인터페이스만을 통해 객체를 행동하게 만든다
상속 (Inheritance)
  • 클래스 간의 관계를 구축하여 부모의 기능을 상속받는다
  • 자식 객체에서는 필요에 따라 행동을 추가한다
다형성 (Polymorphism)

다형성이란, 한가지 형태로 여러 기능을 수행하는 것을 의미한다

  • 오버라이딩을 통해 구현한다
추상화 (Abstraction)
  • 복잡한 시스템 또는 개체를 단순화 하여 핵심적인 특성에 집중한다
  • 클래스를 정의하며 시스템에서 필요한 개념들을 추상적으로 표현한다

객체지향 사상

  • 1960 년 앨런케이 라는 개발자가 고안해낸 아이디어
  • 앨런 케이는 세포들이 유기적으로 협력하여 거대한 생명체가 되는 모습을 프로그래밍에 담고싶었다

앨런 케이 는 객체지향에 대한 여러 말을 남겼다

  1. "객체지향 프로그래밍은 역할 모델이다"
  2. "객체지향 프로그래밍은 메시지 전달이다"
  3. "소프트웨어를 설계 할 때, 현실 세계 객체들의 상호작용에 대한 모델을 만들어야 한다"
  4. "객체는 상태와 동작을 함께 가지며, 데이터와 해당 데이터를 조작하는 메서드를 캡슐화해야 한다"
역할 모델(Role Modeling) : 객체지향 프로그래밍은 역할 모델이다

객체가 특정한 책임을 수행하기 위해 할당되는 개념

  • 여러 객체는 동일한 역할을 수행 할 수 있다.
  • 역할에 따라 다양한 객체가 할당될 수 있다.

유사한 특성과 동작을 가진 객체들을 추상화 하여 설계하는 방법론.

메시지 패싱(Message Passing) : 객체지향 프로그래밍은 메시지 전달이다
  • 객체간의 상호작용은 메시지를 통해 이루어져야 한다.
  • 객체는 다른 객체에게 메시지를 보내고, 해당 메시지에 대응하는 메서드를 실행하여 책임을 수행한다

메시지 패싱은 객체간의 느슨한 결합과 유연한 상호작용을 가능하게 한다

현실 세계 모델링(Modeling the Real World) : 현실 세계 객체들의 상호작용에 대한 모델을 만들어야 한다
  • 현실 세계의 객체들의 특성과 동작을 반영하여 설계 해야 한다

현실 세계에 존재하는 대상만이 객체가 될 수 있다는 의미는 아니다

다만, 현실의 개념을 도입하여 객체를 만들 때 그 객체는 반드시 현실 세계의 특성과 동작을 반영해야 한다는 의미이다

이를 통해 객체지향 프로그래밍은 현실 세계의 일부를 추상화 하여 유기적으로 협력하게 만들고, 이해하기 쉬운 모델로 표현할 수 있게 만든다.

기본 구성 요소

클래스(Class)
  • 문제 해결을 위한 객체의 명세이다
  • 상태와 행동을 정의 한다
  • 클래스는 다른 클래스 또는 외부 요소와 독립적이어야 한다
객체 (Object)
  • 객체의 명세(Class) 를 통해 만들어진 객체이다
  • 클래스에 정의한 상태와 행동을 가진다
메서드(Method), 메시지(Message)
  • 인터페이스 라고도 부른다. (자바의 인터페이스와는 조금 다른 맥락에서 설명되는 용어이다)
  • 객체를 사용하는 방법이다. 클래스는 객체의 사용법을 외부로 노출시키고 내부 상태는 숨김으로서 객체가 특정 역할만을 수행하게 제약 할 수 있다.