Computer Science

절차지향 객체지향 차이와 이해

쟤리 2024. 10. 12. 19:42
728x90
반응형

1. 절차지향 프로그래밍 (Procedural Programming)

개념

  • 절차지향 프로그래밍은 순차적 흐름에 따라 작업을 처리하는 방식.
  • 프로그램은 여러 함수와 절차(procedure)로 구성되며, 데이터와 함수가 분리되어 있음.

특징

  • 함수 단위로 프로그램을 나누어 코드를 재사용할 수 있음.
  • 코드는 순서대로 실행되며, 명령문들이 선형적인 흐름을 따름.
  • 복잡한 프로그램에서는 함수 간 데이터 전달이 많아지고 코드가 복잡해질 수 있음.

장점

  • 비교적 간단한 프로그램에 적합하며 학습하기 쉬움.
  • 특정 작업을 수행하는 함수의 모듈화가 가능함.

단점

  • 코드가 커질수록 유지보수와 확장에 어려움이 있음.
  • 데이터와 함수가 분리되어 있어 데이터 관리가 복잡해질 수 있음.
  • 같은 데이터를 처리하는 함수가 여러 곳에 존재하면 중복 코드가 발생할 수 있음.

2. 객체지향 프로그래밍 (Object-Oriented Programming, OOP)

개념

  • 객체지향 프로그래밍은 프로그램을 객체 단위로 나누어 관리하는 방식.
  • 객체는 **데이터(속성)**와 **메서드(함수)**를 함께 가지며, 서로 협력하여 기능을 수행함.
  • 객체는 현실 세계의 개념을 프로그래밍에 반영하는 추상화의 도구로 활용됨.

특징

  • 캡슐화 (Encapsulation): 데이터와 메서드를 객체 안에 숨기고 외부에서는 필요한 인터페이스만 노출.
  • 상속 (Inheritance): 기존 클래스의 기능을 확장하거나 재사용 가능.
  • 다형성 (Polymorphism): 같은 메서드 이름을 다양한 객체에서 다르게 동작하도록 구현.
  • 추상화 (Abstraction): 복잡한 내부 구현을 숨기고 중요한 부분만 표현.

장점

  • 코드의 재사용성이 높고 유지보수가 쉬움.
  • 프로그램의 구조가 명확하고 확장에 용이함.
  • 현실 세계의 개념을 프로그램에 반영할 수 있어 이해하기 직관적임.

단점

  • 객체 설계가 복잡할 수 있으며, 초기 개발 비용이 많이 듬.
  • 작은 프로그램에는 과잉 설계가 될 수 있음.

비교항목 절차지향 객체지향
구조 함수와 데이터가 분리 데이터와 메서드가 객체로 캡슐화
코드 재사용성 제한적 상속과 다형성을 통해 재사용 가능
유지보수 복잡한 코드 유지보수 어려움 유지보수와 확장이 용이
아요 사례 작은 프로그램, 스크립트 대규모 애플리케이션, 게임, 웹 애플리케이션
확장성 새로운 기능 추가 어려움 객체와 클래스 확장으로 유연

 

728x90
반응형