class UserData{
String id;
DateTime birth;
String email;
DateTime lastLoginDate;
String name;
String phoneNumber;
UserData({
required this.id,
required this.birth,
required this.email,
required this.lastLoginDate,
required this.name,
required this.phoneNumber,
});
@override
String toString(){
return "id: $id\n name: $name\n birth: $birth \n phoneNumber: $phoneNumber\n email: $email \n lastLoginDate: $lastLoginDate";
}
}
void main() {
UserData userData = UserData(
id: "sniperFactory",
birth : DateTime.now(),
email: "[email protected]",
lastLoginDate: DateTime.now(),
name: "스나이퍼",
phoneNumber: "01023456789"
);
print(userData);
}
class Subway {
//멤버변수
String line;
String current;
List<Human> passengers; //사람
Subway({ //생성자
required this.line,
required this.current,
required this.passengers,
}){
print("[$line] 지하철이 생성되었습니다"); //생성자로 생성하면 바로 출력되도록
}
@override
String toString() => "Subway([$line | $current ] 현재 지하철 탑승인원 ${passengers.length}명)"; //toString메소드 재정의, length없으면 사람1과 사람2에서 생성된 데이터가 같이 나옴(몇 명이 탔는지만 나오면 돼)
add(Human human) => passengers.add(human); //사람이 타면 passenger리스트에 human추가해주는 멤버 함수
}
class Human {
//멤버변수
String name;
int money;
Subway? curSubway; //처음에 null값을 가지게 되어있으니, 어떤 지하철을 탔는지 하려고 Subway생성자를 가짐
Human({ //생성자
required this.name,
required this.money,
this.curSubway, //null-safety 때문에 required안써도
});
@override //toString메소드 재정의
String toString() => "Human(human:$name, money: $money, curSubway: $curSubway)";
//사람타는 멤버함수
String getOn(Subway subway){ //Subway 매개변수로 주고있음
//지하철 요금 1500원, 조건문 필요
if(money>=1500){
subway.add(this); //위에 정의한 add함수로 지하철에 지금 생성한 사람이 탔다고 전해줌
curSubway = subway; //새로고침
money -= 1500; //차감금액 표시해줘야돼
return "$name이(가) 성공적으로 탑승하였습니다. (남은 돈 : $money)";
}
//잔액부족
return "$name이(가) 탑승에 실패하였습니다 (잔액부족)";
}
}
void main() {
// 인스턴스 생성
var subway = Subway(line:'2호선', current: '홍대입구역', passengers:[]);
var human1 = Human(name: '사람1', money: 5000, curSubway: null);
var human2 = Human(name: '사람2', money: 3450, curSubway: null);
var human3 = Human(name: '사람3', money: 450, curSubway: null);
// 사람 탑승
print(human1.getOn(subway));
print(human2.getOn(subway));
print(human3.getOn(subway));
// 현재 지하철 탑승
print(subway.toString());
// 각 사람들의 현재 상태를 출력
print(human1.toString());
print(human2.toString());
print(human3.toString());
}