프로그래밍 패러다임은 프로그래밍의 관점을 갖게 해주는 개발 방법론이다.
고차 함수를 쓰기위해서는 해당 언어가 일급 객체라는 특징을 가져야한다.
일급객체
변수나 메서드에 함수를 할당할 수 있다.
함수 안에 함수를 매개변수로 담을 수 있다.
함수가 함수를 반환할 수 있다.
OOP, Object-Oriented Programming으로
1. 객체들의 집합으로 프로그램의 상호 작용을 표현
2. 데이터를 객체로 취급
3. 객체 내부에 선언된 메서드를 활용
하는 방식을 말한다.
객체지향 프로그래밍을 설계할 때 SOLID 원칙을 지켜야한다.
SRP (Single Responsibility Principle): 단일 책임의 원칙
모든 클래스는 각각 하나의 책임만 가져야하는 원칙
OCP (Open Closed Principle): 개방-폐쇄의 원칙
유지 보수 사항이 있으면 코드를 쉽게 확장하고 수정할 때는 닫혀 있어야 하는 원칙
LSP (Liskov Substitution Principle): 리스코프 치환 원칙
프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야하는 것
ex) 부모, 자식 계층 관계에서 부모 객체에 자식 객체를 넣어도 시스템이 문제없이 돌아가게 만드는 것
ISP (Interface Segregation Principle): 인터페이스 분리 원칙
하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 하는 원칙
DIP (Dependency Inversion Principle): 의존 역전 원칙
자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스에 두어 변하기 쉬운 것의 변화에 영향을 받지 않게 하는 원칙
ex) 타이어를 갈아끼울 수 있는 틀 만들고, 다양한 타이어를 교체 가능해야함
-> 상위 계층은 하위 계층의 변화에 대한 구현으로부터 독립
로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다.
일이 진행되는 방식으로 그저 코드를 구현
단점으로 모듈화가 어렵고 유지 보수성이 떨어진다.