Skip to Content
Suffering builds character
아카이브10.Java특징프로그래밍 패러다임3. 명령형 - 절차 지향 프로그래밍

3. 명령형 - 절차 지향 프로그래밍

절차 지향 방식의 특징은 함수를 통해 코드를 논리적인 단위로 구분하고 분할해서 정복해나가자는 것으로, 함수를 중심으로 프로그램을 설계하여 코드를 작성함

절차 지향 방식으로 작성하는 대표적인 프로그래밍 언어는 C (인간이 이해하기 쉬운 자연어 기준)

1. 주문/결제 프로그램 설계 시나리오

실제 점원이 수행하던 주문/결제 방식을 프로그램을 통해 자동화하기 위해 작성한 시퀀스 다이어그램 예시

C로 작성한 주문/결제를 수행하는 프로그램 코드

main.c
#include <stdio.h> // 메뉴 선택 함수 int menuSelection() { int menu; printf("메뉴를 선택하세요 (1. 김밥 - 3000원, 2. 라면 - 4000원): "); scanf("%d", &menu); return menu; } // 비용 계산 함수 int calculatePrice(int menu) { if (menu == 1) return 3000; else if (menu == 2) return 4000; else return 0; } // 주문 처리 함수 void takeOrder(int* selectedMenu, int* totalPrice) { *selectedMenu = menuSelection(); *totalPrice = calculatePrice(*selectedMenu); if (*totalPrice == 0) { printf("잘못된 메뉴입니다.\n"); } else { printf("주문 완료. 총 금액은 %d원입니다.\n", *totalPrice); } } // 결제 처리 함수 void processPayment(int price) { int paid; printf("결제 금액을 입력하세요: "); scanf("%d", &paid); if (paid >= price) { printf("결제가 완료되었습니다. 거스름돈: %d\n", paid - price); } else { printf("결제 실패: 금액이 부족합니다.\n"); } } // 프로그램 진입점 int main() { int selectedMenu = 0; int totalPrice = 0; // 함수를 순차적으로 호출 takeOrder(&selectedMenu, &totalPrice); if (totalPrice > 0) { processPayment(totalPrice); } return 0; }

1-1. 절차 지향 방식의 특징

절차 지향 방식을 적용할만한 시나리오는 다음과 같음

  1. 임베디드 시스템과 같이 요구사항이 명확하고, 요구사항이 변경될 가능성이 적은 경우,
  2. 특정한 기능을 수행하는 작은 독립적 모듈이 많고, 굳이 객체 간의 복잡한 상호작용이 필요 없는 경우,

ex. 센서에서 온도 값을 읽고, 특정 임계값을 넘으면 모터를 켜는 작업
온도 센서는 센서일 뿐, 다른 객체와 복잡하게 메시지를 주고받을 필요가 없음 단순히 readTemperature()와 같은 함수 하나로 충분할 수 있음

1-2. 절차 지향 방식의 단점

우리가 살고 있는 현실 세계는 수많은 사람들과 다양한 물건들,
심지어 감정과 같은 추상적인 개념과 물 분자와 같이 육안으로는 보이지 않는 개념들로 구성되어 있음

또한 이러한 모든 것들은 상호작용을 하며 서로 협력하여 동작함

그 과정 속에서 우리가 작성한 프로그램은 자동화(Automation)라는 핵심 특성을 통해 사람들에게 보다 윤택한 삶을 제공할 수 있음

과거에 비해 현실의 비즈니스 요구사항은 폭발적으로 증가하고 지속적으로 변화하며, 그에 따라 이해 관계가 상당히 복잡하게 얽혀있음

택시를 탑승하는 시나리오

이전 - 택시 호출 프로그램(이 있었다고 가정)
가고 싶은 목적지, 출발 일정 등을 선택 후 전송하면 해당 시간에 택시가 도착

승객과 택시 기사는 예약 과정 중간에 소통을 하거나 메시지를 주고받는 기능을 제공하지 않음

최근 - 카카오 택시
가고 싶은 목적지, 목적지에 도달하는 네비게이션 루트, 희망하는 차량 종류, 기사님과 메시지나 전화를 통해 대화를 주고받을 수 있어야 하는 등
기사님과 승객 간의 다양한 상호작용이 필요

이처럼 사용자 대상의 비즈니스에 있어서 택시 호출 프로그램과 같이 단순한 규모의 프로그램은 C 언어로 작성해도 괜찮을 수 있지만,

카카오 택시와 같이 택시 기사와 승객이 서로 협력하여 동작해야 하는 수많은 비즈니스 요구사항들을 C 언어로 구현하는 것은 코드의 가독성과 유지보수성에서 한계에 직면할 수 있음

Last updated on