OOP vs FP

유연희·2022년 7월 1일
0

OOP

OOP(Object Oriented Programming)은객체지향 프로그래밍을 뜻한다.

OOP는 객체지향 프로그래밍이란 프로그램을 단순히 데이터와 처리방법으로 나눈 것이 아니라, 객체(object)라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.

객체란 하나의 역할을 수행하는 메소드와 변수의 묶음으로 봐야한다.

OOP의 특징

1. 추상화

추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.

객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념이다.

다시 말하면, 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법이라 할 수 있다.

2 캡슐화

캡슐화의 경우 알약 캡슐을 생각해보면 쉽게 느껴질 수 있다. 캡슐 알약의 경우 캡슐안에 쓴맛을 가진 약이 들어있다. 먹는 사람이 쓴 약의 맛을 느끼지 못하게 감싼것이다.

프로그래밍에서의 캡슐화 역시 private으로 정의된 속성은 외부에 노출 시키지 않고 자신의 클래스에서만 사용하기 위해 정의한다.

즉, private으로 정의된 속성은 알약의 실제 내용물인 샘이다.

3 상속

OOP에서 상위 부모가 가진 속성을 자식에게 물려주는 것이 가능한데 이를 상속이라 한다. OOP에서 이를 부모 클래스, 자식 클래스라고 표현합니다.

상속이 필요한 이유는 코드의 중복을 없애기 위함입니다.
코드의 중복이 많아지면 개발 단계에서도 피곤하지만, 유지 보수에서도 많은 비용이 들게된다.
OOP에서는 상속을 통해 코드의 중복 문제를 일부 해결할 수 있다는 장점이 있다.

상속관계를 맺으면 자식 객체를 생성할 때 부모 클래스의 속성들을 자동으로 물려받기 때문에 자식 클래스에서 또 정의할 필요가 없기 때문이다.\

4 다형성

다형성은 형태가 같은데 다른 기능을 하는 것을 의미합니다.

부모 클래스로부터 상속을 받은 속성에 대해, 자식 클래스에서 물려받은 속성을 재정의 할 수 있으며 이것을 오버라이딩이라고 한다.

장점

  1. 코드의 재사용성 증가
  2. 생산성 향상
  3. 유지보수 편리

단점

  1. 개발속도가 느리다.
  2. 실행속도가 느리다.

FP

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

과거 명령형 프로그래밍을 기반으로 개발했던 개발자들은 개발하는 소프트웨어의 크기가 커짐에 따라, 엉켜있는 스파게티 코드를 유지보수하는 것이 매우 힘들다는 것을 깨닫게 되었다. 따라서 이를 해결하기 위해 함수형 프로그래밍 이라는 프로그래밍 패러다임에 관심을 갖게 되었다. 함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.

장점

1.높은 수준의 추상화를 제공한다.
2.함수 단위의 코드 재사용이 수월하다.
3.불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉽다.

단점

  1. 순수함수를 구현하기 위해서는 코드의 가독성이 좋지 않을 수 있다.
  2. 함수형 프로그래밍에서는 반복이 for문이 아닌 재귀를 통해 이루어지는다,
    이러한 스타일은 무한 루프를 일으킬 수 있다.
  3. 순수함수를 사용하는 것은 쉬울 수 있지만 조합하는 것은 쉽지 않다.

출처 - https://velog.io/@kingmo/OOP-vs-FP

profile
developer

0개의 댓글