객체 지향이란...?

‍서지오·2022년 7월 22일
0

스프링

목록 보기
1/4
post-thumbnail

인프런 김영한님의 스프링 핵심원리 강의를 듣고 정리한 글입니다.
인프런 스프링 핵심원리

객체 지향 프로그래밍

객체 지향 프로그래밍이란 컴퓨터 프로그램을 독립된 단위인 객체들의 모임이라 접근하는 프로그래밍 방식으로 쉽게 말해 여러 레고 조각으로 하나의 완성품을 만들듯이 프로그래밍 하는 방법을 의미한다.

앞서 얘기한 레고 블럭 조립하듯이, 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법을 다형성이라고 부른다.

그래서 다형성 그게 정확히 먼데요?🤔

강의를 듣다 보면 영한님께서 역할구현이라는 말을 반복적으로 한다는 걸 느낄 수 있다.

반복하는 건 자연스럽게 중요한 것이라는 생각으로 이어지므로 잊을만 하면 등장하는 역할은 무엇이고 구현은 또 무엇인지 알아보자.

다형성실세계비유

다형성을 실세계에 비유한 위 이미지를 살펴보면 자동차 역할과 자동차구현(K3, 아반떼...)이 분리되어 있는 걸 볼 수 있다.

그렇다면 이렇게 분리한 이유는 뭘까?

이 모든 건 운전자를 위함이다!!

운전자는 자동차의 역할, 즉 자동차를 운전하는 법만 안다면 K3를 타던, 아반떼를 타던 모두 운전할 수 있게 된다.

자동차들이 내부적으로 변경되어도 운전자에게 영향을 주지 않으므로 자동차 회사들은 자동차의 역할만 지킨다면 새로운 기능을 마음껏 제공할 수 있다.

정리

  • 클라이언트는 대상의 역할만 알면된다.
  • 클라이언트(운전자)가 자동차(구현체)의 내부 구조를 몰라도 된다.
  • 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
  • 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.

다형성 in Java

  • 역할 = 인터페이스
  • 구현 = 인터페이스를 구현한 클래스, 구현 객체
  • 역할과 구현을 분리한 후 역할을 먼저 설계
  • 자바의 오버라이딩이 다형성의 실제 활용 예이다.
  • 객체의 협력이라는 관계를 고려하자
profile
백엔드 개발자를 꿈꾸는 학생입니다!

0개의 댓글