DevGang

절차 지향 본문

Study/정리

절차 지향

별천랑 2021. 4. 2. 16:33

절차 지향(Procedural oriented) 프로그래밍 이란? 

절차 지향 프로그래밍은 단순히 순서대로 명령을 수행하는 것을 의미하는 것이 아닌 프로시저 호출의 개념을 바탕으로 하는 구조적 프로그래밍의 일종이다. 영문 표기 "Procedural Programming"을 한국어로 번역하면 "절차" 혹은 "절차적"이 되기 때문에 "절차"를 사전적 의미 그대로 해석해서 순차적 프로그래밍 또는 함수형 프로그래밍과 유사하거나 같은 부류에 속하는 것으로 오해하기 쉬우나, 여기서 말하는 "절차"는 프로시저 혹은 함수로 해석해야 한다. 절차적 프로그래밍은 명령형, 구조적 프로그래밍의 일종으로 프로시저 콜이라는 함수 호출을 통해 추상화와 재사용성을 얻어내는 것에 초점을 맞추고 있기 때문에 선언형, 비구조적 프로그래밍과 비교해 데이터 처리에 대한 모듈화와 구조화할 수 있다는 차이가 있다. 추가로 객체지향 프로그래밍(Object Oriented Programming)이 인기를 얻으면서 상대되는 개념으로 "절차적 프로그래밍"이 자주 거론되다 보니 "절차 지향 프로그래밍"으로 표현하기도 하는데, 공식적으론 "절차 지향"이 아닌 절차적 프로그래밍으로 부르는 것이 옳은 표현이다. 포트란, C 언어 등이 대표적인 절차 지향 프로그래밍 언어에 속한다.

절차 지향 언어 C(출처)

절차 지향 프로그래밍의 특징

  1. 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 방식으로 설계된다.
  2. 비교적 작은 규모의 작업을 수행하는 함수(function)를 생성한다.
  3. 인수(parameter)와 반환 값(value)으로 명령을 전달하고 수행한다.
  4. 객체지향 프로그래밍과의 가장 큰 차이점으로 데이터와 함수를 별개로 취급한다.
  5. 특정 기능을 수행하려면 그 일을 해주는 메서드를 직접 호출해야 한다. (vs 객체지향 프로그래밍에서는 특정 기능을 수행하는 메서드를 가진 객체를 만들어서, 그 인스턴스를 이용해 메서드를 호출한다.)

도형 그리기 예제

  1. 기능 위주 프로그래밍 도형 그리기 함수
    • void drawLine(Position, Color);
    • void drawCircle(Position, Color);
    • void drawRectangle(Position, Color);
    • 위에 정의된 함수에 위치와 색상 인수를 전달해 원하는 도형 그리기를 실행
  2. 객체 지향 프로그래밍에서의 객체 선언
    • "Shape" 인터페이스(interface) 선언
      • 속성 : Position, Color, Width, Style...
      • 메서드 : draw(); move();...
    • "Shape" 인터페이스를 상속받은 "Line", "Circle", "Rectangle" 클래스 구현
    • 객체화된 인스턴스의 draw() 메서드를 호출해 각 인스턴스의 도형 그리기를 수행

절차 지향 프로그래밍의 단점

  1. 유지보수가 어렵다.
  2. 정해진 순서대로 입력을 해야 되므로 순서가 바뀌면 결괏값을 도출하기 어렵다.
  3. 프로그램을 분석하기 어렵다.
  4. 대형 프로젝트에는 부적합하다.

객체지향과 절차 지향의 차이점

객체지향 프로그래밍과 절차 지향 프로그래밍이 일부 대조적인 특징을 가지고 있기 때문에 많은 사람들이 객체지향의 반대 개념은 절차 지향이라고 오해하고 있다. 위에서 설명한 바와 같이 절차 지향은 데이터를 중심으로 순차적 실행에 초점을 맞추고 코드를 작성한다. 그렇다고 객체지향은 순차적으로 실행되는 것이 아니라고 할 수 없다. 객체지향 프로그래밍도 절차 지향 프로그래밍과 같이 절차적으로 실행되나 객체 간의 관계에 초점을 두고 코드를 작성한다. 아래 그림을 보면 절차 지향 프로그래밍은 데이터를 중심으로 함수를 구현한다. 돈을 지불하는 절차, 계산하는 절차, 제품을 받는 절차를 중점으로 함수가 구성되었다. 반면 객체지향 프로그래밍에서는 프로세스의 주요 행위자인 고객과 자판기를 객체로 설정하고 돈과 제품에 대한 관계에 따라 함수를 작성한다. 절차라는 단어 때문에 단순히 절차 지향 프로그래밍이 순차적으로 진행되는 것은 아니라는 점을 유의해야 한다. 각각의 프로그래밍 방식이 순서를 중요시하는지, 객체를 중요하는지에 따라 구분한다고 생각하면 개념을 이해하는데 도움이 될 것 같다.

출처
절차 지향과 객체지향
人CoDOM(링크)

'Study > 정리' 카테고리의 다른 글

RAID  (0) 2021.04.11
데이터 구조  (0) 2021.04.07
시간 복잡도  (0) 2021.04.02
컴포넌트, 모듈, 프로시저  (0) 2021.04.02
[IntelliJ] Spring Framework Tomcat 설정하기  (0) 2021.03.08
Comments