모두들 안녕하세요~.

벌써 주말이 돌아왔군요. 하는 일도 없는데 왜 이리 주말이 반가운지…

 

오늘부터 알아볼 것은 객체지향이라는 프로그래밍 방법을 파이썬에서는 어떻게 할 수 있는가에 대해서입니다.

객체지향이라는 것은 프로그램을 작성할 때 좀 더 사람이 생각하는 방식에 가깝게 할 수 있도록 도와주는 방법이지요.

 

기존의 프로그래밍 방법에서는 프로그램이 어떤 일을 하고나서, 그 다음엔 어떤 일을 하고, 또 그 다음엔 뭘 하라는 식으로 컴퓨터가 해야 할 일을 알려주기에 바빴습니다.

그런데, 객체지향 프로그래밍에서는 프로그램을 작성할 대상이 되는 실제 세계의 사물(객체)을 그대로 표현하고, 그것들이 어떻게 움직이는지 정해주고 나서야 비로소 그 객체들에게 일을 시킨답니다.

객체지향 프로그래밍을 잘 사용하면 보다 좋은 프로그램을 빨리 만들 수 있고, 나중에 수정하기도 편해진다고 합니다.

 

프로그래밍 언어들이 모두 객체지향적인 것은 아니지만 요즘에 주로 사용되는 것들은 객체지향을 제공하는 것이 많습니다.

Java와 C++가 대표적인 객체지향 언어이지요.

저는 혼자 공부를 하다보니 C++를 어떻게 읽어야하는지 잘 모르겠더군요. 보통 씨쁠쁠이라고도 하고 씨 플러스 플러스라고도 하더라구요… ^^

 

Java는 프로그램을 작성할 때 무조건 클래스를 만들기 때문에 처음 공부하기에는 조금 부담스럽지만 몇 달 공부했더니 머리가 객체지향적으로 바뀌어버립디다.@@;

C++는 꼭 객체지향적으로 프로그래밍할 필요는 없지만, 배우기는 더 어렵죠.

 

파이썬은 어떨까요?

배우기는 제일 쉽구요, 꼭 객체지향적으로 작성하지 않아도 됩니다.

다시 말씀드려서, 앞으로의 강좌를 보지 않으셔도 간단한 프로그램을 작성하는데 문제가 없다는 것이죠.

 

하지만 객체지향에 대해 이해하시고 나면 파이썬으로 윈도우 프로그래밍을 하거나, 복잡한 프로그램을 작성하는데 많은 도움이 된답니다.

, 다른 프로그래밍 언어를 이해하기도 수월해지지요.

 

그럼 함께 시작해보실까요?

 

객체(object, instance)는 실제로 존재하는 사물을 일컫는 말이구요, 클래스(class)는 그런 사물들을 개념적으로 부르는 말입니다. 말이 조금 어렵지만 별 것 아닙니다.

예를 들어보겠습니다.

 

‘서태지’는 실제로 존재하죠?

‘리키 마틴’도 실제로 존재하죠?

두 분 다 실제로 존재하는 객체입니다.

 

두 분의 공통점은 무엇일까요?

여러 가지를 들 수 있겠지만 둘 다 ‘가수’라는 공통점을 갖고 있지요.

 

‘가수’라는 물체가 실제로 존재할까요?

그렇지는 않습니다.

하지만 우리는 ‘노래 부르는 것을 업으로 삼는 사람’을 ‘가수’라고 말합니다.

‘가수’는 ‘노래 부르는 것을 업으로 삼는 사람’이라는 개념을 나타낸 클래스가 되는거죠.

 

다른 예를 들어볼까요?

‘사과’는 클래스이구요, ‘내가 엊저녁에 먹은 사과 다섯 개 중에 두 번째 것’이라고 콕 찍어서 말해주면 객체로 봐줄만합니다.

 

‘좋은 집’은 객체일까요?

‘좋은 집’은 한 두 군데가 아니니까 클래스라고 하는 것이 좋을 것 같군요.

그럼 ‘우리 집’은 객체일까요?

‘집’이라는 클래스의 한 객체인 것 같기도 하고, 집을 여러 채 가진 사람을 생각해보면 클래스라고 하는 것이 맞는 것 같기도 하네요.

프로그램 작성을 위해 객체를 설계하다보면 이런 애매한 문제를 만날 때도 있지요.

 

이제 파이썬으로 클래스와 객체를 표현해보도록 하겠습니다.

>>> class Singer:                      # 가수 클래스를 정의하겠느니라…

...     def sing(self):                # 노래하기 메쏘드

...            return "Lalala~"

...    

>>> taeji = Singer()                   # 태지 객체를 만들어랏!

>>> taeji.sing()                       # 노래 한 곡 부탁해요~

'Lalala~'

 

클래스를 만들 때는 위와 같이‘class 클래스이름:’ 형식으로 시작해서 그 다음부터 그 클래스의 성질이나 행동을 정의해주면 됩니다.

둘째 줄에는 함수가 정의되어 있죠?

이것과 같이 클래스 내부에 정의된 함수를 메쏘드(method)라고 부릅니다.

여기서 sing 메쏘드는 Singer라는 클래스가 하는 행동을 정의하고 있죠.

 

Singer 클래스를 만든 다음에는 taeji라는 객체를 만들었습니다.

‘객체이름 = 클래스이름()’와 같이 만들면 되죠.

 

그 다음엔 그렇게 만들어진 taeji 객체에게 노래를 시켜봤습니다.

Singer 클래스에 sing 메쏘드를 정의해줬기 때문에 Singer 클래스에 속한 taeji 객체도 sing 메쏘드를 사용할 수 있지요.

다시 말해서 가수는 노래할 수 있으니까 태지라는 가수도 역시 노래를 할 수 있는 것입니다.

이와 같이 어떤 객체의 메쏘드를 사용할 때는 ‘객체이름.메쏘드’ 형식으로 해주면 됩니다.

 

이번엔 같은 방법으로 리키 마틴 객체를 만들어서 노래를 청해보세요.

 

>>> ricky = Singer()

>>> ricky.sing()

'Lalala~'

 

오늘은 여기까지 하도록 하죠.

다른 클래스들도 한번씩 만들어보시기 바랍니다.

즐거운 주말 보내시구요~.

 

将把此主题..