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

객체지향 프로그래밍은 절차지향 프로그래밍의 단점을 극복하기 위해 등장했으며, 함수형 프로그래밍은 객체지향 프로그래밍의 단점을 극복하기위해 등장했다.

절차지향 프로그래밍이란?Permalink

일이 진행되는 순서대로 프로그래밍하는 방식.

  • 장점

    • 코드의 가독성이 좋다.
    • 컴퓨터의 처리구조와 비슷해, 실행 속도가 빠르다.
  • 단점

    • 각각의 코드가 순서에 민감하기 때문에, 유지보수 및 분석이 어렵다.

객체지향 프로그래밍이란(OOP)?Permalink

모든 데이터를 객체(object)로 취급하여, 객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 사용해 요청을 처리하는 방식.

  • 특징

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

    • 코드의 재사용이 가능하다.
    • 분석과 설계의 전환이 쉽다.
  • 단점

    • 처리 속도가 상대적으로 다소 느리다.
    • 설계에 많은 시간이 소요된다.
  • 자바스크립트는 프로토타입이라는, 프로퍼티와 메소드를 객체에게 상속시켜주는 객체를 가지고 있다.

함수형 프로그래밍이란?Permalink

“순수 함수”를 사용해, 상태를 제어하는게 아닌, 빠른 처리에 초점을 둔 방식.

  • 순수함수란?

    • 함수의 입력이 주어지면, 항상일관된 출력이 나오는 함수.(참조 투명성)
    • 대입 연산이 불가능.
    • 함수의 실행이 프로그램에 영향을 주지 않는다.
  • 장점

    • 함수의 동작부가 간결해지기 때문에,
    • 객체지향 프로그래밍에 비해 코드 이해도와 가독성이 좋아진다.
  • 단점

    • 상태를 조작할 수 없다.

함수형과 객체지향Permalink

  • 함수형 프로그래밍에서는 함수 자체가 일급 객체이며, 객체지향에서는 클래스가 일급 객체이다.
  • 일급객체란?
    • 함수의 인자로 넘겨 질 수 있으며, 변수에도 대입 가능한 객체.
    • 정의
      1. 모든 일급 객체는 함수의 실질적인 매개변수가 있다.
      2. 모든 일급 객체는 함수의 반환값이 될 수 있다.
      3. 모든 일급 객체는 할당의 대상이 될 수 있다.
      4. 모든 일급 객체는 비교 연산(==,equal)을 적용할 수 있다.
  • 객체지향 프로그래밍에서는, 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있다.

    • 클래스 디자인과 객체들간의 관계를 중심으로 코드 작성이 이루어진다.
    • 따라서, 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있으며, 멤버변수가 어떤 상태를 가지느냐에 따라 결과가 달라진다.
  • 함수형 프로그래밍에서는, 프로그램을 상태 값을 지니지 않는 함수들의 연속으로 볼 수 있다.
    • 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다.
    • 함수는 인자로 받은 값을 별도로 저장하지 않는다.
    • 간결한 과정으로 처리하고 매핑하는데 주 목적을 둔다.

댓글남기기