Development/CS

[JAVA - 면접 대비] 자바와 절차적/구조적 프로그래밍

lovetan 2025. 2. 14. 23:41

절차적 프로그래밍과 구조적 프로그래밍의 차이는?

절차적 프로그래밍(Procedural Programming)

  • 프로그램을 순차적인 절차(순서)에 따라 작성하는 프로그래밍 방식
  • 함수(메서드)를 사용하여 코드의 재사용성을 높이지만, 데이터와 함수를 분리하여 관리
  • 대표적인 언어: C, Pascal

구조적 프로그래밍(Structured Programming)

  • 절차적 프로그래밍의 한 종류로, 프로그램을 순차(Sequence), 선택(Selection), 반복(Iteration)의 구조로 구성하여 흐름을 명확하게 하는 방법
  • 절차적 프로그래밍보다 더 명확한 제어 흐름과 모듈화를 강조함.
  • Goto 문을 사용하지 않고, 함수와 제어문을 활용하여 프로그램을 모듈화
  • 대표적인 언어: C, Java, Python 등

 

자바는 절차적 프로그래밍과 객체지향 프로그래밍 중 어떤 패러다임을 따를까?

자바는 객체지향 프로그래밍(OOP)을 기반으로 하지만, 절차적 스타일의 코드도 작성할 수 있는 멀티 패러다임 언어다.

 

객체지향 프로그래밍 특징

  • 모든 데이터와 기능을 클래스와 객체로 묶어 관리
  • 캡슐화, 상속, 다형성, 추상화 등의 개념을 활용하여 유지보수성을 향상

절차적 프로그래밍 요소

  • static 메서드를 사용하면 객체를 생성하지 않고도 실행 가능 (ex. Math.sqrt(), System.out.println())
  • 단순한 스크립트 형태의 코드 작성 가능 (ex. Java에서 main 메서드 내부에 절차적 코드 작성)

 

두 방식의 코드 차이

절차적 프로그래밍의 예시

public class ProceduralExample {
    public static void main(String[] args) {
        int width = 10;
        int height = 5;
        int area = calculateArea(width, height);
        System.out.println("면적: " + area);
    }

    public static int calculateArea(int w, int h) {
        return w * h;
    }
}

 

  • 데이터(width, height)와 함수(calculateArea)가 분리되어 있음
  • 단순히 절차적으로 코드가 실행됨

▶️ 단순한 연산이나 절차적 실행이 필요한 경우 적합

객체지향 프로그래밍 예시

class Rectangle {
    int width;
    int height;

    Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }

    int calculateArea() {
        return width * height;
    }
}

public class OOPExample {
    public static void main(String[] args) {
        Rectangle rect = new Rectangle(10, 5);
        System.out.println("면적: " + rect.calculateArea());
    }
}
  • 데이터와 동작(method)이 한 곳(class)에서 관리됨
  • 코드의 재사용성과 유지보수성이 향상됨
  • 객체 간의 관계를 이용할 수 있어 확장성 있음

▶️ 확장성, 재사용성, 유지보수성이 필요한 경우 적합