OOP는 객체지향 프로그래밍 이다. 흔히 자바,C# 등등 클래스 형으로 해서 사용하는 프로그래밍 기법이다. 하나의 클래스를 만들고 클래스 안에 메소드를 생성하여 코드의 재사용성을 줄이고, 캡슐화또는 은닉화를 가능하게 한다.
흔히 JS로 따지자면 클로저를 예시로 들수 있겠다.
const Capsule=()=>{
const a = 1;
const innerFunc=()=>{
console.log(a);
}
return innerFunc;
}
위의 코드를 보면 내부 함수에서는 외부함수의 a 라는 변수에 접근이 가능하다.
하지만 외부에서 a라는 변수를 사용할수가 없다 스코프 범위로 인해서 절대로 접근이 불가능하다.
이러한 중요한 데이터를 은닉하고 캡슐처럼 숨겨 둘 수 있다.
또한 상속도 가능하다.
OOP 즉 객체지향 프로그래밍은 클래스를 상속함으로써 부모 클래스의 속성을 그대로 따라가서 자식클래스가 추가로 어떠한 기능을 더 추가 할 수도 있고, 부모클래스의 속성을 상속을 통해서 아예 바꿔줄수도 있다.
FP는 함수형 프로그래밍 이다.
함수형 프로그래밍은 말 그대로 함수 단위로 구현이 된다.
함수는 하나의 기능을 하고 그 값을 리턴 하기 때문에 추상화가 쉽고, 디버깅도 하기 쉽다.
함수형 프로그래밍 에서는 함수는 1급 객체이다.
1급 객체는..함수가 리턴이 될수도 있고 어떠한 함수의 인자값으로 들어갈 수도 있고 변수안에 담길수도 있는 함수를 일급 객체 라고 한다.
일급 객체의 이점을 활용해서 고차 함수의 개념을 사용 할 수도 있다.