순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그램이 기법
- 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리 되어 시간적으로 유리하다.
- 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 접근 방식으로 설계
- 데이터와 함수를 별개로 취급
- 모든 함수는 데이터 공유가 가능
- 정해진 순서대로 입력해야 하므로 순서가 바뀌면 결과를 도출하기 어렵다.
- 섬세한 코딩 가능
- 메모리 사용이 적다
- 작은 규모의 프로그램에 적합
- 한 부분이 고장나면 전체가 동작하지 않는다
- 유지 보수에 어려움이 있다
- 개발 기간이 오래 걸리고 비용이 많이 든다
- 협업이 어렵
일의 순서대로 프로그래밍하는 것이 아닌 여러 객체의 협력을 통해 프로그램을 구현하는 것
- 추상화: 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지/보수를 용이하게 하는 것
- 캡슐화: 관련된 데이터와 알고리즘(코드)를 하나의 묶음으로 정리한 것
- 상속성: 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법(재활용)
- 다형성: 하나의 이름(방법)으로 많은 상황에 대처하는 기법(상속 + 가상메서드)
- 한 부분이 고장나도 다른 부분 동작 가능
- 유지 보수가 쉬움
- 개발기간이 짧고 비용이 적게 든다
- 협업이 가능
- 메모리 사용이 좀 더 많다
- 불필요한 부분까지 프로그램에 포함
- 대규모의 프로그램에 적합