Dart Class(1)

IngCoding·2023년 6월 3일
0
// // 넘버링된 제목들 사이를 주석 풀고 실행

// // 1. The Flower of Darts, Class

// class Player {
//   // class 에서는 반드시 자료형을 명시
//   String name = 'gino';
//   int xp = 1500;

//   Player(this.name, this.xp) {}
// }

// void main() {
//   var player = Player('gino', 2500);
//   print(player.name);
// }

// 2. Constructors

// class Player {
//   // class 에선 값을 나중에 받아오는 late 활용도 높음
//   late final String name;
//   late int xp;

//   Player(this.name, this.xp);

//   void sayHello() {
//     print('Hi my name is $name');
//   }
// }

// void main() {
//   var player = Player('gino', 2500);
//   player.sayHello();
//   var player2 = Player('ginoo', 5500);
//   player2.sayHello();
// }

// 3. Named Constructor Parameters

// class Player {
//   String name;
//   int xp;
//   String team;
//   int age;

// // {} 감싸면 Named Constructor Parameter 설정 완료
//   Player(
//       {required this.name,
//       required this.xp,
//       required this.team,
//       required this.age});

//   void sayHello() {
//     print('Hi my name is $name, $xp, $team, $age');
//   }
// }

// void main() {
//   // 압도적으로 named parameter 방식이 많음
//   var player = Player(name: 'gino', xp: 2500, team: 'tree', age: 12);
//   player.sayHello();

//   // 비교
//   // var player2 = Player('ginoo', 5500, 'blue', 22);
//   // player2.sayHello();
// }

// 4. Named Constructors

// class Player {
//   final String name;
//   int xp, age; // 같은 modifier, type의 parameter는 같은 줄에 적을 수 있다
//   String team;

// // {} 감싸면 Named Constructor Parameter
//   Player(
//       {required this.name,
//       required this.xp,
//       required this.team,
//       required this.age});

//   // 콜론(:)이 매우 중요
//   // Dart 에게 Player 객체를 초기화하겠다고 선언하는 의미
//   Player.createBluePlayer({required String name, required int age})
//       // {} 활용한 named syntax
//       : this.age = age,
//         this.name = name,
//         this.team = 'blue', // 팀의 기본값을 블루로 설정
//         this.xp = 0;

//   // {} 쓰지 않은 posional syntax
//   Player.createRedPlayer(String name, int age)
//       : this.age = age,
//         this.name = name,
//         this.team = 'red', // 팀의 기본값을 블루로 설정
//         this.xp = 0;
// }

// void main() {
//   // 압도적으로 named parameter 방식이 많음
//   var player = Player.createBluePlayer(
//     name: 'gino',
//     age: 21,
//   );
//   var redPlayer = Player.createRedPlayer('ginoo', 23);

//   print(player.team);
//   print(redPlayer.team);
// }

// // 5. Named Constructors2
// // api로부터 데이터를 받는 상황을 가정 

// class Player {
//   final String name;
//   int xp;
//   String team;

//   // fromJson이라는 named Constructors 생성 
//   Player.fromJson(Map<String, dynamic> playerJson)
//       // JSON 내부를 하나하나 초기화 
//       : name = playerJson["name"],
//         xp = playerJson["xp"],
//         team = playerJson["team"];

//   void sayHello() {
//     print("Hi my name is $name");
//   }
// }

// void main() {
//   // 여러 player가 들어있는 api 데이터
//   var apiData = [
//     {
//       "name": "gino",
//       "team": "tree",
//       "xp": 0,
//     },
//     {
//       "name": "yena",
//       "team": "red",
//       "xp": 0,
//     },
//     {
//       "name": "logan",
//       "team": "blue",
//       "xp": 0,
//     },
//   ];

//   apiData.forEach((playerJson) {
//     var player = Player.fromJson(playerJson);
//     player.sayHello();
//   });
// }
profile
Data & PM

0개의 댓글