구조체와 클래스의 차이가 뭔가요? 비슷해 보이지만 용도의 차이를 모르겠습니다.
객체 지향을 처음 배우다보면 위와 같은 질문을 종종 받는다.
구조체와 클래스는 둘 다 데이터를 구성하고 기능을 정의하는데 사용된다.
둘 다 비슷한 목적을 가지고 있지만 중요한 차이점이 있다.
구조체는 작은 규모의 데이터 구조를 표현할 때 주로 사용된다.
데이터의 조각들을 간직하고 있으며 값 형식으로 데이터를 스택(stack)에 저장하며, 값을 복사해서 다룬다는 특징이 있다.
주된 예시로는 벡터, 포인트, 색상 표현 등 불변하고 가벼운 데이터 형식에 주로 사용된다.
struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
클래스는 데이터와 기능을 묶어 표현하는 더 큰 단위라고 생각하자.
클래스는 참조 형식으로, 데이터를 힙(heap)에 저장하고 주소를 전달하는 방식으로 작동된다.
특히 클래스는 상속과 인터페이스 구현 등을 통해 더욱 확장이 가능하며
복잡한 데이터와 기능을 표현하는데 좋다.
주된 예시로는 게임 내의 캐릭터, 적, 아이템 등은 복잡한 상태와 행동을 가질 수 있으며, 다른 객체와의 상호작용이 필요한 경우가 많다. 이런 경우에는 클래스를 사용하여 캡슐화, 상속, 다형성 등의 객체 지향 기법을 활용할 수 이다.
class Character
{
public int Health { get; set; }
public Vector2 Position { get; set; }
public void Move(Vector2 direction)
{
// 이동 로직
}
public void Attack(Character target)
{
// 공격 로직
}
}
결론적으로 구조체와 클래스의 선택은 게임 개발의 특정 상황과 요구사항에 따라 달라진다.
단순한 값 형식의 표현은 구조체로, 복잡한 객체의 관리와 확장성이 필요한 경우 클래스로
설계하는 것이 일반적이다.