TIL 14 - 함수형 프로그래밍 vs 객체지향 프로그래밍

hojung choi·2021년 6월 15일
0

cs

목록 보기
1/1

최근 AI, IOT, 비트코인이 뜨기 시작하며 함수형 프로그래밍이 주목받고있다.

함수형 프로그래밍은 수학과 밀접한 관련이 있기 때문에 사람이 배우기에 난해 할 수 있다.
최근에는 자바나 c++와 같이 최신 버전에 함수형이 추가된 언어들도 있다.

👉🏻 함수형 프로그래밍 (Functional Programming)

명령형 프로그래밍에 속하며 무엇을 구현하겠다에 초점을 두어, 자료처리를 수학적인 함수의 계산으로 취급하고 상태와 가변적인 데이터를 배제하는 프로그래밍

  • 모듈화 : 함수형 프로그래밍의 핵심 다른 외부 요인에 영향을 받지 않고 자신의 맡은 바를 실행 (same input -> same output)
  • 목적성 : 알고리즘을 명시하는 것 보다 함수를 명시하는데 중심(선언형이라고도 한다)
  • 객체: 함수고 하나의 객체로서 작용. 적재적소에 해당 함수를 적절한 input과 함께 쓰는 것이 필요하다

👉🏻 객체지향 프로그래밍 (Object Oriented Programming)

객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

  • 추상화 : 공통적인 속성이나 기능을 묶어서 이름을 붙이는 것
  • 캡슐화 : 데이터를 은닉하고 데이터 기능을 노출시키지 않는다
  • 상속성 : 하나의 클래스가 가진 특징(데이터, 함수)을 그대로 다른 클래스에 extend 될 때 사용된다
  • 다형성 : 같은 함수가 있어도 매개변수에 따라 각자 다른 일을 하는 것

✅ 객체지향 프로그래밍과 함수형 프로그래밍의 차이점

둘은 상반되는 개념이 아니고 하나의 프로그램 방식이다. 공통적으로는 반복을 줄이고 효율적인 작업을 위해 생겨났다.


객체지향 프로그래밍과 함수형의 차이는 데이터(상태)를 다루는 개념과, ‘간결한 코드 작성’에 대한 관점 차이가 있다.
객체지향이 함수의 동작부를 *캡슐화해서 코드를 이해할 수 있게 한다면, 함수형 프로그래밍은 동작부를 최소화해서 코드 이해를 돕는다.

*데이터(상태)를 다루는 개념
객체지향은 객체 안에 상태를 저장하고, 이 상태를 이용해서 메소드를 추가하고 상태변화를 설정하고 조정하기위해 다양한 기능을 사용한다 이에 반해 함수형은 상태를 제어하는 것보다 상태를 저장하지 않고 없애는데가 포인트


  • 객체지향 프로그래밍의 경우, 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다. 따라서 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있다. 특히 멤버변수가 어떤 상태를 가지고있는가에 따라 결과가 달라진다.

  • 함수형 프로그래밍의 경우, 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다. 함수 내부에서 인자로 받은 값을 별도로 저장하거나 하지 않고, 간결한 과정으로 처리하고 매핑하는데에 주 목적을 둔다.

profile
🧚🏻‍♀️ Front-End Developer

0개의 댓글