본문 바로가기
IT/파이썬 기초 (Python)

#031 파이썬 기초 - 절차지향(Procedural) vs 객체지향(Object-Oriented)

by DoitSQL 2023. 3. 14.
728x90

Python기초강의강좌, 파이썬기초강의강좌, 객체지향프로그래밍

#031 파이썬 기초 - 절차지향(Procedural) vs 객체지향(Object-Oriented)

지금까지 프로그램을 작성할 때, 우리는 데이터를 다루는 명령들의 블록인 함수들의 조합으로 프로그램을 구성하였습니다. 이러한 설계 방식을 절차 지향 프로그래밍 기법이라고 부릅니다. 이와 달리 데이터와 기능을 객체라고 불리는 것으로 묶어서 프로그램을 구성하는 또 다른 기법이 있습니다. 이것을 객체 지향 프로그래밍 기법이라고 부릅니다. 아마도 여러분의 대부분의 시간 동안 절차 지향 프로그래밍 기법을 통해 프로그램을 작성하게 되겠지만, 큰 프로그램을 작성할 때나 이 기법을 이용하는 것이 더 편리한 문제를 해결해야 할 경우 객체 지향 프로그래밍 기법을 활용할 수 있습니다.

 

절차적 프로그래밍과 객체 지향 프로그래밍은 문제 해결에 대한 접근 방식이 다른 널리 사용되는 두 가지 프로그래밍 패러다임입니다. 이에 각 패러다임의 차이점과 장점, 단점을 자세히 알아봅니다.


절차지향 프로그래밍(procedural programming)

절차적 프로그래밍(procedural programming)은 문제를 해결하기 위한 선형적이고 단계적인 접근법을 따르는 프로그래밍 패러다임이다. 주로 데이터를 조작하는 절차나 기능을 정의하고, 원하는 결과를 얻기 위해 특정 순서로 이러한 절차를 실행하는 것에 초점을 맞추고 있다.

 

절차적 프로그래밍의 프로그램은 입력 매개 변수를 받아들이고 출력 값을 반환하는 함수를 중심으로 구성됩니다. 절차적 프로그래밍은 루프와 조건문과 같은 제어 구조를 사용하여 실행 흐름을 관리하는 것을 강조하는 구조적 프로그래밍의 개념에 기반한다.

 

장단점   

절차적 프로그래밍의 장점 중 하나는 이해와 구현이 간단하다는 것이다. 이 프로그래밍 패러다임은 배우기 쉽고 객체 지향 개념에 대한 깊은 이해가 필요하지 않다.

더욱이, 절차적 프로그래밍은 객체를 생성하고 복잡한 데이터 구조를 관리하는 오버헤드를 피하기 때문에 중소 프로그램에 대한 객체 지향 프로그래밍보다 더 빠르고 효율적일 수 있다.

그러나 절차적 프로그래밍은 특히 크고 복잡한 소프트웨어 시스템의 경우 확장성과 유지보수성에 한계가 있다.


객체지향 프로그래밍(Object-Oriented programming)

객체 지향 프로그래밍은 데이터와 행동을 캡슐화하는 클래스의 인스턴스인 객체의 개념을 기반으로 하는 프로그래밍 패러다임이다.

객체 지향 프로그래밍의 초점은 객체를 조작하는 절차나 기능보다는 객체 자체에 있다. 객체 지향 프로그래밍의 프로그램은 메시지를 보내 서로 통신하는 객체를 중심으로 구성된다.

객체 지향 프로그래밍은 데이터와 행동을 캡슐화하기 위해 클래스와 객체를 사용하고, 코드 재사용을 용이하게 하기 위해 상속과 다형성을 강조한다.

 

장단점

객체 지향 프로그래밍의 장점 중 하나는 코드 재사용과 모듈화를 촉진하여 소프트웨어 시스템을 더 쉽게 유지하고 확장할 수 있다는 것이다.

객체 지향 프로그래밍은 또한 데이터의 더 나은 추상화와 캡슐화를 가능하게 하여 복잡한 데이터 구조를 더 쉽게 관리하고 수정할 수 있게 한다.

또한 객체 지향 프로그래밍은 개발자가 소프트웨어 시스템의 다른 부분에서 동시에 작업할 수 있도록 함으로써 협업과 팀워크를 촉진한다.

 

그러나 객체 지향 프로그래밍은 절차적 프로그래밍보다 더 복잡할 수 있으며 더 가파른 학습 곡선을 요구할 수 있다.

객체 지향 프로그래밍은 객체를 만들고 관리하는 오버헤드로 인해 중소 프로그램의 경우 절차적 프로그래밍보다 느리고 효율성이 떨어질 수 있다.

마지막으로, 객체 지향 프로그래밍은 올바르게 사용되지 않을 경우 코드 중복과 복잡성 증가를 초래할 수 있다.


 두 패러다임의 차이

 

다음은 절차 지향 프로그래밍과 객체 지향 프로그래밍의 차이를 요약한 표입니다.

  절차 지향 프로그래밍 객체 지향 프로그래밍
초점 절차/함수 객체
데이터 관리 간단한 데이터 구조 복잡한 데이터 구조
코드 구성 상향식 접근법 하향식 접근법
코드 재사용 제한적 클래스를 통한 재사용 가능
학습 곡선 쉬움 높음
확장성 제한적 높음
효율성 작은 프로그램에 빠름 작은 프로그램에 느림
소프트웨어 디자인 구조적 프로그래밍 모듈화 프로그래밍
인기있는 언어 C, Fortran Java, C++, Python

또한, 두 프로그래밍 패러다임 간의 차이점은 항상 명확하게 구분되는 것은 아니며, 일부 프로그래밍 언어는 두 패러다임의 요소를 모두 포함할 수 있습니다. 또한, 프로그래밍 패러다임의 선택은 종종 해당 프로젝트의 특정 요구사항에 따라 달라집니다.


결론

결론적으로 절차적 프로그래밍과 객체 지향 프로그래밍은 모두 장단점이 있으며, 프로그래밍 패러다임의 선택은 해결되는 문제의 성격과 크기에 따라 달라진다.

절차적 프로그래밍은 중소 프로그램에 더 간단하고 효율적인 반면 객체 지향 프로그래밍은 더 크고 복잡한 소프트웨어 시스템에 더 확장 가능하고 유지보수 가능하다.

개발자는 프로그래밍 패러다임을 모두 이해하고 자신의 요구에 가장 적합한 것을 선택하는 것이 중요하다.


감사합니다.

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

728x90

댓글