절차지향 (Procedural Programming)
- 함수 중심적 프로그래밍
- 단계적 절차 중심 (알고리즘 중심)
- 함수, 절차, 변수, 데이터로 이루어짐
- 함수, 순차적 실행 기반 동작 ( 대부분 전역변수, 함수로 처리)
- 간단, 직관적, 소규모 프로그램
- 프로그램 커질수록 코드 복잡, 관리 힘듦
- 데이터, 함수 분리되어있기 때문에 유지보수 힘듦
객체지향 (Object-Oriented Programming)
- 객체 중심적 프로그래밍
- 클래스, 객체, 상속, 다형성, 캡슐화, 추상화
- 재사용성, 유지보수성, 확장성
- 클래스 / 객체로 나눠짐
- 클래스 = 변수와 메소드를 정의하는 틀
- 객체 = 클래스에서 정의한 것을 토대로 메모리에 할당. . - 재사용성, 유지보수성, 확장성,
- 시스템 모듈화, 객체간 상호작용(가독성, 효율성)
- Java, Python, C++ ... etc
/ | 절차지향 (Procedural Programming) | 객체지향 (Object-Oriented Programming) |
프로그램구성 | 함수, 절차 중심 | 객체, class중심 |
데이터 처리 | 데이터, 함수 분리 | 데이터, 함수가 객체에 결합 |
구성요소 | 변수, 함수 | class, 객체, 메소드, 속성 |
재사용성 | 재사용 힘듦 | 재사용 높음 (클래스 객체 이용) |
확장성 | 확장 힘듦 | 확장 용이(상속, 다형성) |
장점 | 간단, 직관적, 작은 프로그램, 절차적 문제에 용이 | 대규모 프로그램, 복잡한 문제에 용이, 유지보수 용이 |