객체지향 프로그래밍 vs 함수형 프로그래밍
객체지향 프로그래밍은 절차지향 프로그래밍의 단점을 극복하기 위해 등장했으며, 함수형 프로그래밍은 객체지향 프로그래밍의 단점을 극복하기위해 등장했다.
절차지향 프로그래밍이란?Permalink
일이 진행되는 순서대로 프로그래밍하는 방식.
-
장점
- 코드의 가독성이 좋다.
- 컴퓨터의 처리구조와 비슷해, 실행 속도가 빠르다.
-
단점
- 각각의 코드가 순서에 민감하기 때문에, 유지보수 및 분석이 어렵다.
객체지향 프로그래밍이란(OOP)?Permalink
모든 데이터를 객체(object)로 취급하여, 객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 사용해 요청을 처리하는 방식.
-
특징
- 추상화 : 공통적인 속성이나 기능을 묶어서 이름을 붙이는 것
- 캡슐화 : 데이터를 은닉하고 데이터 기능을 노출시키지 않는다.
- 상속성 : 하나의 클래스가 가진 특징(데이터, 함수)를 그대로 다른 클래스에 물려줄 수 있다.
- 다형성 : 같은 함수가 있어도 매개변수에 따라 각자 다른일을 할 수 있다.
-
장점
- 코드의 재사용이 가능하다.
- 분석과 설계의 전환이 쉽다.
-
단점
- 처리 속도가 상대적으로 다소 느리다.
- 설계에 많은 시간이 소요된다.
-
자바스크립트는 프로토타입이라는, 프로퍼티와 메소드를 객체에게 상속시켜주는 객체를 가지고 있다.
함수형 프로그래밍이란?Permalink
“순수 함수”를 사용해, 상태를 제어하는게 아닌, 빠른 처리에 초점을 둔 방식.
-
순수함수란?
- 함수의 입력이 주어지면, 항상일관된 출력이 나오는 함수.(참조 투명성)
- 대입 연산이 불가능.
- 함수의 실행이 프로그램에 영향을 주지 않는다.
-
장점
- 함수의 동작부가 간결해지기 때문에,
- 객체지향 프로그래밍에 비해 코드 이해도와 가독성이 좋아진다.
-
단점
- 상태를 조작할 수 없다.
함수형과 객체지향Permalink
- 함수형 프로그래밍에서는 함수 자체가 일급 객체이며, 객체지향에서는 클래스가 일급 객체이다.
- 일급객체란?
- 함수의 인자로 넘겨 질 수 있으며, 변수에도 대입 가능한 객체.
- 정의
- 모든 일급 객체는 함수의 실질적인 매개변수가 있다.
- 모든 일급 객체는 함수의 반환값이 될 수 있다.
- 모든 일급 객체는 할당의 대상이 될 수 있다.
- 모든 일급 객체는 비교 연산(==,equal)을 적용할 수 있다.
-
객체지향 프로그래밍에서는, 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있다.
- 클래스 디자인과 객체들간의 관계를 중심으로 코드 작성이 이루어진다.
- 따라서, 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있으며, 멤버변수가 어떤 상태를 가지느냐에 따라 결과가 달라진다.
- 함수형 프로그래밍에서는, 프로그램을 상태 값을 지니지 않는 함수들의 연속으로 볼 수 있다.
- 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다.
- 함수는 인자로 받은 값을 별도로 저장하지 않는다.
- 간결한 과정으로 처리하고 매핑하는데 주 목적을 둔다.
댓글남기기