OOP & FP

majungha·2023년 4월 26일
2

메모

목록 보기
43/57

오늘의 공부 👍

오늘은 OOP와 FP에 대해서 알아보겠다.

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


  • Object-Oriented Programming의 약자이며, 객체지향 프로그래밍을 뜻한다.
  • 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 객체(object) 라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.

▷ 특징

  • 캡슐화(encapsulation)

    • 변수와 함수를 하나의 단위로 묶는 것을 의미한다.
  • 정보 은닉(information hiding)

    • 프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈 내부로 감추는 것이다.
    • 클래스 외부에서는 바깥으로 노출된 특정 메소드에만 접근이 가능하며 클래스 내부에서 어떤 식으로 처리가 이루어지는지는 알지 못하도록 설계된다.
    • 일반적으로 세 종류의 접근 제한이 사용된다.
      1. public - 클래스의 외부에서 사용 가능하도록 노출시키는 것이다.
      2. protected - 다른 클래스에게는 노출되지 않지만, 상속받은 자식 클래스에게는 노출되는 것이다.
      3. private - 클래스의 내부에서만 사용되며 외부로 노출되지 않는다.
  • 상속(inheritance)

    • 자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것을 말한다.
    • 캡슐화를 유지하면서도 클래스의 재사용이 용이하도록 한다.
  • 다형성(polymorphism)

    • 하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될 수 있는 것을 말한다.
    • 서브타입 다형성(subtype polymorphism / inclusion polymorphism / subtyping)
      • 기초 클래스 또는 어떠한 인터페이스를 구현하는 상위 클래스를 생성하고, 해당 클래스를 상속받는 다수의 하위 클래스들을 만들어 상위 클래스의 포인터나 참조변수 등이 하위 클래스의 객체를 참조하게 하는 것이다.
    • 매개변수 다형성(parametric polymorphism)
      • 타입을 매개변수로 받아 새로운 타입을 되돌려주는 기능이다.
      • 타입 매개변수를 정의한 클래스 혹은 메소드는 사용할 때 매개변수에 타입을 지정하게 되며, 컴파일 시 지정한 타입에 따라 해석된다.
    • 임시 다형성(ad hoc polymorphism)
      • 함수 오버로딩(function overloading)
      • 연산자 오버로딩(operator overloading)
    • 강제 다형성(coercion polymorphism)
      • 묵시적 형 변환(implicit type coercion)
      • 명시적 형 변환(explicit type coercion)

📝 FP (함수형 프로그래밍)


  • Functional Programming의 약자이다.
  • 프로그래밍의 여러가지 패러다임중 하나이다.
  • 함수의 조합으로 작업을 수행하며, 이 작업이 이루어지는 동안 작업에 필요한 데이터와 상태는 변하지 않는다.
  • 일반적으로 함수형 프로그래밍은 문제가 되는 함수만 고치면 되기 때문에 디버깅이나 테스트가 용이하다고 알려져있다.
  • 함수형 프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법으로 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.

▷ 특징

  • 불변성(Immutability)

    • 변경할 수 없는 객체란 객체를 생성한 후에 수정할 수 없는 객체이다.
    • 반대로, 변경 가능한 객체는 생성된 후에 수정할 수 있는 객체이다.
  • 공유 상태(Shared State)

    • 공유 범위(shared scope) 내에 있는 변수, 객체 또는 메모리 공간이거나 범위 간에 전달되는 객체의 속성이다.
    • 공유 범위에는 전역 범위 또는 클로저가 포함될 수 있다.
  • 부작용(Side Effects)

    • 반환값 이외에 호출된 함수 밖에서 관찰할 수 있는 애플리케이션 상태 변화입니다.
  • 고차함수를 통한 재사용성(Reusability Through Higher Order Functions)

    • 고차 함수 는 함수를 인수로 취급하거나, 함수를 반환하거나 또는 둘 다인 함수입니다. 고차 함수는 종종 다음과 같은 목적으로 사용된다.
      - 콜백 함수, 프로미스, 모나드 등을 사용하여 액션, 효과 또는 비동기 흐름을 추상화하거나 분리시킨다.
      - 다양한 데이터 타입에 대해 동작할 수 있는 유틸리티를 만든다.
      - 합성 함수나 재사용의 목적으로 커링 함수를 만들거나 인수를 함수에 부분적으로 적용한다.
      - 함수 목록을 가져오고, 입력 함수의 합성을 반환한다.

출처 및 참고
Jeremy's Blog
wikipedia
나무위키

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글