절차적 프로그래밍과 구조적 프로그래밍의 차이는?
절차적 프로그래밍(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)에서 관리됨
- 코드의 재사용성과 유지보수성이 향상됨
- 객체 간의 관계를 이용할 수 있어 확장성 있음
▶️ 확장성, 재사용성, 유지보수성이 필요한 경우 적합
'Development > CS' 카테고리의 다른 글
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 3장. 자바와 객체지향(다형성, 캡슐화) (1) | 2025.03.07 |
---|---|
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 3장. 자바와 객체지향(추상화, 상속) (1) | 2025.02.27 |
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 2장. 자바와 절차적/ 구조적 프로그래밍 (0) | 2025.02.12 |
[자료구조] 트라이(Trie) (0) | 2025.02.08 |
[면접을 위한 CS 전공 지식 노트] 5장. 자료구조 (0) | 2025.01.29 |