OOP: Object-Oriented Programming

객체지향 프로그래밍이란 무엇인가? 어떤 개념을 알기 위한 좋은 방법 중 하나는 그와 대비되는 개념과의 비교이다.

함수형 프로그래밍

x = [3, 1, 2]
sorted_x = sorted(x)  # 정렬이라는 동작은 함수가 담당

데이터 x와 동작 sorted는 분리되어 있다.

객체지향 프로그래밍

x = [3, 1, 2]
x.sort()  # 리스트 객체 x가 "스스로 정렬"함

데이터 x와 동작 sort가 결합되어 있다.

예시 OOP로 자동차 만들기

class Car:
    def __init__(self, color):
        self.color = color
        self.speed = 0
 
    def drive(self):
        self.speed += 10
        print(f"Driving at {self.speed} km/h")
 
my_car = Car("red")
my_car.drive()   # Car 객체가 "스스로" 달림

결론

  • OOP 스타일은 “데이터와 동작을 객체로 묶는 방식” 을 말함
  • .method() 같은 표현은 *OOP 스타일의 전형적인 표현
  • Python은 OOP 언어이기 때문에, 이런 식의 코딩을 권장함

조금 더 딥하게 들어가보면, 객체.메소드() 클래스.메소드(객체) 이다. 즉, 객체지향의 핵심은 객체가 직접 메소드를 수행하는 게 아니라, 객체에 대한 메소드를 클래스를 통해 호출하는 것을 말한다.

객체지향의 핵심 개념: 객체, 다형성, 캡슐화