OOP vs FP

박선우·2023년 1월 13일
0

CS 스터디

목록 보기
15/53
post-thumbnail

🌼 OOP vs FP

1️⃣ OOP(객체지향 프로그램)

  • 객체(Object) / Oriented(지향) / Programming(프로그래밍)

객체 지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임(견해, 사고법)이라고 할 수 있다.

  • 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍하는 것이다. 이것을 추상화 라고 한다.

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

  • 프로그래밍에서 필요한 데이터를 추상화시켜서 상태(속성, 어트리뷰트)와 행위(메서드)를 가진 객체로 만들고, 그 객체간의 상호 작용을 통해 로직을 구성하는 방법을 의미한다.

🫥 OOP의 4가지 특징

⓵ 캡술화

  • 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
  • 클래스를 우리가 만들 때 훗날 이클래스에서 만들어진 객체가 특정한 목적을 가지고 사용해야할 변수와 그 변수를 가지고 특정한 액션 즉, 메서드 또는 함수를 관련성 있게 클래스에 구성해야한다.
  • 캡슐화를 하는 중요한 목적은 바로 정보의 은닉화이다.
  • 유저 정보를 가지고 있는 User라는 객체에서 유저의 정보가 public으로 선언되어 있다면, 누구든 접근해서 유저 정보를 변경할 수 있다. 그렇기 때문에 private로 해서 데이터를 보호해서 접근을 제한해야한다.

② 추상화

  • 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것입니다.
  • 예를 들면, 컴퓨터, TV, 라디오 등이 있을 때 우리는 이것들을 각각의 객체라 하며,
  • 이 객체들을 하나로 묶으려 할 때, 만약 사물이라는 어떤 추상적인 객체로 크게 정의할 수 있습니다.
  • 이때 사물이라고 묶는 것을 추상화라고 합니다.

③ 다형성

  • 하나의 메서드(Method)나 클래스(Class)가 있다고 가정할 때 이 메서드나 클래스를 다양한 방법으로 동작하게 하는 것
  • 예를 들어 "콜라를 마신다." 라는 행동이 있다면 "사이다를 마신다." 와 "우유를 마신다." 라는 마신다의 똑같은 행동에서 어떤 액체냐에 따라 동작의 목적이 달라집니다.

④ 상속성

  • 상속이란 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.
  • 기존클래스에 기능을 가져와 재사용할 수있으면서도 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있게 만들어 준다.

2️⃣ FP (함수형 프로그램)

  • 개발하는 소프트웨어의 크기가 커짐에 따라 유지보수가 어려워짐 이를 해결하기 위한 함수형 프로그래밍이다.
  • 함수형 프로그래밍 언어로 분류되는 대표적인 언어로는 SQL, Scala, Clojure 등이 존재한다.

🫥 FP 특징

⓵ Side Effect (부수 효과)

  • 변수 값 변경
  • 자료구조를 제자리에서 수정
  • 객체의 필드값 설정
  • 예외, 오류 발생으로 실행 중단
  • 콘솔, 파일 입출력 발생

② Pure Function (순수 함수)

  • 부수 효과들을 제거한 함수
  • 메모리, 입출력 관점에서 부수 효과가 없는 함수
  • 함수의 실행이 외부에 영향을 끼치지 않는 함수
  • 함수 자체가 독립적이고 부수 효과가 없기 때문에 스레드에 안전성을 보장 받음
  • 스레드에 안정성을 보장 받아서 병렬 처리를 동기화 없이 진행 가능

③ 1급 객체

  • 변수나 데이터 구조 안에 담을 수 있음
  • 매개변수로 전달할 수 있음
  • 반환값으로 사용 가능
  • 할당에 사용된 이름과 무관하게 고유한 구별이 가능
  • 함수형 프로그래밍에서 함수를 1급 객체로 취급

④ Referential Transparency (참조 투명성)

  • 동일한 인자에 대해 항상 동일한 결과 반환 y = f(x)
  • 기존 값은 변경되지 않고 유지됨 (Immutable Date, 불변 데이터)

3️⃣ OOP vs FP

객체 지향 프로그래밍(OOP)함수형 프로그래밍(FP)
Mutable DataImmutable Data
명령형 프로그래밍 모델을 따른다.선언형 프로그래밍 모델을 따른다
How, 즉 어떻게 할 것인지에 관심이 있다What, 즉 무엇을 할 것인지에 관심이 있다.
함수가 부수효과(side-effect)가 있다.함수가 부수효과가 없다.
흐름 제어가 loop와 조건문에 따라 행해진다.흐름 제어(Flow Control)이 함수 호출과 재귀(recursion)에 의해 행해진다.
명령들의 실행 순서가 중요하다명령들의 실행 순서가 그렇게 중요하지는 않다.
병렬 코딩(Parallel coding)이 거의 없다병렬 코딩(Parallel coding) 호환이 잘 된다
profile
코린이 열심히 배우자!

0개의 댓글