22일차 과제 - rlatkddbs99/Flutter GitHub Wiki

image

class User{
  String name;
  String phone;
  String email;
  String? nickname;
  String? profileImg;
  String? backImg;
  List friends;
  List favorites;
  
  User({
    required this.name,
    required this.phone,
    required this.email,
    this.nickname,
    this.profileImg,
    this.backImg,
    required this.friends,
    required this.favorites,
  });
}

void main() {
  var user = User(
  name : "sangyoon",
  phone : "010-9999-9999",
    email: "[email protected]",
    friends : ["친","구"],
    favorites : ["flutter"],
  );
  
  print(user.email);
  print(user.phone);
}

image

class UserData{
  String id;
  DateTime birth;
  String email;
  DateTime lastLoginDate;
  String name;
  String phoneNumber;
  UserData({
    required this.name,
    required this.phoneNumber,
    required this.email,
    required this.id,
    required this.birth,
    required this.lastLoginDate
  });
}
void main(List<String> arguments) {
	UserData userData = UserData(
		id: "id",
		birth: DateTime.now(),
		email:"[email protected]",
		lastLoginDate: DateTime.now(),
		name: "스나이퍼",
		phoneNumber: '01023456789'
	);
  print(userData.id);
   print(userData.birth);
   print(userData.email);
   print(userData.phoneNumber);
   print(userData.name);
}

image

class UserData{
  String id;
  DateTime birth;
  String email;
  DateTime lastLoginDate;
  String name;
  String phoneNumber;
  UserData({
    required this.name,
    required this.phoneNumber,
    required this.email,
    required this.id,
    required this.birth,
    required this.lastLoginDate
  });
  UserData.dummy()
    : id = 'DUMMY',
      name = '더미데이터',
      birth = DateTime.now(),
      phoneNumber = '010',
      email = '[email protected]',
      lastLoginDate = DateTime.now();
}
void main(List<String> arguments) {
	
  UserData userData = UserData.dummy();
  print(userData.birth);
  print(userData.name);
  print(userData.id);
}
  1. Getter, Setter 그리고 멤버변수

객체의 프로퍼티는 두 종류로 나뉩니다. 첫 번째 종류는 데이터 프로퍼티(data property) 입니다 지금까지 사용한 모든 프로퍼티는 데이터 프로퍼티입니다. 두 번째는 접근자 프로퍼티(accessor property) 라 불리는 프로퍼티입니다.접근자 프로퍼티를 사용하면 함수처럼 호출 하지 않고, 일반 프로퍼티에서 값에 접근 접근자 프로퍼티의 본질은 함수인데, 이 함수는 값을 획득(get)하고 설정(set)하는 역할을 담당합니다. 그런데 외부 코드에서는 함수가 아닌 일반적인 프로퍼티처럼 보입니다. 접근자 프로퍼티는 'getter(획득자)'와 ‘setter(설정자)’ 메서드로 표현됩니다. 객체 리터럴 안에서 getter와 setter 메서드는 get과 set으로 나타낼 수 있습니다. getter 프로퍼티를 읽으려고 할 때 실행 setter 프로퍼티에 값을 할당하려 할 때 실행 접근자 프로퍼티를 사용하면 함수처럼 호출 하지 않고, 일반 프로퍼티에서 값에 접근 접근자 프로퍼티는 언제 어느 때나 getter와 setter를 사용해 데이터 프로퍼티의 행동과 값을 원하는 대로 조정할 수 있게 해준다는 점에서 유용 생성자 함수를 수정하면 기존 코드 중 프로퍼티를 사용하고 있는 코드도 수정해야 한다. 하지만 getter와 setter를 통해 간편하게 바꿀 수 있다.

멤버 변수 : 클래스 내에서 선언된 변수 즉 저장공간 getter와 setter를 활용해서 데이터를 수정하고 사용 가능

getter 예제

image

class UserData{
  String id;
  DateTime birth;
  String email;
  DateTime lastLoginDate;
  String name;
  String phoneNumber;
  int age;
  
  int get getAge => age;
  
  set setAge(int age) => age = age;
  UserData({
    required this.name,
    required this.phoneNumber,
    required this.email,
    required this.id,
    required this.birth,
    required this.lastLoginDate
  }) : age = 25;
  UserData.dummy()
    : id = 'DUMMY',
      name = '더미데이터',
      birth = DateTime.now(),
      phoneNumber = '010',
      email = '[email protected]',
      lastLoginDate = DateTime.now(),
      age = 25;
}
void main(List<String> arguments) {
	
  UserData userData = UserData(
    id: "sniperFactory",
    birth: DateTime.parse("1990-01-01"),
    email: "[email protected]",
    lastLoginDate: DateTime.now(),
    name:"스나이퍼",
    phoneNumber: "01023456789");
  
  print("나이는 : ${userData.getAge}살 입니다");
  
}

setter예제 image

class UserData{
  String id;
  DateTime birth;
  String email;
  DateTime lastLoginDate;
  String name;
  String phoneNumber;
  int age;
  
  int get getAge => age;
  
  set setAge(int age) => age = age;
  
  updateUserName(String name){
    this.name = name;
  }
  UserData({
    required this.name,
    required this.phoneNumber,
    required this.email,
    required this.id,
    required this.birth,
    required this.lastLoginDate
  }) : age = 25;
  UserData.dummy()
    : id = 'DUMMY',
      name = '더미데이터',
      birth = DateTime.now(),
      phoneNumber = '010',
      email = '[email protected]',
      lastLoginDate = DateTime.now(),
      age = 25;
}
void main(List<String> arguments) {
	
  UserData userData = UserData(
    id: "sniperFactory",
    birth: DateTime.parse("1990-01-01"),
    email: "[email protected]",
    lastLoginDate: DateTime.now(),
    name:"스나이퍼",
    phoneNumber: "01023456789");
  
    userData.updateUserName("팩토리");
    print(userData.name);
  
}
⚠️ **GitHub.com Fallback** ⚠️