잘못 된 내용에 대한 지적은 언제든 환영입니다.

객체 지향형 프로그래밍

  • 프로그래밍 페러다임의 종류 중 하나로, 명령형 프로그래밍에 속한다.
    • How(어떻게)에 초점을 두었다. 즉, 원하는 목적을 달성하기 위한 과정을 중요시하는 프로그래밍이라고 할 수 있다.
    • 작동에 필요한 알고리즘을 제어문상태 변화로 표현한다.
  • 객체를 정의하고 각각의 객체에 대한 역할을 부여하며, 객체끼리 서로 상호작용을 통해 로직을 이룬다.

객체 지향 프로그래밍의 네가지 특징

  • 상속 : 부모의 상태와 메소드에 접근할 수 있다.
  • 캡슐화 : 은닉화라고도 부르며, 객체의 상태나 메소드를 외부에서 접근할 수 없는 것을 의미한다.
  • 추상화 : 실행 대상 객체의 공통적인 특징을 도출하는 것을 말한다.
    👉 객체 지향 언어에서 클래스를 정의하는 것 자체를 추상화라고 할 수 있다. 예를 들어, 사자/토끼/고양이 인스턴스는 모두 숨쉬기/걷기/먹기 같은 동작을 하는 동물이라는 클래스로 묶을 수 있다.
  • 다형성 : 약간 다른 동작을 하는 메소드를 동일한 이름으로 호출하는 것을 의미한다.
    👉 부모로부터 상속받은 메소드를 덮어씌워서, 약간 다른 동작을 하는 메소드를 자식 클래스에 정의하더라도 해당 메소드명으로 호출하면 부모든 자식이든 해당 이름의 메소드가 호출된다.

객체 지향 프로그래밍의 장/단점

  • 장점
    - 프로그래밍 생산성 향상 : 이미 만들어진 객체를 상속을 받아 인스턴스를 만들어 낼 수 있기에 생산성이 향상된다.
    • 보안 향상 : 캡슐화로 인한 상태 및 데이터 은닉으로 보안성이 향상된다.
  • 단점
    - 느린 속도 : 캡슐과의 격리 구조로 인해 절차지향에 비해 속도가 느리다.

함수형 프로그래밍

  • 프로그래밍 패러다임의 종류 중 하나로, 선언형 프로그래밍에 속한다.
    - What(무엇을)에 초점을 두었다. 즉, 원하는 목적에 대한 선언을 중요시하는 프로그래밍이라고 할 수 있다.
    • 작동에 필요한 알고리즘은 코드만 보고는 알 수 없으며, 제어문의 사용과 상태 변화를 억제하여 부수 효과(side-effect)를 방지한다.
  • 순수 함수(부수 효과가 없는 함수)와 보조 함수의 조합을 통해, 부수 효과를 피하는 방향으로 로직을 이룬다.

함수형 프로그래밍의 장/단점

  • 코드 예측의 편리성 : 상태 변화가 없는 불변성을 지향하기 때문에, 코드 예측이 간편해진다.
  • 간결한 코딩 : 간결한 구조의 프로그래밍에 유리하다.
  • 높은 수준의 추상화 : 추상화를 객체들의 공통적인 특징을 도출하는 것이라고 정의할 수도 있으나, 복잡한 것을 단순화한다는 의미 또한 될 수 있다. 함수형 프로그래밍은 복잡한 알고리즘을 단순한 함수의 조합으로 표현한다.

References
"객체 지향" .incodom
"객체지향개발(OOP) 개념 정리" .shaking
"기존의 사고 방식을 깨부수는 함수형 사고" .Evan Moon

0개의 댓글

Powered by GraphCDN, the GraphQL CDN