학습 매체 : 책
책이름 : 레트로의 유니티 게임 프로그래밍 에센스
저자 : 이제민
본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.
게임 월드 속 사물을 '오브젝트'라고 한다. 온전한 하나의 사물이라고 인식할 수 있다면 어떠한 것도 오브젝트가 될 수 있다. 예를 들어, 게임 상의 캐릭터는 캐릭터 오브젝트, 탄알은 탄알 오브젝트, 바위는 바위 오브젝트라고 할 수 있다.
대부분의 프로그램에서는 '하나의 독립적인 사물'을 오브젝트라는 단위로 표현한다. 그러한 오브젝트들이 상호작용하여 프로그램을 이룬다.
이 장에서 배울 객체지향은 독립적이며 스스로 동작하는 여러 객체(오브젝트)가 모여 거대한 프로그램이 완성되는 구조를 만드는 방법이다. 그리고 그것이 우리가 작성할 유니티 C# 스크립트의 '클래스'가 동작하는 방식이다.
클래스와 오브젝트의 개념과 그것을 어떻게 C# 문법에서 사용하는지 배운다. 또한 변수로 오브젝트의 참조를 가리키는 방식을 통해 게임 오브젝트와 컴포넌트를 여러분 마음대로 조종하는 방법을 배운다.
이 장에서 다루는 내용
- 클래스와 오브젝트의 개념
- C# 클래스로 원하는 사물을 정의
- 오브젝트 생성
- 참조 변수를 사용하여 유니티의 컴포넌트를 조작
클래스와 오브젝트는 객체지향의 핵심이다. 객체지향은 '사람이 현실 세상을 보는 방식'에 가깝게 프로그램을 완성하는 것이다.
일반적으로 사람은 사물을 '하나의 온전한 독립체'로 여기는 경향이 있다.
휴대폰을 예로 들어보자. 휴대폰은 프로세서, 카메라, 디스플레이 등 각종 센서와 엄청난 수의 논리회로로 이루어져 있다. 하지만, 우리는 휴대폰을 여러 부품의 집합으로 여기지 않고 하나의 온전한 물건(오브젝트)으로 본다.
객체지향은 프로그램을 이러한 오브젝트의 집합으로 구성하는 방식이다.
3장에서 클래스(class)를 묘사할(추상화) 대상과 관련된 코드(변수와 메서드 등)를 묶는 틀이라고 했다.
다양한 사물에 관한 코드를 각자의 클래스로 만들어 묶어두면 코드 관리가 훨씬 쉬워진다.
정리하면 클래스는 표현하고 싶은 대상을 추상화하여 대상과 관련된 변수와 메서드를 정의하는 틀이다.
추상화
- 추상화란 대상의 핵심적인 개념과 기능을 추려내는 거다.
Human 클래스는 실제로 존재하는 오브젝트가 아니다. 하지만 Human 클래스라는 틀을 사용해 실제 존재하는 Human 오브젝트를 찍어낼 수 있다.
클래스는 하나만 존재하지만 클래스를 기반으로 생성한 오브젝트는 여러 개 존재할 수 있다는 사실에 주목하자.
클래스라는 틀로 오브젝트를 찍어내 실체화하는 것을 인스턴스화한다고 하며, 인스턴스화를 이용해 생성된 오브젝트를 인스턴스라고 한다.
이 책에서는 오브젝트가 실시간으로 어떤 클래스에서 복제 생성되었다는 사실을 강조하기 위해 때로는 오브젝트를 인스턴스라고 표기한다.
다음 강의에서 계속~