brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Mar 04. 2020

다트 클래스 (Dart Class)

플러터를 위한 다트 프로그래밍

다트의 클래스

객체 지향 프로그래밍을 공부하다 클래스를 만나면 연관되어 배워야 할 것들이 많다. 예를 들면 객체, 멤버, 인스턴스, 생성자, 상속, 접근 지정자, 추상 클래스 등이다. 여기서는 먼저 클래스의 기본적인 형태에 대해서 알아본다.


다트는 모든 것이 객체인 완전 객체 지향 언어이다. 모든 객체는 클래스의 인스턴스이다. 그리고 모든 클래스는 Object 클래스의 자식이다.


1) 객체, 멤버, 인스턴스

클래스는 멤버를 가진다. 멤버는 멤버 함수(메서드)와 멤버 변수(인스턴스 변수)로 구성된다. 클래스를 사용하려면 객체를 생성해야 한다. 객체를 생성한다는 것은 클래스가 메모리에 올라간다는 의미이고 이것을 인스턴스화라고 부른다. 이렇게 메모리에 클래스가 할당되어 인스턴스가 된 것을 객체라고 한다.


(참고) 클래스 외부에서 하나의 기능을 하는 함수는 Function이고 클래스 내부에 있는 멤버 함수는 Method라고 한다. 또한 멤버 변수는 객체가 생성되면 인스턴스 변수라고 한다.



객체에 대한 개념을 좀 더 자세히 알고 싶다면?


(자바의 객체 1) (자바의 객체 2) (자바의 객체 3)


2) 클래스 기본

클래스의 기본 형태는 다음과 같다.


class 클래스명 {

멤버 변수

멤버 함수

}


ex)

class Person {

 String name;

 getName() {

  return name;

 }

}



클래스를 사용하기 위해서는 객체를 생성해야 한다. C++이나 자바에서는 객체 생성 시 new 키워드를 사용한다. 하지만 플러터는 기본적으로 생략한다. 사용하고 싶으면 사용할 수도 있다.


아래 예제를 보면 Person 객체를 2개 만들고 있다. 이때 student, teacher와 같은 변수를 참조형 변수라고 한다. Line12를 보면 teacher는 객체 생성 시 new 키워드를 사용하지 않았다.

객체의 멤버에 접근을 하는 방법은 (참조형 변수.멤버) 이다. 실제 사용법을 보면 Line 13에서 Person 객체의 멤버 변수인 name에 값을 할당하기 위해서 student.name = 'Kim'이라고 선언한 것을 볼 수 있다. 메서드에 접근하는 방법도 당연히 동일하다.


다트에서 모든 것은 객체라고 했는데 String과 같은 타입도 객체이다. String가 객체라면 String 클래스도 있어야 되는거 아닐? 그렇다. 있다.

위와 같이 String 클래스가 존재한다. String은 타입으로 사용한다. 따라서 Person 클래스와 같이 개발자가 추가한 클래스도 하나의 커스텀 타입이라고 할 수 있다. 한 번 타입처럼 써볼까? Line 13 참고.


??? : var 대신에 Person을 썼네? var teacher를 보면 타입이 var이니까 당연히 Person 타입으로 지정되는 것 아님?

- ㅇㅇ... 펭수는 눈치가 다 있구나.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari