Home > 2024 > Java > ☕️[Java] 객체 지향 프로그래밍 vs 절차 지향 프로그래밍

☕️[Java] 객체 지향 프로그래밍 vs 절차 지향 프로그래밍
Java Programming Language

객체 지향 프로그래밍 vs 절차 지향 프로그래밍

  • 객체 지향 프로그래밍과 절차 지향 프로그래밍은 서로 대치되는 개념이 아닙니다.
    • 객체 지향이라도 프로그램의 작동 순서는 중요합니다.
      • 다만 어디에 더 초점을 맞추는가에 둘의 차이가 있습니다.
  • 객체 지향의 경우 객체의 설계와 관계를 중시합니다.
    • 반면 절차 지향의 경우 데이터와 기능이 분리되어 있고, 프로그램이 어떻게 작동하는지 그 순서에 초점을 맞춥니다.

절차 지향 프로그래밍

  • 절차 지향 프로그래밍은 이름 그대로 절차를 지향합니다.
    • 쉽게 이야기해서 실행 순서를 중요하게 생각하는 방식입니다.
  • 절차 지향 프로그래밍은 프로그램의 흐름을 순차적으로 따르며 처리하는 방식입니다.
    • 즉, “어떻게”를 중심으로 프로그래밍 합니다.

객체 지향 프로그래밍

  • 객체 지향 프로그래밍은 이름 그대로 객체를 지향합니다.
    • 쉽게 이야기해서 객체를 중요하게 생각하는 방식입니다.
  • 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객제들 간의 상호작용을 중심으로 프로그래밍하는 방식입니다.
    • 즉 “무엇을” 중심으로 프로그래밍 합니다.

둘의 중요한 차이

  • 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있습니다.
    • 반면 객체 지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하나의 ‘객체’ 안에 함께 포함되어 있습니다.

객체란?

  • 세상의 모든 사물을 단순하게 추상화해보면 속성(데이터)과 기능(메서드) 딱 2가지로 설명할 수 있습니다.

자동차

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

동물

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

게임 캐릭터

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

“객체 지향 프로그래밍은 모든 사물을 속성과 기능을 가진 객체로 생각하는 것 입니다.”

  • 객체에는 속성과 기능만 존재합니다.
    • 이렇게 단순화하면 세상에 있는 객체들을 컴퓨터 프로그램으로 쉽게 설계할 수 있습니다.
      • 이런 장점들 덕분에 지금은 객체 지향 프로그래밍이 가장 많이 사용됩니다.

        참고로 실세계와 객체가 항상 1:1로 매칭되는 것은 아닙니다.

객체 지향의 특징은 속성과 기능을 하나로 묶는 것 뿐만 아니라 캡슐화, 상속, 다형성, 추상화, 메시지 전달 같은 다양한 특징들이 있습니다.