Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- qaautomation
- 로봇프레임워크
- 다트언어
- 오블완
- DART
- QA자동화
- Python
- 스위프트프로그래밍
- dartlang
- 다트
- 스위프트
- 다트기초문법
- 티스토리챌린지
- 스위프트개발
- Flutter
- ios개발
- 테스트오토메이션
- 야곰스위프트
- playwright
- robotframework
- 플러터
- 다트기본문법
- Swift5
- testautomation
- 테킷앱스쿨
- 테스트자동화
- SWIFT
- iOS프로그래밍
- 파이썬자동화
- pythonautomation
Archives
- Today
- Total
day_by_day
10. Immutable 프로그래밍과 Getter, Setter, private keyword 본문
0. 설명
- 최근 프로그래밍 트렌드는 한번 값들을 선언하고나면 변경할 수 없도록 하는 것이 추세
- 처음 선언한 값을 바꾸는걸 선호하지 않으며, 새로운 값이 필요할땐 새로운 인스턴스를 선언하여 사용하도록 권장
- 그래서 클래스의 멤버 변수에 final을 선언하는 습관이 필요함
1. const constructor
- 멤버변수가 final 로 선언될 경우 constructor는 const constructor로 선언
- 일반 constructor를 사용할 경우
void main() {
Idol blackpink = Idol('Black Pink', ['지수', '제니', '리사','로제']);
Idol blackpink2 = Idol('Black Pink', ['지수', '제니', '리사','로제']);
print(blackpink == blackpink2); //false
}
class Idol{
final String name;
final List<String> members;
Idol(this.name, this.members);
Idol.fromList(List values)
: this.members = values[0], this.name = values[1];
void sayHello(){
print("Hi We are ${this.name}");
}
void introduce(){
print("${this.members}가 있습니다.");
}
}
- const constructor를 사용할 경우
void main() {
Idol blackpink = const Idol('Black Pink', ['지수', '제니', '리사','로제']);
Idol blackpink2 = const Idol('Black Pink', ['지수', '제니', '리사','로제']);
print(blackpink == blackpink2); //true
}
class Idol{
final String name;
final List<String> members;
const Idol(this.name, this.members);
Idol.fromList(List values)
: this.members = values[0], this.name = values[1];
void sayHello(){
print("Hi We are ${this.name}");
}
void introduce(){
print("${this.members}가 있습니다.");
}
}
2. Getter
- 클래스의 멤버 변수를 가져올 때 사용함
- 동일한 기능의 함수 구현도 가능하지만 프로그래밍 시 의미가 다름
- 간단히 데이터를 받아오는 경우 getter를 사용하고, 좀 더 복잡한 로직을 구현할 때는 함수를 사용
void main() {
Idol blackpink = Idol('Black Pink', ['지수', '제니', '리사','로제']);
Idol bts = Idol.fromList([['rm', '진', '슈가', '지민', '뷔', '정국','제이홉'], 'BTS']);
print(blackpink.firstMember);
print(bts.firstMember);
}
class Idol{
String name;
List<String> members;
Idol(this.name, this.members);
Idol.fromList(List values)
: this.members = values[0], this.name = values[1];
void sayHello(){
print("Hi We are ${this.name}");
}
void introduce(){
print("${this.members}가 있습니다.");
}
String get firstMember{
return this.members[0];
}
}
3. Setter
- 클래스 멤버 변수의 값을 변경할 때 사용
- Immutable 프로그래밍에서 봤을때 사용 의미 없음. 최근에는 잘 사용하지 않음
- setter를 쓰면 final, const의 의미가 없어지기 때문에 기능과 개념만 알고 있으면 됨
- setter는 무조건 하나의 파라미터만 받을 수 있음
void main() {
Idol blackpink = Idol('Black Pink', ['지수', '제니', '리사','로제']);
Idol bts = Idol.fromList([['rm', '진', '슈가', '지민', '뷔', '정국','제이홉'], 'BTS']);
print(blackpink.firstMember);
print(bts.firstMember);
//이게 파라미터를 하나밖에 못받는 이유
blackpink.firstMember = 'code factory';
bts.firstMember = 'code factory';
print(blackpink.firstMember);
print(bts.firstMember);
}
class Idol{
String name;
List<String> members;
Idol(this.name, this.members);
Idol.fromList(List values)
: this.members = values[0], this.name = values[1];
void sayHello(){
print("Hi We are ${this.name}");
}
void introduce(){
print("${this.members}가 있습니다.");
}
String get firstMember{
return this.members[0];
}
set firstMember(String name){
this.members[0] = name;
}
}
4. private
- 같은 코드 파일 안에서만 접근 가능한 변수
- private 지정 방법 : 이름 앞에 언더스코어(_)
- ex) class _Idol{}, _Idol(this.name);
- 클래스 자체를 포함하여 클래스 내 메소드, 멤버 변수는 모두 private 선언 가능
'QA Automation > dart' 카테고리의 다른 글
12. Method Override (0) | 2023.05.17 |
---|---|
11. 상속(Inheritance) (0) | 2023.05.17 |
9. class : 기본, 생성자와 this (0) | 2023.05.16 |
8. Typedef (2) | 2023.05.16 |
7. 함수(function) (1) | 2023.05.16 |