Java 객체 지향 프로그래밍 - 정리

객체지향과 절차지향은 프로그래밍 방식이 다르다.

절차 지향과 객체 지향의 공통된 관심사는 프로그램 작동 순서가 중요하게 여긴다. 다만 무엇을 중점적으로 초점을 맞추는지 다를 뿐이다. 객체 지향은 설계와 관계를 중시하고, 절차 지향은 데이터와 기능을 분리된 채 어떻게 구현할지 다르다.

절차 지향 프로그래밍

  • 절차를 지향한다. 그리고 실행 순서를 중요하게 여긴다.
  • 프로그램 순차적으로 처리하는 방식.

객체 지향 프로그래밍

  • 객체를 지향한다. 객체, 사물 위주로 바라본다.
  • 사물이나 사건을 보고 객체로 판단하여 객체들 간의 상호작용 중심으로 개발한다. 무엇을 보고 사물이 갖고 있는 속성과 속성에 따른 행동을 바라본다.

절차와 객체의 차이점

  • 데이터와 기능 구현 방법이 다르다. 절차는 데이터와 기능 구현이 분리되어 있고, 객체는 객체 안에 데이터(속성)와 기능(행동)이 포함되어있다.

데이터/기능 예시

사물을 단순하게 추상화하면 속성과 기능 두 가지로 분류된다.

자동차

  • 속성: 색상, 속도
  • 기능: 엑셀, 브레이크, 문 열기, 문닫기

동물

  • 속성: 색상, 키, 온도
  • 기능: 먹기, 걷기

게임 캐릭터

  • 속성: 레벨, 경험치, 아이템
  • 기능: 이동, 공격, 아이템 획득

속성과 기능을 갖고 단순화하여 객체들을 프로그래밍으로 쉽게 설계할 수 있다.
이러한 장점 때문에 객체 지향 프로그래밍을 선호하고 있다.

그리고 객체지향 장점으로 캡슐화, 상속, 다형성, 추상화, 메시지 전달 할 수 있는 특징이 있다.