절차적 프로그래밍

원태연·2022년 1월 3일
0

절차적 프로그래밍

보통 어떤 기능을 수행하는 프로그램이라면, 데이터 흐름에 따라 개발하려고 하는것이 일반적일 것이다.

예를 들어, 고객이 돈을 넣고 상품을 선택하면 제품과 잔돈을 돌려주는 기능을 개발한다고 하자.

  1. 고객이 돈을 넣고
  2. 고객이 제품을 선택한다
  3. 자판기는 돈과 제품을 검사하고
  4. 자판기는 제품과 잔돈을 건네준다
  5. 고객은 제품과 잔돈을 받아간다.

위와 같은 순서로 프로그램을 설계할 수 있다.

main루틴 위와 같은 순서를 진행하면서 돈과 제품을 검사하고, 제품과 잔돈을 건네준다와 같은 기능을 수행하는 모듈(procedure)를 활용하여 진행 할 것이다.

이렇듯, 프로그램에 대해 순차적으로 진행하며 기능을 수행하는 '함수'를 통해 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법이 절차적 프로그래밍(procedural Programming)이다.

간단히 코드로 보면,

public class Main {
	static int cokeQuantity = 10;
  static int cokePrice = 500;
  
	public static void main(String[] args) {
    int userMoney = 1000;
    String userOrder = "coke";
    if (userOrder.equals("coke")) {
      if (cokeOrderPossible(userMoney)) {
        cokeQuantity -= 1;
        System.out.println("콜라 주문 완료!")
      } else {
        System.out.println("잔액이 부족합니다")
      }
    }
	
    //함수
    private static boolean cokeOrderPossible(int money) {
      if (money < cokePrice) {
        return false;
      }
      return true;
    }
}

이렇게 기능을 순차적으로 진행하며 필요한 기능을 수행하는 함수와 연결되어 프로그래밍이 되어있다.

이러한 프로그래밍 기법은 실행속도가 빠르다는 장점이 존재하지만, 유지 관리에 어려움이 존재하고, 실행 순서에 강력히 의존하고 있어 코드의 순서가 바뀌는 경우 치명적인 오류나 예상할 수 없는 결과가 발생할 수 있다는 단점도 존재한다.

이러한 프로그래밍기법은 소프트웨어의 규모가 커지고 복잡해지면서 이 복잡성을 절차적 프로그래밍으로 소화할 수 없어졌고, 대안으로 객체지향 프로그래밍이 탄생했다.
profile
앞으로 넘어지기

0개의 댓글