절차지향 _객체지향_함수형 프로그래밍

YES31·2023년 3월 1일
0

TIL

목록 보기
24/35

절차지향 (Procedural Programming)

물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리 되어 시간적으로 유리합니다.

  • 장점 : 컴퓨터의 처리구조와 유사해 실행속도가 빠르다.
  • 단점 : 유지보수가 어렵다, 실행 순서가 정해져 있기에, 코드의 순서가 바뀌면 결과가 달라질 수 있다. 디버깅이 어렵다.

객체지향(Object Oriented Programming)

개발하려는 것을 기능별로 묶어 모듈화를 함으로써 하드웨어가 같은 기능을 중복으로 연산하지 않도록 하고, 모듈을 재활용하는 프로그래밍 기법

  • 장점
    같은 기능이 필요한 경우에 같은 객체를 계속 사용할 수 있어 코드의 재사용성이 높음
    코딩이 절차지향보다 간편함
    객체끼리 유기적으로 연결되어 있으나 서로 분리되어 있어 유지보수가 쉬움

  • 단점
    절차지향보다 다소 느린 처리속도
    설계에서 많은 시간이 소요

  • 특징
    1) 추상화 : 공통적인 부분들을 모아둔 것
    2) 캡슐화 : 외부에 내부 데이터나 로직을 노출시키지 않는 것
    3) 상속성 : 부모 객체의 특징을 자식 객체가 이어받는 것
    4) 다형성 : 같은 이름의 함수가 전달받는 인자에 따라 다른 기능을 수행하는 것


함수형 프로그래밍

함수를 기본 빌딩 블록으로 사용하여 프로그램을 구현하는 방식, 상태 변화를 피하고 불변성을 유지하는 방식으로 프로그램을 작성하며, 함수의 조합을 통해 원하는 결과를 얻는 방식으로 동작

  • 장점
    함수의 동작부가 간결해 코드 가독성이 높아짐
    테스트가 쉬움

  • 단점
    외부 혹은 내부 데이터의 상태 조작이 불가능


함수형과 객체지향의 차이

  • 함수형 프로그래밍은 함수 자체가 일급 객체, 객체지향 프로그래밍에서는 클래스나 객체 등이 일급 객체

  • 객체지향 프로그램은 상호작용하는 객체들의 집합으로 프로그램이 구성되지만, 함수형 프로그래밍에서는 상태값이 없는 함수들의 연속으로 구성

profile
🏀 주니어 개발자

0개의 댓글