OOP vs FP

dlwoxhd·2022년 6월 27일
0

Basic JS

목록 보기
18/18
post-thumbnail

OOP

Object Oriented Programming 의 약자.
객체지향 프로그래밍을 뜻한다.
OOP는 객체지향 프로그래밍이란 프로그램을 단순히 데이터와 처리방법으로 나눈 것이 아니라 객체(object)라는 기본 단위로 나누고 이들의 상호 작용을 서술하는 방식

특징

  • 캡슐화(Encapsulation) : 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법이다. 이 방법으로 데이터를 보호하고, 불필요한 정보를 감출수 있기 때문에 정보은닉을 할 수 있다.

  • 추상화(Abstraction) : 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다. 또, 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념이다.

  • 상속(Inheritance) : 기존 상위클래스에 기능을 가져와 재사용할 수 있으면서도 동시에 새로운 하위 클래스에 새로운 기능도 추가할 수 있다. 즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려준다.
    상속이 필요한 이유는 코드 중복을 없애기 위함이다.

  • 다형성(Polymorphism) : 상속과 연관있는 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러형태(객체)로 재구성 되는 것을 말한다. 쉽게 말해, 한 부모의 밑에서 태어난 자식들이 조금씩 다르다는 것이다.

    1. 오버라이딩 : 하위클래스(자식)가 상위 클래스(부모)에서 만들어진 메서드를 자신의 입맛대로 다시 재창조해서 사용하는 것을 말한다.
    2. 오버로드 : 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현하는 것을 말한다.

FP

Functional Programming의 약자
함수형 프로그래밍은 요즘 들어 방대한 데이터를 빠르게 계산해서 병렬적으로 안정적 처리를 하는 것의 중요성이 부각되면서 주목을 받게 됨

수학과 밀접한 영향 : 어떠한 값을 넣게 되면(input), 결과값을(output) 도출한다

함수형 프로그래밍을 이용해서 프로그램을 만든다는 것은 이런 함수들을 적용하고 묶어서 프로그램을 구성해 나가는 것을 말함

특징

  • 순수 함수(pure function) : 동일한 인자를 넣었을때 항상 동일한 결과값을 반환하고 언제 선언되었는지, 외부에 전혀 영향을 받지 않도록 작성을 한다.

  • 비상태 불변성(stateless immuutability) : 전달된 데이터를 변경하는 것이 아니라 새로운 버전의, 새로운 오브젝트를 만들어서 결과값으로 전달한다. 여러가지 동시다발적인 멀티쓰레딩 환경에서도 안정적으로 동작할 수 있다

  • 고차 함수(Higher-order-Function) : 함수를 인수로 받는 함수, 또는 함수를 반환하는 함수를 고차함수하고 한다. 다른 말고 콜백함수(callback)라고도 한다.

  • Expressions Only!! (not statments like if, switch, for…) : for loop를 이용해서 배열을 하나하나씩 돌고 있다면 함수형 프로그래밍이라고 할 수 없다.

0개의 댓글