오늘의 주제
Aiffel LMS : Fundamental 13. 당신의 행운의 숫자는? 나만의 n면체 주사위 위젯 만들기 (Class)
DeepML : CS231n Lecture #2: Image Classification
객체 지향 프로그래밍(OOP: Object Oriented Programming) 이란?
컴퓨터 언어가 생겨나던 초창기에 많은 언어들은 데이터(변수)와 함수만을 표현해 왔습니다. 그런데 조금 큰 프로그램을 작성하다 보니 문제가 생겼습니다. 예를 들어 A라는 자동차와 B라는 자동차를 각각의 변수로 만들고자 한다면 car_a_tire, car_b_tire, car_a_window, car_b_window, ...
처럼 많은 변수들이 같은 계층에서 만들어졌기 때문이에요. 함수 역시 car_a_run(), car_b_run(), car_a_stop(), car_b_stop(), ...
처럼 계속 늘어나야 했습니다. 이렇게 한없이 변수와 함수가 늘어나는 상상만 해도 끔찍한데요.
컴퓨터를 연구하던 사람들은 만약 Car라는 묶음을 만들어 놓고 Car 묶음 안에 tire를 넣어 놓으면 car_a.tire, car_b.tire
처럼 사용할 수 있으니 계층이 달라지고 변수를 무한히 펼쳐 놓지 않아도 된다는 점을 깨닫게 됩니다. 또 함수도 묶음 안에 넣어버리면 car_a.run(), car_b.run()
과 같이 사용할 수 있습니다. 그래서 그 묶음의 형식을 클래스(Class)라고 소개하고 실제로 만들어 낸 각각의 묶음(car_a, car_b
)을 객체(Object)라고 부르게 됩니다. 이후로 이점은 많은 컴퓨터 언어에 기본 아이디어가 됩니다. < 출처:Aiffel LMS >
객체 지향 프로그래밍의 기본 문법
__init__
(인스턴스 객체의 속성을 초기화)