728x90
반응형
1. 절차지향 프로그래밍 (Procedural Programming)
개념
- 절차지향 프로그래밍은 순차적 흐름에 따라 작업을 처리하는 방식.
- 프로그램은 여러 함수와 절차(procedure)로 구성되며, 데이터와 함수가 분리되어 있음.
특징
- 함수 단위로 프로그램을 나누어 코드를 재사용할 수 있음.
- 코드는 순서대로 실행되며, 명령문들이 선형적인 흐름을 따름.
- 복잡한 프로그램에서는 함수 간 데이터 전달이 많아지고 코드가 복잡해질 수 있음.
장점
- 비교적 간단한 프로그램에 적합하며 학습하기 쉬움.
- 특정 작업을 수행하는 함수의 모듈화가 가능함.
단점
- 코드가 커질수록 유지보수와 확장에 어려움이 있음.
- 데이터와 함수가 분리되어 있어 데이터 관리가 복잡해질 수 있음.
- 같은 데이터를 처리하는 함수가 여러 곳에 존재하면 중복 코드가 발생할 수 있음.
2. 객체지향 프로그래밍 (Object-Oriented Programming, OOP)
개념
- 객체지향 프로그래밍은 프로그램을 객체 단위로 나누어 관리하는 방식.
- 객체는 **데이터(속성)**와 **메서드(함수)**를 함께 가지며, 서로 협력하여 기능을 수행함.
- 객체는 현실 세계의 개념을 프로그래밍에 반영하는 추상화의 도구로 활용됨.
특징
- 캡슐화 (Encapsulation): 데이터와 메서드를 객체 안에 숨기고 외부에서는 필요한 인터페이스만 노출.
- 상속 (Inheritance): 기존 클래스의 기능을 확장하거나 재사용 가능.
- 다형성 (Polymorphism): 같은 메서드 이름을 다양한 객체에서 다르게 동작하도록 구현.
- 추상화 (Abstraction): 복잡한 내부 구현을 숨기고 중요한 부분만 표현.
장점
- 코드의 재사용성이 높고 유지보수가 쉬움.
- 프로그램의 구조가 명확하고 확장에 용이함.
- 현실 세계의 개념을 프로그램에 반영할 수 있어 이해하기 직관적임.
단점
- 객체 설계가 복잡할 수 있으며, 초기 개발 비용이 많이 듬.
- 작은 프로그램에는 과잉 설계가 될 수 있음.
비교항목 | 절차지향 | 객체지향 |
구조 | 함수와 데이터가 분리 | 데이터와 메서드가 객체로 캡슐화 |
코드 재사용성 | 제한적 | 상속과 다형성을 통해 재사용 가능 |
유지보수 | 복잡한 코드 유지보수 어려움 | 유지보수와 확장이 용이 |
아요 사례 | 작은 프로그램, 스크립트 | 대규모 애플리케이션, 게임, 웹 애플리케이션 |
확장성 | 새로운 기능 추가 어려움 | 객체와 클래스 확장으로 유연 |
728x90
반응형