CS
간단하게 분류하는 함수형과 객체지향 방식의 공통점과 차이점

함수형 프로그래밍 과 객체지향 프로그래밍의 공통점과 차이점

[oop에 대한 사진]

공통점

  • 추상화: 객체지향 패러다임과 함수형 패러다임은 모두 추상화를 통해 복잡한 시스템을 단순화하고 모듈화할 수 있습니다. 추상화를 통해 개발자는 문제를 해결하기 위한 핵심 개념과 동작을 잘 정의할 수 있습니다.
  • 모듈화: 객체지향 패러다임과 함수형 패러다임은 모듈화를 통해 코드의 재사용성과 유지보수성을 향상시킵니다. 코드를 작은 단위로 분리하여 개별적으로 구현하고, 이러한 모듈을 조합하여 큰 시스템을 구축할 수 있습니다.
  • 캡슐화: 객체지향 패러다임과 함수형 패러다임은 모두 캡슐화를 지원합니다. 데이터와 관련 함수를 하나의 단위로 묶어서 정보 은닉을 통해 데이터의 무결성을 보호하고 코드의 안정성을 향상시킵니다.

차이점

  • 상태 관리: 객체지향 패러다임은 객체의 상태와 상태를 변경하는 메서드를 중심으로 개발을 진행합니다. 객체는 데이터와 그 데이터를 조작하는 메서드로 이루어져 있으며, 상태를 변경하는 것을 강조합니다. 반면 함수형 패러다임은 변경 가능한 상태를 피하고, 상태 변경 대신 데이터의 변환을 강조합니다. 함수형 패러다임은 함수를 일급 객체로 취급하여 순수 함수를 작성하고, 상태 변경을 피하고 불변성을 지향합니다.
  • 부작용: 객체지향 패러다임은 상태 변경을 통해 부작용을 발생시킬 수 있습니다. 객체의 메서드를 호출하면 객체의 상태가 변경될 수 있고, 이로 인해 예기치 않은 부작용이 발생할 수 있습니다. 함수형 패러다임은 부작용을 피하고 순수 함수를 사용하여 입력에 대한 결과를 반환하는 것을 강조합니다.
  • 프로그래밍 스타일: 객체지향 패러다임은 객체 간의 상호작용에 중점을 두고 프로그래밍을 진행합니다. 객체들이 메시지를 주고받으며 협력하여 작업을 수행합니다. 함수형 패러다임은 함수의 조합과 변환을 중심으로 프로그래밍을 진행합니다. 데이터를 입력받아 함수를 통해 변환하고 조합하여 원하는 결과를 얻습니다.

요약 (차이점)

  • 객체지향에서는 상태의 변화를 강조, 하지만 함수형은 변환을 막음 불변성을 지향
  • 객체의 상태가 변함으로 인해 예상치 못한 문제가 발생 가능, 하지만 함수형 은 부작용을 최대한 피하고, 똑같은 입력에 대한 동일한 결과를 반환하는것이 목표, 즉 객체지향에서는 객체의 상태변화에 따라 똑같은 함수에 대해서 다른 결과가 발생할 수 있음