23일차 과제 - rlatkddbs99/Flutter GitHub Wiki

image

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);
}

image

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());
}
⚠️ **GitHub.com Fallback** ⚠️