객체 지향 프로그래밍 (OOP)
📖 개념 설명
객체 지향 프로그래밍은 현실 세계의 사물을 코드로 표현하는 방법입니다.
핵심 개념:
- 클래스: 설계도 (예: 자동차 설계도)
- 객체: 실제 물건 (예: 내 자동차)
- 캡슐화: 관련된 것들을 하나로 묶기
- 상속: 부모 클래스의 기능을 물려받기
테트리스 예시:
TetrisBlock클래스: 블록의 설계도 (위치·셀 같은 멤버와 MoveLeft, Rotate 같은 메소드)GameBoard클래스: 게임 보드의 설계도- 각각 독립적으로 작동하지만 서로 협력함
💡 용어: 클래스 안의 변수 = 멤버, 클래스 안의 함수 = 메소드.
왜 클래스에 넣는지, “저장소를 다루는 함수”가 뭔지는 멤버와 메소드 문서를 참고하세요.
🛠️ 실습: 두 클래스가 협력하는 구조 만들기
목표: GameBoard와 Block 두 클래스가 서로 참조하여 동작하는 것을 확인합니다.
이 실습 전용 씬 만들기 (환경 설정)
먼저 이 실습 전용 씬을 만든 뒤 아래 순서로 진행합니다. (자세한 씬 만드는 방법은 개념 실습 테스트 환경 가이드의 씬 만드는 방법 참고.)
이 실습만 할 전용 씬이 없으면 아래 순서로 한 번만 만듭니다. (이미 ConceptTest_OOP 씬이 있으면 File → Open Scene으로 열고 아래 실습만 이어서 하세요.)
- File → New Scene → Basic (Built-in) 또는 Empty → Create
- File → Save As → 저장 위치: Assets/Scenes → 파일 이름: ConceptTest_OOP → Save
- 아래 실습은 모두 이 씬에서 진행합니다. (다른 문서로 왔다 갔다 하지 않습니다.)
수행 과정
- Unity에서 새 C# 스크립트 생성
- 이름:
OOPTest
- 이름:
- 다음 코드 작성 ```csharp using UnityEngine;
public class OOPTest : MonoBehaviour { void Start() { // “게임 보드” 객체 생성 SimpleBoard board = new SimpleBoard(); board.width = 10; board.height = 20;
// "블록" 객체 생성
SimpleBlock block = new SimpleBlock();
block.x = 5;
block.y = 19;
// 보드가 블록 위치가 유효한지 확인 (협력)
bool valid = board.IsValid(block.x, block.y);
Debug.Log("블록 위치 (5, 19) 유효? " + valid);
block.x = 99; // 범위 밖
valid = board.IsValid(block.x, block.y);
Debug.Log("블록 위치 (99, 19) 유효? " + valid);
} }
public class SimpleBoard { public int width; public int height;
public bool IsValid(int x, int y)
{
return x >= 0 && x < width && y >= 0 && y < height;
} }
public class SimpleBlock { public int x, y; } ```
- Play 후 Console 확인
- (5, 19) 유효? True, (99, 19) 유효? False 출력
- → 보드와 블록이 서로 협력하는 구조를 확인!