절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?

권성현·2023년 3월 1일
0

면접 준비

목록 보기
17/30
post-custom-banner

현재까지의 프로그래밍 패러다임

절차지향 -> 객체지향 -> 함수형
명령형 프로그래밍 : 무엇(What)을 할 건지를 나타내기보다 어떻게(How)를 할 건지 설명하는 방식

  • 절차지향 프로그래밍 : 수행되어야 할 기능을 순차적인 처리 과정으로 진행하는 방식
  • 객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호작용으로 진행하는 방식
  • 선언형 프로그래밍 : 어떻게(How)를 할 건지를 나타내기보다 무엇(What)을 할 건지 설명하는 방식
    -함수형 프로그래밍 : 순수 함수를 조합하여 소프트웨어를 만드는 방식

절차지향 , 객체지향 , 함수형

절차 지향 프로그래밍(Procedural Programming)

  • 순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
  • 장점
    => 코드의 가독성이 좋다.
    => 코드를 단위화 할 수 있다.
    => 컴퓨터의 처리구조와 비슷해 실행 속도가 빠르다.
  • 단점
    => 각각의 코드가 순서에 따라 실행되어, 변경, 유지보수 및 분석이 어렵다.
    => 변수나 상수 등의 값들을 관리하는 자료형 과 해당 자료형을 사용하는 함수가 분리되어 사용된다.
  • 절차지향 프로그래밍 언어 : C

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

  • 모든 데이터를 객체(Object)로 취급하여, 객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 가져와 사용해 처리하는 기법
  • 모든 객체가 내부의 자료형(Field)와 함수(Method)로 구성된 프로그래밍 구조를 의미.
  • 장점
    => 코드의 재사용이 가능하다.(유지보수에 좋다)
    => 분석과 설계의 전환이 쉽다.
  • 단점
    => 처리 속도가 상대적으로 느리다.
    => 설계에 많은 시간이 소요된다.
  • 4가지 특정
    => 추상화 : 공통된 속성에만 중점을 두어 모델화
    => 캡슐화 : 데이터와 함수를 하나로 묶는 것
    => 상속성 : 상위 부모 객체의 속성과 특징을 하위 객체가 물려받는 것
    => 다형성 : 같은 함수가 있어도 매개변수에 따라 각자 다른 일을 하는 것
  • 객체지향 프로그래밍 언어 : Java, Python

함수형 프로그래밍(Functional Programming)

  • 순수 함수를 사용해, 상테를 제어하기보단, 빠르게 처리하는데 초점을 둔 방법.
  • 실행 순서를 지정할 필요가 없어 비절차형 언어라고도 한다.
  • 장점
    => 코드에서 프로그램의 실행에 영향을 미치는 영역과 순수한 영역을 최대한 분리한다.
    => 코드의 가독성이 높아지고, 유지보수가 좋아진다.
    => 테스트가 쉬워진다.
  • 단점
    => 외부 데이터 혹은 내부 데이터의 상태를 조작할 수 없다.
  • 함수형 프로그래밍 언어 : Haskell, OCamal 등

각 프로그래밍 비교

절차 지향 프로그래밍 vs 객체지향 프로그래밍

  • 절차지향 프로그래밍이 가지고 있는 부족함을 객체지향 프로그래밍이 보완해주는 역할.
  • 절차 지향, 객체지향 프로그래밍 둘 다 함수가 있지만, '객체'라는 개념이 등장함.
  • 절차 지향은 데이터 중심, 객체지향은 기능 중심.

❗❗ 참고❗❗
절차 지향의 반대는 객체지향이 아니고 객체지향의 반대는 절차 지향이 아님.

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

  • 객체지향 프로그래밍에서는 "클래스"가 일급 객체가 되지만, 함수형 프로그래밍에서는 "함수"가 일급 객체가 된다.
  • 객체지향에서는 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있지만, 함수형에서는 프로그램을 상태 값을 지니지 않는 함수들의 연속으로 볼 수 있다.
    객체지향 프로그래밍의 경우
    => 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다.
    => 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가진다.
    => 멤버변수가 어떤 상태를 가지고 있는가에 따라 결과가 달라진다.
    함수형 프로그래밍의 경우
    => 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다.
    => 함수는 인자로 받은 값을 별도로 저장하지 않고, 간결한 과정으로 처리하고 매핑하는데 목적을 둔다.
profile
개발일지
post-custom-banner

0개의 댓글