자 그러면 생각 해 봅시다.
위에서 설명한 GamePlayer 클래스를 구성한다고 가정합니다. 각 플레이어는 playerName x y 좌표를 가지고 각각 특정 좌표 x,y 로 움직이거나, 이름을 개명하거나, 원점으로 이동할 수 있습니다. 이러한 상황에서 PlayerA와 PlayerB가 존재할때, A는 5,5 좌표로, B는 10,10 좌표로 이동 해 봅시다.
대표적인 사례들
여러분들은 위 문구를 구현하기 위해 클래스를 어떤식으로 구성하셨나요?
보통 클래스 방식에 익숙치 않는다면, 다양한 실수를 하곤 합니다. 다양한 실수 사례를 통해 왜 이 방법이 좋지 않은지 알아봅시다.
대표적 예시 : 한 클래스에 모든 걸 담아내려고 하는 경우
위 문구에서 PlayerA PlayerB가 존재한다는 사실에만 집중하면 원래 의도하는 클래스의 목적을 상실할 수 있습니다. 다시 말하지만 클래스는 같은 작업들을 기능 단위로 묶어내고 동일한 패턴 및 작업에 대해서 객체로 여러개 생성하여 효율적으로 사용하기 위함입니다.
from GamePlayer import GamePlayer
from GamePlayerCollection import GamePlayerCollection
colleciton = GamePlayerCollection()
for x in range(100):
colleciton.addPlayer(GamePlayer(str(x)))
메인 영역에서는 단순히 GamePlayerCollection 객체를 하나만 만들어서, 이 객체 안에 GamePlayer객체를 모조리 추가 해주고 있습니다. 그렇게 되면 하나의 GamePlayerCollection 객체 안에 100개의 GamePlayer객체가 담기게 됩니다. 이제, 이 상황에서 모든 GamePlayer들에 대해서 특정 좌표로 이동시키는 메소드를 GamePlayerCollection안에 만듭니다.