지금까지 공부해 온 코틀린 기본적인 내용들로, 좀 더 큰 예시를 연습해보자.
" 플레이어가 영화 제작자의 역할을 하는 작은 게임을 만든다고 생각해보자 "
------- 게임 내용 구상 -------
1) 영화 기획하기
: 플레이어는 영화 하나를 기획합니다.
=> 감독, 장르, 예산, 주연 배우 등을 고려해
2) 영화 제작하기
: 고려된 내용을 바탕으로 영화 하나가 제작됩니다.
=> 영화 제작 비용( 감독, 배우등 의 급여) 이 플레이어의 계좌에서 삭감됩니다.
3) 영화의 평점 계산하기
: 영화의 평점이 아래 사항에 맞춰 계산됩니다.
=> 주연배우에게 맞는 장르였는가?
=> 감독이 선호하는 주연배우 중 하나였는가?
=> 주연배우와 감독은 많은 경험을 가지고 있는가?
4) 경험값 모으기
: 배우와 감독은 작품이 하나 끝날때마다, 경험값을 모읍니다.
=> 각 사람마다 배우는 경험값은 다르며, 배우는 속도또한 다릅니다.
=> 각 사람마다 배울 수 있는 한계치가 존재합니다.
5) 수입 정산
: 영화의 평점에 맞춰 플레이어의 계좌에 수입이 들어옵니다.
6) 다음 라운드
: 영화 하나의 제작이 끝나면, 바로 다음 영화를 기획해 제작이 가능해집니다.
------- ------- ------- ------- -------
먼저 본격적인 프로그래밍을 시작하기 전에 전반적인 구조를 생각해야 한다.
어떤 객체들이 사용될 것이며, 그 객체들이 가져야 할 속성들에 무엇이 있는지,
객체들간의 관계는 어떤지, 속성들에 어떤 자료형이 가장 잘 어울릴 것인지,
어떤 함수가 필요한지,... 등
그럼 구상을 대략적으로 해보자.
구상이 어느정도 되었다면, 이제 클래스 사이의 관계와 클래스 구조를 생각해봐야 한다.
마지막으로 Obeject의 Structure를 그려보자면,
(회색화살표는 참조화살표다)
firstMovie 오브젝트를 생성했다고 해보자. 이 firstMovie는 클래스 Movie 의 구체적인 객체를 참조하고 있으며, 이 Movie 클래스는 budget, cost등과 같은 속성들과 더블 자료형의 리스트로 이루어진 genre로 이루어져 있다. 이 외에도 mainActor 와 director 란 속성을 가지고 있다. (참고로, 변수의 이름은 소문자로 클래스의 이름은 대문자를 시작으로 둘에 차이를 준다. 이는 이렇게 해야한다는 규칙일 뿐이지 Syntax Error에 적용되지 않는다. 소문자로만 클래스의 이름을 정해도 된다는 얘기이지만, 이 경우 코드를 읽는 사람이 헷갈리게 될 수 있으니, 가급적 규칙을 준수하는 편이 좋다)
Director 클래스는 모든 director 객체들의 전반적인 구조를 정의한다. 클래스 Movie 내 director는 참조변수로 구체적인 director 객체를 참조한다. 모든 영화는 한명의 mainActor를 가지고 있다. 이 mainActor 속성은 Actor클래스의 객체를 참조한다. 추가로 director의 객체는 Actor 를 참조한다. 이 참조된 Actor는 preferredActor 속성에 저장된다.
++
이 번 예시들로 하나의 객체가 다른 객체들로 구성될 수 있음을 볼 수 있는데, 객체 중에서도 다른 객체를 참조할 수 업는 객체가 존재한다. 이런 객체들을 Atomare Objekte 라 부른다. 예로 Int-, Double-, String 오브젝트들이 있다.
출처:
내용 / 도움준 곳: 학교 교수님 (Christian Kohls) 강의
'언어 > Kotlin' 카테고리의 다른 글
Kotlin : Movie Maker produce() 함수 (0) | 2022.10.19 |
---|---|
Kotlin : Movie Maker 일단 클래스부터 (0) | 2022.10.19 |
Kotlin : 간단한 for 과 while, do..While 문의 이용 (0) | 2022.10.13 |
Kotlin : 리스트 (list) (0) | 2022.10.12 |
Kotlin : Setter 와 Getter 1.5 (0) | 2022.10.12 |