춘기IT/춘기개발
Flutter 개발: 클래스(Class) / 객체(Object) 정리
화춘기
2025. 6. 18. 16:20
플러터(Flutter)는 Dart 언어로 앱을 개발합니다.
Dart는 객체지향 언어(Object-Oriented Language)이기 때문에,
앱을 구성하는 거의 모든 것이 클래스로 이루어져 있습니다.
버튼도, 텍스트도, 화면도 전부 클래스입니다.
그래서 Dart에서 클래스를 이해하는 것이 중요합니다.
📘 클래스(Class)
- 클래스는 설계도입니다.
📘 클래스 예시
class Person {
String name;
int age;
// 생성자
Person(this.name, this.age);
void sayHello() {
print("안녕하세요, 저는 $name이고, 나이는 $age살입니다.");
}
}
ㄴ 위 코드에서 Person이라는 클래스는 사람 객체를 만들기 위한 설계도입니다.
🧍객체(Object)
- 객체는 클래스를 기반으로 만들어진 실체입니다.
🧍객체 예시
void main() {
Person person1 = Person("홍길동", 30); // Person이라는 설계도로 객체를 생성
person1.sayHello(); // 출력: 안녕하세요, 저는 홍길동이고, 나이는 30살입니다.
}
ㄴ 클래스 Person을 기반으로 person1이라는 객체가 생성되었고,
이 객체는 자신만의 데이터(name, age)를 갖게 됩니다.
📌 클래스가 중요한 이유 (Flutter)
- 플러터 앱은 클래스들로 구성된 위젯 트리를 통해 동작합니다.
- 예를 들어
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text("Hello Flutter");
}
}
ㄴ 여기서 MyHomePage도 하나의 클래스고,
StatelessWidget이라는 또 다른 클래스(상위)를 상속받고 있습니다.
📌 클래스의 주요 구성요소
구성요소 | 설명 |
변수(필드) | 객체가 가지는 속성 (예: 이름, 나이 등) |
생성자 | 객체를 생성할 때 호출되는 특별한 함수 |
메서드 | 클래스가 수행할 수 있는 동작 (예: 인사하기, 계산하기 등) |
상속 | 기존 클래스를 확장하여 새 클래스를 만드는 것 |
📌 클래스와 객체 이해
용어 | 설명 | 예시 |
클래스 | 객체의 설계도 | Person, Text, MyWidet 등 |
객체 | 클래스 기반으로 생성된 실체 | Person("홍길동", 30) |
메서드 | 클래스가 가진 동작 | sayHello(), build() |
생성자 | 객체를 만들 때 사용되는 함수 | Person(this.name, this.age) |
📌 클래스 응용 예시
void main() async {
var totalYears = 10;
print('프로그램 시작');
var man = Human(
id: '860507-xxxxxxx',
name: '홍길동',
age: 40,
gender: Gender.M,
);
for (var currentYear = 1; currentYear < totalYears; currentYear++) {
await Future.delayed(Duration(seconds: 1));
print('$currentYear년이 흘렀습니다.');
man.addAge();
print('${man.name}은 ${man.age} 나이입니다.');
}
print('프로그램 종료');
}
//출력 결과
프로그램 시작
1년이 흘렀습니다.
김성덕은 41 나이입니다.
2년이 흘렀습니다.
김성덕은 42 나이입니다.
.
.
.
8년이 흘렀습니다.
김성덕은 48 나이입니다.
9년이 흘렀습니다.
김성덕은 49 나이입니다.
프로그램 종료