💡 프로그래밍 패러다임 (programming paradigm)
이란?
프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론
💡 선언형 프로그래밍 (declarative programming)
이란?
'무엇'을 풀어내는가에 집중하는 패러다임으로, "프로그램은 함수로 이루어진 것이다." 라는 명제 실현
💡 함수형 프로그래밍 (functional programming)
은 선언형 패러다임의 일종
순수 함수
들을 블록처럼 쌓아 로직을 구현하고 고차 함수
를 통해 재사용성을 높임👉 출력이 입력에만 의존하는 함수
const pure = (a,b) =>{
return a+b
}
👉 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 함수
⭐️ 이때 해당 언어는 일급 객체라는 특징을 가져야 함
💡 객체지향 프로그래밍 (OOP, Object-Oriented Programming)
이란?
객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식
⭐️ 객체지향 프로그래밍은 추상화, 캡슐화, 상속성, 다형성의 특징을 가진다
추상화(abstraction)
캡슐화(encapsulation)
상속성(inheritance)
다형성(polymorphism)
⭐️ 객체 지향 프로그래밍을 설계할 때는 SOLID 원칙
을 지켜야 한다
단일 책임 원칙(SRP)
개방-폐쇄 원칙(OCP)
리스코프 치환 원칙(LSP)
인터페이스 분리 원칙(ISP)
의존 역전 원칙(DIP)
💡 오버로딩 (overloading)
이란?
같은 이름을 가진 메서드를 여러 개 두는 것 - 메서드의 타입, 매개변수의 유형, 개수 등으로 구분
👉 컴파일 도중에 발생하는 '정적' 다형성
🔗 오버로딩 자바 예시
class Person{
public void eat(String a) {
System.out.println("I eat " + a);
}
public void eat(String a, String b){
System.out.println("I eat " + a + " and " + b);
}
}
💡 오버라이딩 (overriding)
이란?
주로 메서드 오버라이딩을 말하며 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것
👉 런타임 도중에 발생하는 '동적' 다형성
🔗 오버로딩 자바 예시
class Animal{
public void bark(){
System.out.println("짖는다!");
}
}
class Dog extends Animal{
@Override
public void bark(){
System.out.println("왈 왈!")
}
}
💡 절차형 프로그래밍
이란?
로직이 수행되어야 할 연속적인 계산 과정으로 이루어진 프로그래밍 패러다임
🔗 절차형 자바스트립트 예시
const ret = [1,2,3,4,5,11,12]
let a = 0
for(let i = 0; i < ret.length; i++){
a = Math.max(ret[i],a)
}
console.log(a) // 12