OOP vs FP

이예음·2022년 10월 24일
0
post-thumbnail

OOP란(객체지향)?

: Object - Oriented Programming

출처
구조적 프로그래밍 방식의 개선된 형태이며, 큰 문제를 작게 쪼개는 것이 아닌, 작은 문제들을 해결하는 객체를 만들어 조합해 큰 문제를 해결해 나가는 Bottom - up 방식이다.

OOP의 장점

  • 코드의 재사용성 증가
  • 유지보수가 용이하다.
  • 코드의 가독성이 좋아진다.

OOP의 단점

  • 처리 시간이 비교적 오래 걸린다.
  • 프로그램을 설계할 때, 비용이 든다.

OOP의 특징

1) Abstraction (추상화)

  • 공통적인 속성 및 기능을 묶어서 이름을 지정하는 것
  • 클래스를 정의하는 것

2) Encapsulation (캡슐화)

  • 필드와 메소드를 하나의 캡슐로 묶는 것
  • 외부에 데이터를 드러내지 않음
  • 직접 접근이 불가하고 메소드를 통한 접근 가능
  • 정보은닉으로 데이터 보호 가능
  • 유지보수가 쉬움

3) Inheritance (상속)

  • 상위의 특징을 하위가 물려받음
  • 코드의 중복을 줄이고 생산성이 향상됨

4) Polymorphism (다형성)

  • 부모에서 받은 가상 함수를 자식에서 overriding, - overloading 하여 사용되는 것
  • 동작은 같지만 결과가 다름

FP란?

:Functional Programming (함수형 프로그래밍)
개발하는 소프트웨어의 크기가 커짐에 따라 유지보수가 어려워짐 이를 해결하기 위한 함수형 프로그래밍이다.

FP의 장점

  • 가독성을 높이고 유지보수를 용이하게 함
  • 작은 문제를 해결하기 위한 함수 작성

FP의 단점

  • 대입문이 없기 때문에 메모리에 한 번 할당된 값은 새로운 값으로 변할 수 없음

FP의 특징

1) Side Effect (부수 효과)

  • 변수 값 변경
  • 자료구조를 제자리에서 수정
  • 객체의 필드값 설정
  • 예외, 오류 발생으로 실행 중단
  • 콘솔, 파일 입출력 발생

2) Pure Function (순수 함수)

  • 부수 효과들을 제거한 함수
  • 메모리, 입출력 관점에서 부수 효과가 없는 함수
  • 함수의 실행이 외부에 영향을 끼치지 않는 함수
  • 함수 자체가 독립적이고 부수 효과가 없기 때문에 스레드에 안전성을 보장 받음
  • 스레드에 안정성을 보장 받아서 병렬 처리를 동기화 없이 진행 가능

3) 1급 객체

  • 변수나 데이터 구조 안에 담을 수 있음
  • 매개변수로 전달할 수 있음
  • 반환값으로 사용 가능
  • 할당에 사용된 이름과 무관하게 고유한 구별이 가능
  • 함수형 프로그래밍에서 함수를 1급 객체로 취급

4) Referential Transparency (참조 투명성)

  • 동일한 인자에 대해 항상 동일한 결과 반환 y = f(x)
  • 기존 값은 변경되지 않고 유지됨 (Immutable Date, 불변 데이터)
profile
응애

0개의 댓글