대비되는 패러다임

이하연·2021년 8월 20일
0

[oop] 객체지향

목록 보기
5/7

객체지향 프로그래밍

  • 객체지향 프로그래밍은 필요한 데이터를 추상화시켜 상태행위를 가진 객체를 생성하고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식
  • 특징
    • 자료 추상화
    • 상속
    • 다형성
    • 동적 바인딩
  • 기본 구성 요소
    • 클래스
    • 객체
    • 메서드 , 메시지
  • 장점
    • 프로그램을 유연하고 쉽게 변경 가능 → 소프트웨어 개발에 많이 사용
    • 프로그래밍을 더 쉽게 배울 수 있음
    • SW 개발과 유지보수를 간편하게 함
    • 직관적으로 코드를 분석할 수 있음
    • 클래스에 하나의 문제 해결을 위한 데이터와 메서드를 모아놓은 방식으로 응집력을 강화하고, 클래스간에 독립적으로 디자인의 결합력을 약하게 할 수 있다.
  • 단점
    • 지나친 프로그램의 객체화 경향 때문에 오히려 실제 세계를 그대로 반영하지 못한다는 비판이 존재

함수형 프로그래밍

  • 함수형 프로그래밍은 순수 함수를 조합하고 공유 상태, 변경 가능한 데이터 및 부작용을 피하여 프로그래밍하는 패러다임
  • 객체간의 연계성을 생각하기보단 함수를 이용하여 부작용이 없도록 하는것이 특징
  • 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임
  • 장점
    • 대규모 병렬처리가 굉장히 쉽다.
    • 함수의 조합으로 이루어져 있다.
    • 객체의 상태에 따른 연계성이 존재하지 않기에 부작용이 존재하지 않는다.
  • 단점
    • 함수의 응용을 강조
    • 함수형 코드에서는 함수의 출력값은 그 함수에 입력된 인수에만 의존하므로 인수x에 같은 값을 넣고 함수 f를 호출하면 항상 f(x)라는 결과가 나옴
    • 객체지향 프로그래밍과 달리 상태를 배제하여 부작용이 없게끔 동작합니다. 하지만 프론트에서 대부분 객체의 상태에 따라 모델링하기 때문에 상태를 필요로 합니다.

0개의 댓글