✔️ 어느 하나가 우위에 있는 것이 아닌 필요에 따라 합쳐서 사용하기도 하고 원하는 목표에 따라 적절한 것을 골라서 사용해야 한다.
모든 데이터를 객체로 취급하고 객체가 처리 요청을 받으면 객체 내부에 있는 기능을 사용해 처리하는 방법
객체
프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간
값을 저장할 변수와 작업을 수행할 메소드를 서로 연관된 것끼리 묶어서 만들 것을 말한다.
서로 연관되어 있는 함수와 변수들을 객체로 그룹핑하고 그 객체가 들어잇는 함수들을 호출해서 다른 함수들과 분리/구분한다.
장점: 코드의 재사용 가능(→ 확장 및 유지보수 용이), 분석과 설계의 전환이 쉽다.
단점: 처리 속도가 상대적으로 느리고 설계에 많은 시간이 소요된다.
특징: 추상화, 캡슐화, 상속성, 다형성
1. 추상화: 공통적인 속성이나 기능을 묶어서 이름을 붙인다.
2. 캡슐화: 데이터를 은닉하고 데이터 기능을 노출시키지 않는다.
3. 상속성: 상위 부모 객체의 속성과 특징을 하위 객체가 물려받는다
객체가 이미 존재하는 객체의 특성을 가진다면 기존 객체의 특성을 상속시켜 만들 수 있다
4. **다형성**: 같은 함수가 있어도 매개변수에 따라 각자 다른 일을 한다.
부수효과: side Effect
변수의 값이 변경되거나 자료구조를 제 자리에서 수정하거나 객체의 필드값을 설정하거나 예외나 오류가 발생하며 실행이 중단되거나 콘솔 또는 파일 I/O가 발생하는 작업을 의미한다.
순수함수: Pure Function
동일한 입력값을 넣었을 때 항상 동일한 리턴값을 반환하며 외부에 영향을 받지 않는 함수를 말한다.
여러가지 동시다발적인 멀티스레딩 환경에서도 안정적으로 동작할 수 있다.function funcAdd(a, b){ return a+b; } // 인자로 들어온 값만 참조하여 리턴한다 function funcAdd3(a, b){ return a+b+c; } // c에 따라 리턴값이 변경된다.
일급 객체
다른 요소들과 아무런 차별이 없는 객체, 함수의 인자로도 넘겨질 수 있고 변수에 대입도 가능한 객체를 말한다.
명확한 정의
- 모든 일급 객체는 함수의 실질적인 매개변수가 될 수 있고 함수의 반환값이 될 수 있다
- 모든 일급 객체는 할당의 대상이 될 수 있고 비교 연산을 적용할 수 있다.
참조 투명성: Referential Transparency
동일한 인자에 대해 항상 동일한 결과를 반환해야하고 참조 투명성을 통해 기존의 값은 변경되지 않고 유지되어야 한다.