[Python] 그림판 만들기

python from scratchObject Oriented Programming

파이썬으로 그림판 프로그램을 만들어 봅시다.

그림판 프로그램의 특징

이번에 만들어 볼 그림판 프로그램의 특징은 크게 2가지 입니다.
첫째는 마우스의 움직임에 따라 동작하는 프로그램이라는 점입니다. 계산기 프로그램은 대부분의 기능이 키보드 입력이나 버튼 클릭에 의해 동작했지만, 그림판 프로그램은 마우스 버튼을 누르고, 떼는 동작과 마우스를 움직이는 것에 반응하는 프로그램입니다. 그래서 마우스에서 발생하는 이벤트를 처리하는 방법을 알아야 합니다.
둘째는 이번에 객체지향 프로그래밍을 시도해 볼 거라는 점입니다. 객체지향 프로그래밍은 우리가 컴퓨터에게 명령을 내릴 때 객체를 중심으로 명령을 내리는 방식입니다. 좀 더 자세한 설명을 해보겠습니다.

객체지향 프로그래밍

객체지향 프로그래밍은 Object Oriented Programming을 번역한 말입니다. 프로그래밍인데, 객체 지향적이라는 것입니다.

프로그래밍에서 객체라는 것은 일반적인 단어들 중에서는 ‘개념’에 가깝다고 생각합니다.

사실 우리는 개념을 사용해서 많은 일들을 단순하게 처리합니다. 예를 들어 친구 A에게 전화를 걸어야 할 때, ‘손을 움직여 전화기를 켜고, 친구 A의 전화번호를 앞자리부터 순서대로 입력하고 통화버튼을 누른다’는 식으로 생각하지 않습니다.
‘친구 A’에게 전화를 ‘건다’고만 생각합니다. 우리 머리속에서 전화기를 켜는 부분은 아예 생략되었고, 전화번호를 입력하는 부분은 단순화되었습니다.

객체지향 프로그래밍은 이러한 단순화를 프로그래밍에서도 활용하는 것입니다. 달성하고 싶은 목표를 달성하기 위해 필요한 여러가지 개념을 객체로 구현하고, 그 객체를 활용하여 목적을 달성하는 것입니다.

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

단순한 프로그램인 경우에는 굳이 객체지향적인 프로그래밍을 할 필요가 없습니다.
‘여기 있는 짐을 저기로 옮겨’라고 말할 때에는 굳이 이런저런 개념이 필요하지 않는 것과 마찬가지입니다.

그렇지만, 건물을 짓기 위해서는 여러가지 개념들이 필요합니다. 기반공사부터 시작해서, 골조, 전기, 통신, 난방, 인테리어로 공사의 개념을 나누고, 각각의 공사를 성공적으로 마무리하기 위한 여러가지 개념들을 도입해야 합니다. 건물을 짓기 위해 필요한 모든 작업을 일일히 지시하는 것은 불가능합니다.

마찬가지로, 복잡한 기능을 하는 프로그램을 만들기 위해서는 거의 필수적으로 개념화가 필요합니다. 객체지향 프로그래밍은 개념화를 하는 방법론입니다.

왜 객체지향 프로그래밍을 알아야 하나요?

뭐 그런 내용인 것은 알겠는데, 프로그래머가 될 것도 아닌 우리가 객체지향 프로그래밍에 대해서 배워야 할까요?
그건 프로그래머가 생각하는 방식을 이해하고, 좀 더 원활하게 의견을 공유하기 위해서 입니다.
우리와 다른 방식으로 세상을 바라보는 사람들이 있다면 단순히 그 사람들은 우리와 다르니까 이상해 라고 말하기보다 그들의 문화를 이해하기 위해 노력할 필요가 있습니다.
특히 그들이 우리와 함께 일해야 하는 사람들이라면 더욱 그렇습니다.

그렇지만 솔직히 말씀드려서 이게 모든 사람에게 정말 반드시 필수적인 개념이냐? 그렇진 않습니다.
그렇지만 IT를 활용해서 더 좋은 정책을 만들고 싶은 사람에게는 도움이 되는 내용임에는 틀림없습니다.

객체지향 프로그래밍을 배우는 방법

배우는 방법은 단 하나입니다. 객체지향 프로그래밍 방식으로 프로그램을 만들어보는 것입니다.
객체지향 프로그래밍 방식으로 만들 수 있는 프로그램 중에서 가장 쉬운 것이 바로 그림판 프로그램이기 때문에 그림판을 만들어보겠습니다.

파이썬으로 그림판 만들기 1/4 (21분)
파이썬으로 그림판 만들기 2/4 (38분)
파이썬으로 그림판 만들기 3/4 (25분)
파이썬으로 그림판 만들기 4/4 (34분)
다운로드용 완성 코드