춘기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 나이입니다.
프로그램 종료