새소식

일상

[틈새 독서] 클린 아키텍처 - 객체 지향 프로그래밍

  • -

객체 지향 프로그래밍

캡슐화

  • 객체 지향 프로그래밍에서는 클래스를 통해 데이터와 함수를 효과적으로 응집시킨다.
  • 이런 데이터와 함수에 정보 공개 여부에 대한 은닉성을 띠기 때문에 보다 효과적으로 캡슐화할 수 있다.

상속

  • 기존 C에서는 구조체가 힙영역에서 직렬화되면 선언 순서에 따라 같은 데이터를 가르킬 수 있다는 점을 이용해 상속과 비슷한 기능을 하도록 구현했다.
  • C++에서는 이 부분을 이용해 보다 쉽게 사용자가 상위 개념의 데이터를 참조하고, 사용할 수 있도록 상속이라는 개념을 제시했다.

다형성

  • C에서 우리가 자주 사용하는 함수 포인터 개념을 객체 단위로 옮긴 것이다. (물론 생성자에서 vtable을 파생 클래스의 함수로 덮는 수고스러움을 덜어줘서 너무나도 고맙다.)

의존성 역전

  • 사실상 이 의존성 역전이 OO의 메인 디쉬나 다름 없다.
  • 기존 C에서는 main으로부터 시작해 제어흐름은 항상 한 방향으로만 흐르게 된다.
  • 반면 OO에서 다형성이 끼어들며 무언가 독특한 작업을 손쉽게 할 수 있게 됐다. 그것이 바로 의존성 역전, 흐름의 반전이다.
  • 이를 이용하면 서로 완전 독립된 모듈간의 소통을 인터페이스로 할 수 있고 이를 통해 각 모듈간 의존성을 보장할 수 있다.
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.