2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[백엔드] 기술 면접 Top30 - #20 클래스형과 함수형의 차이 C++

2023. 9. 30. 13:44ㆍ[백엔드] 기술면접
반응형

클래스형과 함수형

 

 

클래스형과 함수형

클래스형과 함수형은 프로그래밍 언어에서 코드를 구조화하고 모듈화하기 위한 두 가지 주요 접근 방식이다.

클래스형 ( Object-Oriented Programming, OOP )

 

  • 클래스와 객체 지향 프로그래밍의 개념을 기반으로 한다. 
  • 데이터와 해당 데이터를 조작하는 함수(method)를 함께 묶어서 객체를 생성한다. 
  • 객체 간의 관계를 형성하고, 데이터 캡슐화 및 추상화를 통해 코드의 모듈성과 재사용성을 높인다. 
  • 클래스는 멤버 변수(속성)와 멤버 함수(메서드)로 구성되며, 멤버 함수는 해당 클래스의 데이터를 조작하거나 상호 작용한다. 
// 예시
class Car {
public:
    string color;
    int speed;

    void accelerate() {
        // 가속 로직
    }

    void brake() {
        // 제동 로직
    }
};
  • 클래스를 사용하여 자동차 객체를 만들고, 자동차의 속성(색상, 속도 등)과 동작(가속, 제동 등)을 나타냄

함수형 ( Functional Programming, FP )

 

  • 함수가 일급 객체로 취급되며, 함수를 변수에 할당하거나 다른 함수의 인자로 전달할 수 있다. 
  • 함수형 프로그래밍은 상태 변경을 피하고 불변성을 유지하려고 노력한다. 
  • 함수형 프로그래밍은 주로 순수 함수(pure function)를 사용하며, 같은 입력에 대해 항상 같은 출력을 반환한다. 
  • 부작용(side effect)이 없는 함수를 선호합니다. 반복문 대신 재귀나 고차 함수(higher-order functions)를 사용하여 데이터를 처리하고 변환한다. 
// 예시
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // 함수형 스타일로 리스트의 각 원소를 제곱하는 예제
    std::transform(numbers.begin(), numbers.end(), numbers.begin(),
                   [](int x) { return x * x; });

    for (int num : numbers) {
        std::cout << num << " ";
    }

    return 0;
}
  • 함수형 프로그래밍으로 리스트의 합을 계산하거나, 맵핑 또는 필터링을 수행하는 것이 있다.

요약


C++에서 클래스형 프로그래밍은 객체와 데이터의 함수를 묶어 객체 지향적으로 코드를 작성하는 스타일이며, 함수형 프로그래밍은 함수를 일급 객체로 다루고 불변성을 강조하는 스타일이다.
클래스형은 객체 기반, 상태 변경 가능, 함수형은 함수 중심, 불변성을 강조하며, 두 스타일은 프로젝트 요구사항에 따라 혼합하여 사용될 수 있다.
반응형