OOP vs FP

장여진·2022년 5월 8일
0

1. OOP

  • OOP(Object Oriented Programming)는 class와 object에 기반한 프로그래밍
  • 대표적인 언어 C++, Java, Python, Javascript

1) 장점

  • 코드의 재사용률을 높이고 코드를 간결하게 작성할 수 있어서 유지보수가 쉬움

2) 특징

(1) 캡슐화

  • 객체 내부 로직은 감추고 외부에는 상대적으로 안정적인 부분만 공개
  • 데이터를 안전하게 보존하는 기법

(2) 추상화

  • 공통점을 찾아 Class로 한번에 묶고 복잡한 디테일을 숨기고 핵심만 추출해나가는 형태
  • 큰 범위의 공통된 기능 측면에서 클래스를 개발

(3) 상속

  • 상위클래스의 기능을 가져와서 재사용할 수 있을 뿐만 아니라 하위클래스에서 새로운 기능 추가 가능
  • 코드의 중복을 없앨 수 있음

(4) 다형성

  • 같은 이름을 가진 메소드라도 각 하위클래스의 상황에 맞게 다르게 구현될 수 있도록 하는 것
  • 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석 가능

2. FP

  • FP(Funtional Programming)은 Side effet(부작용)이 없는 Pure function(순수 함수)를 구현함으로써 프로그램
  • 대표적인 언어 Clojure, Swift, Haskell, Scala

1) 장점

  • 높은 수준의 추상화 제공, 코드 재사용성 증가, 디버깅이 쉬움, 불변성을 지향해서 프로그램의 동작을 예측하기 쉬움

2) 특징

(1) 고차 함수

  • 함수를 인수로 받는 함수, 또는 함수를 반환하는 함수 === 콜백 함수

(2) 불변성

  • 데이터 변경이 필요한 경우, 원본 데이터 구조를 변경하지 않고도 그 데이터의 복사본을 만들어 일부만 변경 후 복사본을 사용하여 작업 진행

(3) 순수 함수

  • 동일한 input에는 항상 같은 output를 반환해야함

공부하며 작성하고 있는 블로그입니다.
잘못된 내용이 있을 수 있으며 혹시 있다면 댓글 달아주시면 감사하겠습니다 😊

0개의 댓글