코딩을 처음 배우면서 개념으로만 접한 '클래스'는 감이 잘 안왔다. 아빠 클래스와 자식 클래스를 예로 들면서 설명을 해주는데, 정확히 어떨 때 필요하다는 것인지....
얼마 전, ios에서 게임을 다운받았다. 'Inside'라는 게임이였다. 높은 자유도 그리고 굉장히 자연스러운 그래픽 모션으로 하루만에 게임을 다 깼다. 이런 게임을 만드려면 얼마나 걸릴까? 이 게임에서는 주인공이 마주하는 거의 모든 사물들과 인터랙트가 가능하다. 거의 모두 다. 게임을 하는 플레이어는 즐겁겠지만, 이 기능들을 일일히 다 구현한다고 생각해보면 정말인지 아찔하다. 상상하고 싶지 않다.
이런 경우를 위해 클래스가 존재한다. 일일히 다 적는 대신, 틀을 만드는 거다.
클래스를 만들면, 1) 관련된 객체들을 종목에 따라 정리할 수 있다는 장점과 2) 객체에 필요한 특성과 함수가 반복될 때, 한 번만 적어주면 된다는 장점이 있다.
인사이드 게임에는 거의 모든 물체에 밀기 당기기 기능이 있다.
파이썬 코드로 구현해보면...
# inside 게임
class obj:
def push(self) : #밀 때
print('pushed')
def pull(self) : #당길 때
print('pulled')
class box(obj) :
'''box'''
def push(self) :
#super는 자식클래스의 변수가 부모 클래스가 갖고 있는 변수와 이름이 같을 때, 오버라이딩을 방지한다
#클래스의 장점을 보여주는 취지와는 맞지 않지만, super의 기능 소개를 위해 적어두었다.
super().push()
class ball(obj) :
'''ball'''
def push(self) :
print('rolling')
box_in_wood = box()
box_in_wood.push()
box_in_wood.pull()
ball_in_lab = ball()
ball_in_lab.push()
ball_in_lab.pull()
'CODES' 카테고리의 다른 글
defaultdict (0) | 2020.03.30 |
---|---|
Back Propagation (역전파) (0) | 2020.03.26 |