class Player {
final String name;
final int xp, age;
final String team;
Player({
required this.name,
required this.xp,
required this.team,
required this.age,
});
Player.createBluePlayer({
required String name,
required int age,
}) : this.name = name,
this.age = age,
this.team = 'blue',
this.xp = 0;
Player.createRedPlayer(String name, int age)
: name = name,
age = age,
team = 'red',
xp = 50;
}
void main() {
var player = Player.createBluePlayer(
name: 'nico',
age: 12,
);
print(player.name); // nico
print(player.age); // 12
var player2 = Player.createRedPlayer('joe', 200);
print(player2.name); // joe
print(player2.age); // 200
}
이 코드는 Dart 언어에서 클래스와 생성자를 사용하는 방법을 보여줍니다. 특히, Named Constructor (이름이 있는 생성자)와 this
키워드의 사용에 초점을 맞추고 있습니다.
Player
라는 클래스가 정의되어 있고, name
, xp
, age
, team
이라는 네 개의 필드가 있습니다.
Player
클래스에는 필드를 초기화하는 기본 생성자가 있습니다. 이 생성자는 이름이 없고, {}
안에 required
키워드와 함께 필드 이름을 정의하여, 이 필드들이 반드시 제공되어야 함을 나타냅니다.
Player({
required this.name,
required this.xp,
required this.team,
required this.age,
});
Player
클래스에는 두 개의 이름이 있는 생성자, createBluePlayer
와 createRedPlayer
가 있습니다.
Player.createBluePlayer({
required String name,
required int age,
}) : this.name = name,
this.age = age,
this.team = 'blue',
this.xp = 0;
createBluePlayer
생성자는 name
과 age
를 매개변수로 받아오며, team
은 'blue'로, xp
는 0으로 고정입니다.Player.createRedPlayer(String name, int age)
: name = name,
age = age,
team = 'red',
xp = 50;
createRedPlayer
생성자는 name
과 age
를 매개변수로 받아오며, team
은 'red'로, xp
는 50으로 고정입니다.main
함수에서는 이 두 개의 이름이 있는 생성자를 사용하여 두 개의 Player
객체를 생성합니다.
var player = Player.createBluePlayer(
name: 'nico',
age: 12,
);
createBluePlayer
생성자를 사용하여 name
은 'nico', age
는 12로 설정한 Player
객체를 생성합니다. team
은 'blue', xp
는 0으로 고정됩니다.var player2 = Player.createRedPlayer('joe', 200);
createRedPlayer
생성자를 사용하여 name
은 'joe', age
는 200으로 설정한 Player
객체를 생성합니다. team
은 'red', xp
는 50으로 고정됩니다.생성된 두 객체의 name
과 age
필드를 출력합니다.
print(player.name); // nico
print(player.age); // 12
print(player2.name); // joe
print(player2.age); // 200
이 예제를 통해 Dart에서 클래스, 필드, 기본 생성자, 이름이 있는 생성자를 어떻게 정의하고 사용하는지 이해할 수 있습니다.
Dart 언어에서는 생성자를 다양한 방법으로 정의할 수 있으며, 명명된 생성자(named constructor)를 통해 특정 목적에 맞게 여러 개의 생성자를 제공할 수 있습니다.
Player
클래스에는 기본 생성자가 하나 있으며, 이 생성자는 name
, xp
, team
, age
네 개의 필드를 초기화합니다. Dart 언어에서는 생성자의 매개변수 앞에 this
키워드를 사용하면, 매개변수 이름과 동일한 이름의 인스턴스 변수를 직접 초기화할 수 있습니다.
Player({
required this.name,
required this.xp,
required this.team,
required this.age,
});
createBluePlayer
는 명명된 생성자로, name
과 age
만 매개변수로 받습니다. team
은 'blue'로, xp
는 0으로 초기화됩니다. 여기서도 this.name
과 this.age
를 사용하여 인스턴스 변수를 직접 초기화하고 있습니다.
Player.createBluePlayer({
required this.name,
required this.age,
}) : team = 'blue',
xp = 0;
createRedPlayer
역시 명명된 생성자로, name
과 age
를 매개변수로 받습니다. 그러나 이 생성자에서는 초기화 리스트를 사용하여 team
을 'red'로, xp
를 50으로 초기화합니다.
Player.createRedPlayer(this.name, this.age)
: team = 'red',
xp = 50;
main
함수에서는 createBluePlayer
와 createRedPlayer
생성자를 사용하여 두 개의 Player
객체를 생성하고, 각각의 속성을 출력합니다.
var player = Player.createBluePlayer(
name: 'nico',
age: 12,
);
print(player.name); // nico
print(player.age); // 12
var player2 = Player.createRedPlayer('joe', 200);
print(player2.name); // joe
print(player2.age); // 200
이 코드는 Dart의 생성자 초기화와 명명된 생성자 사용을 보여주는 좋은 예입니다. Dart 언어는 이러한 기능을 통해 더 유연하고 표현력 있는 코드 작성을 가능하게 합니다.
이 코드는 Dart 프로그래밍 언어를 사용한 간단한 예시로, Idol
이라는 클래스를 정의하고, 이 클래스를 사용하여 K-Pop 아이돌 그룹에 대한 정보를 나타내는 객체를 생성하는 방법을 보여줍니다.
Idol
클래스는 두 개의 필드, name
과 members
를 가지고 있으며, 이들은 각각 아이돌 그룹의 이름과 멤버들의 이름을 저장합니다. 이 클래스에는 두 개의 생성자와 두 개의 메서드가 정의되어 있습니다.
기본 생성자: name
과 members
를 직접 전달받아 초기화합니다.
Idol(this.name, this.members);
명명된 생성자 (fromList): 리스트를 전달받아 members
와 name
을 초기화합니다. 이 때, 리스트의 첫 번째 요소는 멤버들의 이름을 담은 리스트여야 하고, 두 번째 요소는 그룹의 이름이어야 합니다.
Idol.fromList(List values)
: this.members = List<String>.from(values[0]),
this.name = values[1];
sayHello 메서드: 그룹의 이름을 출력하는 메서드입니다.
void sayHello() {
print('안녕하세요, 우리는 $name입니다.');
}
introduce 메서드: 그룹의 이름과 멤버들의 이름을 출력하는 메서드입니다.
void introduce() {
print('$name는 $members로 구성되어 있습니다.');
}
main
함수에서는 Idol.fromList
생성자를 사용하여 BTS
라는 Idol
객체를 생성하고, 그 객체의 sayHello
와 introduce
메서드를 호출하여 정보를 출력합니다.
void main() {
var BTS = Idol.fromList([
['뷔', '정국', 'RM', '진', '제이홉', '슈가', '지민'],
'BTS'
]);
BTS.sayHello();
BTS.introduce();
}
안녕하세요, 우리는 BTS입니다.
BTS는 [뷔, 정국, RM, 진, 제이홉, 슈가, 지민]로 구성되어 있습니다.