Levelup 1. OOP vs FP

어니언·2023년 1월 12일
0
post-thumbnail

OOP = Object Oriented Programming의 약자로 객체지향 프로그래밍을 말한다.

객체지향 프로그래밍은 프로그램을 명령어의 목록으로 보는 것을 벗어나서 여러개의 독립된 단위로 보는 것으로 '객체'들의 모임으로 파악하고자 하는 프로그래밍이다.

OOP에서 객체란 실제 사물을 프로그래밍으로 옮겨서 모델링하는 것으로 자신의 속성과 메서드를 갖고 있다. 객체의 속성은 객체의 상태,성질,데이터등을 의미하고, 행위란 객체의 기능이나 데이터를 조작하는 연산등을 의미한다.

OOP의 특징은 크게 4가지를 갖는다
1. 캡슐화 - 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메서드를 하나로 묶는 것을 의미한다.

  1. 상속성 - 기존 상위 클래스에 근거하여 새로운 하위 클래스의 행위를 정의할 수 있느 ㄴ속성으로 재사용성을 향상시켜준다.

  2. 다형성 - 서로 다른 ㅡㅋㄹ래스의 객체가 같은 동작 수행 명령을 받을 때, 각자의 특성에 맞게 동작하는 것을 말한다.

  3. 추상화 - 객체들이 공통적으로 필요로 하는 속성이나 동작을 하나로 추출하는 과정이다.

FP = Functional Programming의 약자로 함수형 프로그래밍을 말한다.

함수형프로그래밍은 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍이다. 함수는 코드 구성의 기본이며 모든 고차원 프로그래밍 언어에 존재하는 기능이다. 일반적으로 함수형 프로그래밍은 깨끗하고 유지보수가 쉬운 소프트웨어를 만들기 위해 함수의 효과를 최고로 높여 사용하는 것을 의미한다.

FP의 특징은 크게 5가지가 있다.
1. 불변하는 데이터 - 데이터를 함수 밖에서 변형하지 않는 것이 fp의 원칙중 하나이다. 다만, 함수의 반환 값은 함수 내에서 수행된 작어븡ㄹ 반영해야한다.

  1. 클로저 - 부모함수가 실행되었다 하더라도 부모함수의 변수에 접근할 수 있는 내부함수를 뜻한다.

  2. 순수 함수 - 입력 parameter(매개변수)에만 의존하며, 부수효과를 일으키지 않는 함수를 말한다. 이 특징 덕에 앞서 말한 불변하는 데이터의 특징도 가질 수 있다.
    *부수효과 : 함수 내의 동작으로 인해 함수외부가 영향을 받는 것을 의미

  3. 유지 관리 가능성 - 함수 밖에서 의도치않게 어떠한 것도 바뀌지 않으므로 프로그램을 유지관리하기 용이하다는것을 의미한다.

  4. 모듈화 - 생산성을 증가시킨다, 작은 모듈은 빠르게 작성할 수 있으며 재사용하기 용이해 프로그램 개발속도를 높인다. 또한, 모듈을 분리후 테스트하기에도 유용하여 디버깅이나 테스트시간을 줄일 수 있다.

OOP 와 FP의 차이점 정리

profile
안녕하세요.

0개의 댓글