콘텐츠로 건너뛰기

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

프로그래밍에는 다양한 패러다임이 존재한다.
그 중 순차적 프로그래밍, 절차적 프로그래밍, 객체지향 프로그래밍은 가장 기본적이고 널리 사용되는 방식들이다.
그러나 ‘객체지향 프로그래밍(OOP)은 알겠는데, 순차적 프로그래밍과 절차적 프로그래밍 같은 거 아니야?’라고 생각하는 친구가 있어 이 세 가지 프로그래밍 패러다임의 특징과 차이점을 비교하는 글을 쓰게 되었다.

일단, 각 프로그래밍 패러다임에 대해서 간략히 설명하겠다.

1. 순차적 프로그래밍

특징

  • 코드가 작성된 순서대로 실행되는 가장 단순한 형태의 프로그래밍.
  • 모든 명령어가 하나의 흐름으로 구성되어 있어 구조화되지 않음.
  • 소규모 프로그램에 적합하지만, 확장성과 유지보수성이 부족.

예제 (C)

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int sum = a + b;
    printf("합계: %d\n", sum);
    return 0;
}

2. 절차적 프로그래밍

특징

  • 함수를 활용하여 코드를 구조화하고 모듈화하는 방식.
  • 코드의 재사용성이 높아지고, 유지보수가 용이함.
  • 조건문, 반복문 등을 통해 프로그램 흐름을 제어할 수 있어 대규모 프로그램 개발에 적합.

예제 (C)

#include <stdio.h>

// 함수 정의
int add(int x, int y) {
    return x + y;
}

int main() {
    int a = 10;
    int b = 20;
    printf("합계: %d\n", add(a, b));
    return 0;
}

3. 객체지향 프로그래밍 (OOP)

특징

  • 데이터와 메서드를 하나의 객체로 묶어 관리하는 방식.
  • 클래스와 객체를 중심으로 설계하며, 상속, 캡슐화, 다형성 같은 개념을 활용.
  • 복잡한 시스템을 설계하고 확장하는 데 매우 적합.

예제 (Python)

class Calculator:
    def add(self, x, y):
        return x + y

calc = Calculator()
print(f"합계: {calc.add(10, 20)}")

4. 세 가지 패러다임 비교

특징순차적 프로그래밍절차적 프로그래밍객체지향 프로그래밍
구조화 수준비구조적함수 중심으로 구조화클래스와 객체 중심으로 고도로 구조화
재사용성낮음함수로 인해 재사용 가능상속과 다형성을 통해 높은 재사용성
확장성부족대규모 프로그램에 적합매우 높은 확장성
유지보수성어렵고 비효율적특정 함수만 수정 가능캡슐화를 통해 유지보수 용이
데이터 관리데이터와 코드가 혼재데이터와 코드 분리데이터와 메서드가 객체 내부에 캡슐화
예제 언어초기 언어 (어셈블리어 등)C, Python 등Java, Python, C++ 등

결론

  • 순차적 프로그래밍: 가장 단순한 형태로 소규모 프로그램에 적합하지만, 확장성과 유지보수성이 부족하다.
  • 절차적 프로그래밍: 함수를 활용해 구조화된 코드를 작성하며 대규모 프로그램 개발에도 적합하다.
  • 객체지향 프로그래밍(OOP): 데이터를 객체로 묶고 상속, 다형성 등을 활용하여 복잡한 시스템을 효율적으로 설계할 수 있다.

각 패러다임은 목적과 상황에 따라 선택적으로 사용해야 한다.
요즘 개발 트렌드로 객체지향 프로그래밍이 가장 널리 사용되고 있다는 점만 참고하자.

0 를 눌러주세요! 행복해져요!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다