Class와 Instance

Kim Da HEE·2023년 11월 30일
0

Dart 언어

목록 보기
3/11

어제 나누어 본 내용을 바탕으로 포스팅한 내용에 이어 클래스와 인스턴스에 대해서 자세히 알아보는 시간을 가졌다.
이야기를 듣다 보면 개념에 대해 잘 이해한 것 같은데, 막상 클래스 를 만들어 보려고 하면 어떻게 뭐부터 해야될지 막막하다. 선생님께서 말씀해주신 오브젝트 도출 순서와, 용어를 정리해 보고 클래스와 인스턴스 에 대해 정리해보고자 한다.

  • 오브젝트 도출 순서
  1. 각 오브젝트가 가지고 있을만한 속성이나 동작을 정리
  2. 각 오브젝트를 가상세계에 도출, 동작시켜 보기
  • 오브젝트 : 현실 세계의 모든 객체
  • 클래스 : 오브젝트를 가상세계용으로 구체화 한 것
  • 인스턴스 : 클래스를 활용해 메모리 상에 만들어 낸 것

즉, '클래스는 오브젝트의 속성, 동작 등을 구체화 한 것(붕어빵 틀, 1개)이고 이 클래스를 통해 다양한 인스턴스(붕어빵, 여러개)들을 만들어 낼 수 있다.' 라고 정리할 수 있지 않을까

  • class

클래스는 'class 이름 {}'으로 만든다. 클래스의 이름은 보통 대문자로 시작하도록 한다. 성직자(Cleric)의 속성과 동작을 바탕으로 간단한 예시를 작성해보자.

class Cleric {}

'Cleric'이라는 이름을 가진 클래스를 만든다.

class Cleric {
  String name;
  int mp;
  
  Cleric(this.name, this.mp);
}

Cleric의 속성을 생각하며 이름과 mp 속성을 필드로 선언하고 생성자를 만든다. 필드 명은 명사로 네이밍하고 소문자로 시작한다. 두개 이상의 단어를 결합하여 쓸 경우 첫단어는 소문자, 그 뒤 단어는 대문자로 시작한다.

class Cleric {
  String name;
  int mp;
  
  Cleric(this.name, this.mp);
  
  void heal(){
    print('healing');
  }
}

Cleric의 힐을 하는 동작을 메서드로 선언한다. 메서드는 클래스 내에서 클래스를 위한 동작을 하는 함수를 말한다. 메서드는 동사로 네이밍하고 필드와 마찬가지로 소문자로 시작하며 첫단어는 소문자, 그 뒤 단어는 대문자로 시작하도록 한다.


위의 순서로 클래스를 만들 수 있다. 처음엔 어색하지만 작성하면 할수록 익숙해진다. 필요한 클래스를 자유자재로 만들 수 있어야 한다.

클래스를 만들면 클래스의 이름을 변수타입으로 이용할 수 있다. 정의한 클래스로 인스턴스를 생성할 수 있다.

  • instance

위에서 만든 붕어빵 틀인 클래스로 붕어빵인 인스턴스를 만들어보자.

Cleric cleric1=Cleric('healer',50);

정의된 클래스 'Cleric'을 변수타입을 갖는 cleric1 인스턴스를 생성했다. cleric1은 이름과 mp를 가져야 한다. 붕어빵은 여러개를 만들 수 있으므로 cleric2, cleric3등 클래스를 사용하여 여러개의 인스턴스를 생성할 수 있다.

0개의 댓글