TIL Day56 객체지향/ 절차지향/ 함수형

Colleen·2023년 5월 17일
0
post-thumbnail

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

일이 진행되는 순서대로 프로그래밍하는 방법

  • 장점
    코드의 가독성이 좋음.
    컴퓨터의 처리구조와 비슷해 실행 속도가 빠름.

  • 단점
    각각의 코드가 순서에 민감하게 연결 되어있어, 유지보수 및 분석이 어려움.

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

모든 데이터를 객체(Object)로 취급하고,객체가 처리 요청을 받았을 때, 객체 내부에 있는 기능을 사용해 처리하는 방법이다.
서로 연관되어있는 함수와 변수들을 객체라는 것으로 그룹화 한다.
그 객체에 들어있는 함수들을 호출해서 다른 함수들과 분리/구분해줌.

4가지 특징존재한다.
1. 추상화 : 공통적인 속성이나 기능을 묶어서 이름을 붙이는 것
2. 캡슐화 : 데이터를 은닉하고 데이터 기능을 노출시키지 않음.
3. 상속성 : 상위 부모 객체의 속성과 특징을 하위 객체가 물려 받는 것.(만약 어떠한 객체가 이미 존재하는 객체의 특성을 가지고 있다면, 기존 객체의 특성을 상속시켜 만들 수 있음.)
4. 다형성 : 같은 함수가 있어도 매개변수에 따라 각자 다른 일을 하는 것

  • 장점
    코드의 재사용이 가능.(확장, 유지보수에 용이!)
    분석과 설계의 전환이 쉬움.

  • 단점
    처리 속도가 상대적으로 다소 느림.
    설계에 많은 시간이 소요됨.

  • 객체지향 프로그래밍 언어: 자바

함수형 프로그래밍

"순수 함수"를 사용해, 상태를 제어하기보단, 빨리 처리하는데 초점을 둔 방법
실행 순서를 지정할 필요가 없기 때문에 비절차형 언어라고도 함!

순수 함수란?
동일한 입력값을 넣었을 때 항상 동일한 리턴값을 반환하며 외부에 영향을 받지 않는 함수를 의미한다. 외부에 영향을 받지않는다. 함수의 실행이 프로그램에 영향을 주지 않는다.
비상태 불변성 유지한다.
-> 여러가지 동시다발적인 멀티쓰레딩 환경에서도 안정적으로 동작할 수 있다고 한다.

예제 코드

// 순수 함수
  function func(a, b) {
            return a + b; // 인자로 들어온 값만 참조해, 리턴값을 생성
  }

  // 비순수 함수
  function func(a, b) {
            return a + b + c; // 외부 요인(c)에 따라 리턴값이 변경됨
  }
  • 장점
    함수의 동작부가 간결해지기 때문에, 객체지향 프로그래밍에 비해 코드 이해도와 가독성이 좋아짐.
    테스트가 쉬움.

  • 단점
    외부 데이터 혹은 내부 데이터의 상태를 조작할 수 없음.

profile
이상한 나라의 개발하는 예대생

0개의 댓글