// 이곳에 쓴 내용은 앱 만들기라는 버킷리스트를 달성하기 위해 플러터를 공부하면서 정리하고 있는 내용입니다.
플러터에 대해 아는 것이 거의 없기 때문에 정리하면서 오류가 있을 수 있습니다.
오류를 발견하신 분은 댓글 남겨 주시면 감사하겠습니다.
mixin
- 클래스의 일종
- 다른 클래스의 부속품으로 사용되는 클래스
- with를 사용하여 사용 가능
- 자주 사용할 만한 기능들을 mixin으로 만들어 놓은 후, with를 활용하면 클래스의 개발이 보다 빨라지게 된다고 함.
class Integer {
late int _value;
Integer([int givenValue = 0]) {
_value = givenValue;
}
int get() {
return _value;
}
void set(int givenValue) {
_value = givenValue;
}
String get asString => "$_value";
set value(int givenValue) => _value = givenValue;
Integer operator +(Integer givenValue) {
return Integer(_value + givenValue.get());
}
}
mixin ActivationFlag {
bool _flag = true;
bool get activated => _flag;
set activated(bool givenFlag) => ( _flag = givenFlag);
}
class TimemachineInteger extends Integer with ActivationFlag {
List<int> _timemachine = [];
TimemachineInteger([int givenValue = 0]) {
_value = givenValue;
}
@override
void set(int givenValue) {
if (activated == true) {
_timemachine.add(_value);
print("set($givenValue) called ==> _timemachine is $_timemachine");
} else {
print("set($givenValue) called ==> current $_value is ignored.");
}
super.set(givenValue);
}
List getOld() {
return _timemachine;
}
@override
String get asString => "$_value, previously $_timemachine";
}
void main() {
var tmpTmInteger = TimemachineInteger(0);
tmpTmInteger.set(2);
tmpTmInteger.set(4);
tmpTmInteger.activated = false;
tmpTmInteger.set(6);
tmpTmInteger.activated = true;
tmpTmInteger.set(8);
print("${tmpTmInteger.asString}");
}
추상 클래스(abstract class)
- 추상 클래스는 부모 클래스의 개념, 객체를 만들지 않고, 개념만 만들어 놓고, 자식들이 구체화하여 객체를 만들도록 하는 기능 (요건 내가 이해한 방식임.)
- abstract(객체를 만들 수 없는 클래스라는 의미),
- implements(자식 개념 클래스로 extends 대신에 implements를 사용)
궁금한 게 생겼다. 작성하다 보니 추상클래스에서 정의한 내용을 derived 클래스에서 똑같이 정의할 거라면 굳이 추상 클래스를 왜 만드는지 이해가 안 간다. 자식 클래스에서 모두 정의할 건데 추상 클래스를 쓰는 이유가 뭘까?
note(이 책에서는 팁 정도의 개념)에 보면 extends 문법이 더 편해 보리 수 있지만 추상 클래스를 사용하는 경우는 가급적 implements 문법을 사용하도록 권장한단다. 개발자들의 생각은 내가 접근할 수 없는 추상적인 무엇인가 보다.
오늘도 어렵지만 꾸역꾸역 왔다. setter, getter 개념도 헷갈린데.. 책보다는 유튜브가 낫나..?
암튼, 클래스 챕터까지는 꾸역꾸역 먹어보자.
'버킷리스트 > 앱 만들기' 카테고리의 다른 글
Gemini, chatGPT, DeepSeek을 이용하여 앱 만들기 #1 추천 버전 설치하기 및 안드로이드 스튜디오, 플러터 삭제하기 (0) | 2025.01.31 |
---|---|
오공완(풀스택 개발이 쉬워지는 다트&플러터) #C Dart 언어 심화 이해-1 (0) | 2025.01.08 |
오공완(풀스택 개발이 쉬워지는 다트&플러터) #B-13 알아 두면 요긴한 Dart 언어 기능 이해하기(Null-Safety) (1) | 2024.12.01 |
오공완(풀스택 개발이 쉬워지는 다트&플러터) #B-13 알아 두면 요긴한 Dart 언어 기능 이해하기 (0) | 2024.11.25 |
오공완(풀스택 개발이 쉬워지는 다트&플러터) #B-11 Set을 이용하여 집합 데이터 처리하기 (0) | 2024.11.22 |