물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리 되어 시간적으로 유리합니다.
개발하려는 것을 기능별로 묶어 모듈화를 함으로써 하드웨어가 같은 기능을 중복으로 연산하지 않도록 하고, 모듈을 재활용하는 프로그래밍 기법
장점
같은 기능이 필요한 경우에 같은 객체를 계속 사용할 수 있어 코드의 재사용성이 높음
코딩이 절차지향보다 간편함
객체끼리 유기적으로 연결되어 있으나 서로 분리되어 있어 유지보수가 쉬움
단점
절차지향보다 다소 느린 처리속도
설계에서 많은 시간이 소요
특징
1) 추상화 : 공통적인 부분들을 모아둔 것
2) 캡슐화 : 외부에 내부 데이터나 로직을 노출시키지 않는 것
3) 상속성 : 부모 객체의 특징을 자식 객체가 이어받는 것
4) 다형성 : 같은 이름의 함수가 전달받는 인자에 따라 다른 기능을 수행하는 것
함수형 프로그래밍
함수를 기본 빌딩 블록으로 사용하여 프로그램을 구현하는 방식, 상태 변화를 피하고 불변성을 유지하는 방식으로 프로그램을 작성하며, 함수의 조합을 통해 원하는 결과를 얻는 방식으로 동작
장점
함수의 동작부가 간결해 코드 가독성이 높아짐
테스트가 쉬움
단점
외부 혹은 내부 데이터의 상태 조작이 불가능
함수형과 객체지향의 차이
함수형 프로그래밍은 함수 자체가 일급 객체, 객체지향 프로그래밍에서는 클래스나 객체 등이 일급 객체
객체지향 프로그램은 상호작용하는 객체들의 집합으로 프로그램이 구성되지만, 함수형 프로그래밍에서는 상태값이 없는 함수들의 연속으로 구성