Class는 OOP - Object Oriented Programming(객체지향 프로그래밍)에서 가장 중요한 부분입니다.
class는 비슷한 성격의 또는 기능의 변수와 함수들을 모아놓은 것입니다.
class를 선언할 떄는 main영역 밖에서 선언해야 합니다. class의 첫글자는 무조건 대문자여야 합니다.
void main(){
Idol ohmygirl = new Idol();
ohmygirl.sayName();
}
class Idol{
String name = '오마이걸';
void sayName(){
print('제 이름은 ${this.name}입니다');
}
}
위 코드는 가장 간단하게 구현한 class입니다.
코드를 조금씩 뜯어 보겠습니다.
class Idol{
String name = '오마이걸';
void sayName(){
print('제 이름은 ${this.name}입니다');
}
}
Idol이라는 class에 변수하나와 함수하나가 들어가 있는 것을 볼수 있습니다.
우리는 이것을 사용하려면 instantiation이라는 인스턴스로 변환하는 과정을 거쳐야 합니다.
void main(){
Idol ohmygirl = new Idol(); //instantiation
ohmygirl.sayName();
}
위에 Idol ohmygirl = new Idol;이라는 부분이 있습니다.
이 과정은 선언된 클래스를 변수처럼 사용하기 위해 변수선언 한것처럼 선언 한 것입니다.
왼쪽에 있는 ohmygirl은 하나의 인스턴스라고 불립니다,
class안에 있는 함수를 선언하고 싶으면
인스턴스 이름.함수 이름();
이런식으로 선언하면 됩니다.
그렇다면 우리는 아이돌 그룹에 오마이걸만 있는것이 아니라 다른 그룹도 넣고 싶으면 어떻게 해야 할까요?
우리는 Constructor라는 것을 써야 합니다.
Constructor은 class선언 시에 원하는 변수들을 이 class 안에 넣을 수 있는 기능이라고 생각하면 됩니다.
void main(){
Idol seunghee = new Idol(
'승희', //name
'오마이걸', //group
);
print(seunghee.name);
print(seunghee.group);
}
class Idol{
String name; //새로 추가해줌
String group;
Idol(
String name,
String group,
) : this.name =name,this.group = group; //이렇게 선언하면 외부에서 값을 받아 오겠다는 의미다.
//밖에서의 name과 class에서의 name이 같다는 뜻이다.
void sayName(){
print('제 이름은 ${this.name}입니다');
}
}
JAVA처럼 OOP를 자주 쓰는 언어에서는 constructor 오버로딩이라는 개념이 존재합니다.
DART에서는 이것을 named constructor이라고 합니다.
방법은 별 다를게 없습니다.
Idol.fromMap( //클래스명.아무이름
Map input,//MAP값을 받아서 key값이 name이면 클래스의 name으로 group은 group으로 설정한다
) : this.name = input['name'],
this.group = input['group'];
이상 dart의 class선언 방법이였습니다
'코딩에 관하여 > Dart 언어에 관하여' 카테고리의 다른 글
DART [13.Inheritance (상속)에 관하여] (0) | 2021.08.03 |
---|---|
DART [12. getter와 setter에 대하여] (0) | 2021.08.03 |
DART [10. Typedef에 대해서] (0) | 2021.08.02 |
DART [9. Funtion에 대하여] (0) | 2021.08.02 |
DART [8. Enum에 대하여] (0) | 2021.08.02 |