22일차 과제 - rlatkddbs99/Flutter GitHub Wiki
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);
}
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);
}
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);
}
- Getter, Setter 그리고 멤버변수
객체의 프로퍼티는 두 종류로 나뉩니다. 첫 번째 종류는 데이터 프로퍼티(data property) 입니다 지금까지 사용한 모든 프로퍼티는 데이터 프로퍼티입니다. 두 번째는 접근자 프로퍼티(accessor property) 라 불리는 프로퍼티입니다.접근자 프로퍼티를 사용하면 함수처럼 호출 하지 않고, 일반 프로퍼티에서 값에 접근 접근자 프로퍼티의 본질은 함수인데, 이 함수는 값을 획득(get)하고 설정(set)하는 역할을 담당합니다. 그런데 외부 코드에서는 함수가 아닌 일반적인 프로퍼티처럼 보입니다. 접근자 프로퍼티는 'getter(획득자)'와 ‘setter(설정자)’ 메서드로 표현됩니다. 객체 리터럴 안에서 getter와 setter 메서드는 get과 set으로 나타낼 수 있습니다. getter 프로퍼티를 읽으려고 할 때 실행 setter 프로퍼티에 값을 할당하려 할 때 실행 접근자 프로퍼티를 사용하면 함수처럼 호출 하지 않고, 일반 프로퍼티에서 값에 접근 접근자 프로퍼티는 언제 어느 때나 getter와 setter를 사용해 데이터 프로퍼티의 행동과 값을 원하는 대로 조정할 수 있게 해준다는 점에서 유용 생성자 함수를 수정하면 기존 코드 중 프로퍼티를 사용하고 있는 코드도 수정해야 한다. 하지만 getter와 setter를 통해 간편하게 바꿀 수 있다.
멤버 변수 : 클래스 내에서 선언된 변수 즉 저장공간 getter와 setter를 활용해서 데이터를 수정하고 사용 가능
getter 예제
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예제
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);
}