객체지향 프로그래밍이란?

funfungun·2025년 1월 29일
0
post-thumbnail

프로그래밍 관련 도서를 읽다보면 절차지향 프로그래밍 기법 혹은 객체지향 프로그래밍 기법과 관련된 단어를 흔히 접할 수 있었을 것입니다. 오늘은 절차지향 프로그래밍과 객체지향 프로그래밍의 차이에 대해 짚고 넘어가 보겠습니다.


  1. 프로그래밍 패러다임
    프로그래밍은 데이터를 처리하고 결과를 도출하기 위한 방법론에 따라 여러 가지 스타일로 나뉜다. 그중 대표적인 두 가지 방식이 절차지향 프로그래밍과 객체지향 프로그래밍이다.
  • 절차지향 프로그래밍 : 코드가 순차적으로 실행되며, 데이터를 함수의 매개변수로 전달하여 처리하는 방식.
  • 객체지향 프로그래밍 : 데이터와 함수를 하나의 객체로 묶어 재사용성을 높이고 유지보수를 쉽게 하는 방식.

  1. 절차지향 프로그래밍 (Procedural Programming)
    절차지향 프로그래밍은 프로그램의 흐름을 단계별로 실행하는 방식이다. 주로 함수와 변수로 프로그램을 구성하고, 데이터와 함수가 분리되어 있다.

    //절차지향 방식 in JavaScript
    
    let gasolineA = 20; // A 자동차의 가솔린
    let gasolineB = 30; // B 자동차의 가솔린
    
    function move(gas) {
        if (gas > 0) {
            console.log("자동차가 움직입니다.");
        } else {
            console.log("연료가 부족합니다.");
        }
    }
    
    move(gasolineA); // A 자동차 이동
    move(gasolineB); // B 자동차 이동

    절차지향 방식의 특징은 다음과 같다.

  • 순차적 실행 : 코드가 작성된 순서대로 실행된다.
  • 데이터와 함수의 분리 : 함수는 매개변수로 데이터를 받아 처리해야 한다.
  • 재사용성 문제 : 특정 데이터(예: 자동차 연료)를 관리하기 위해 추가적인 변수를 사용해야 한다.
  • 확장성 부족 : 새로운 기능 추가 시 기존 코드를 수정해야 할 가능성이 크다.

  1. 객체지향 프로그래밍 (Object-Oriented Programming) 이란?
    객체지향 프로그래밍은 데이터와 해당 데이터를 처리하는 함수를 하나의 객체로 묶어 캡슐화하는 방식이다. 이를 통해 데이터 보호, 코드의 재사용성 및 유지보수성을 높일 수 있다.

    // 객체지향 방식 in JavaScript
    
    class Car {
        constructor(gasoline) {
            this.gasoline = gasoline;
        }
    
        move() {
            if (this.gasoline > 0) {
                console.log("자동차가 움직입니다.");
            } else {
                console.log("연료가 부족합니다.");
            }
        }
    }
    
    let carA = new Car(20); // A 자동차 생성
    let carB = new Car(30); // B 자동차 생성
    
    carA.move(); // A 자동차 이동
    carB.move(); // B 자동차 이동

    객체지향 방식의 특징은 다음과 같다.

  • 데이터 캡슐화 : 데이터(여기서는 연료)는 객체 내부에 존재하여 외부에서 직접 수정할 수 없다.

  • 재사용성 증가 : Car 클래스를 사용하면 여러 자동차 객체를 쉽게 생성 가능하다.

  • 유지보수 용이 : 새로운 기능 추가 시 기존 코드를 수정할 필요 없이 클래스 내부에 새로운 메소드를 추가하면 된다.

  • 확장성 : 상속, 다형성 등의 개념을 활용하여 확장 가능하다.


  1. 절차지향 vs 객체지향
    절차지향과 객체지향 프래그래밍을 한눈에 표로 비교해보면 다음과 같다.

    항목절차지향 프로그래밍객체지향 프로그래밍
    코드 구조순차적으로 실행되는 함수와 변수로 구성데이터와 함수를 하나의 객체로 묶음
    데이터 관리데이터와 코드가 분리됨데이터와 코드가 객체 내에 존재
    재사용성함수 단위로 재사용 가능하지만 데이터 전달이 필요클래스 및 객체 단위로 재사용 가능
    유지보수코드 수정이 어렵고, 새로운 기능 추가 시 기존 코드 변경 가능성 큼캡슐화와 상속을 활용하여 유지보수 용이

  2. 객체지향 프로그래밍이 널리 사용되는 이유
    객체지향 프로그래밍은 대규모 소프트웨어 개발에서 특히 유리한 방식이다.

  • 코드 재사용성 증가 : 클래스와 객체를 활용하여 중복 코드를 줄일 수 있다.
  • 데이터 보호 : 캡슐화를 통해 데이터를 외부로부터 보호할 수 있다.
  • 유지보수 용이 : 기존 코드를 수정하지 않고 새로운 기능을 쉽게 추가할 수 있다.
  • 대규모 프로젝트에서 유리 : 객체 단위로 코드를 나누어 개발이 가능하여 협업에 용이하다.

지금까지 절차지향 프로그래밍과 객체지향 프로그래밍을 살펴보며 개념에 대해 알아보았습니다. 절차지향 프로그래밍은 작은 프로그램이나 간단한 기능을 빠르게 개발하는 데 적합하다면, 객체지향 프로그래밍은 대규모 프로젝트에서 유지보수성과 확장성이 뛰어난 방식이라고 볼 수 있습니다. 객체지향의 대표적인 언어인 Java와 JavaScript 에서도 객체지향 프로그래밍을 활용해 효율적인 코드를 작성할 수 있어, 현실 세계의 개념을 프로그램에 자연스럽게 반영할 수 있겠습니다.

profile
Commercial Art

0개의 댓글