프로그래밍 언어/Dart

Dart 객체지향 프로그래밍: 생성자와 소멸자 개념과 예제 - Dart 기초 #9

eco7T 2024. 6. 11. 09:15
반응형

Dart 프로그래밍 언어의 입문자를 대상으로 객체지향 프로그래밍의 기본 원리를 이해하고, Dart에서 생성자와 소멸자, 그리고 관련 메서드를 사용하는 방법을 이해할 수 있도록 정리해 봤습니다. 예제 코드를 통해 실습을 유도하고, 실제로 코드를 작성할 수 있을 만큼 상세히 설명하였습니다.

Dart 객체지향 프로그래밍 - 생성자와 소멸자
Dart 객체지향 프로그래밍 - 생성자와 소멸자

 

객체지향 프로그래밍 - 생성자와 소멸자

생성자 (Constructor)

생성자는 객체가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 객체의 초기화 작업을 담당합니다. Dart에서는 클래스 이름과 동일한 이름을 가진 메서드가 생성자로 사용됩니다.

반응형

 생성자의 역할 

  • 객체의 초기화
  • 필수적으로 필요한 초기 데이터 설정

 기본 생성자 예제 

class Person { String name; int age; // 생성자 Person(this.name, this.age); void introduce() { print('안녕하세요, 제 이름은 $name이고, 나이는 $age입니다.'); } } void main() { Person person = Person('철수', 20); person.introduce(); // 안녕하세요, 제 이름은 철수이고, 나이는 20입니다. }


 생성자의 종류 

  1. 기본 생성자: 위의 예제처럼 클래스 이름과 동일한 생성자.
  2. 명명된 생성자(Named Constructor): 클래스 내에서 여러 개의 생성자를 만들 때 사용.

 명명된 생성자 예제 

class Point { int x; int y; // 기본 생성자 Point(this.x, this.y); // 명명된 생성자 Point.origin() { x = 0; y = 0; } void display() { print('Point($x, $y)'); } } void main() { Point p1 = Point(10, 20); p1.display(); // Point(10, 20) Point p2 = Point.origin(); p2.display(); // Point(0, 0) }

 


소멸자 (Destructor)

소멸자는 객체가 더 이상 사용되지 않을 때 호출되는 특별한 메서드입니다. Dart에서는 명시적인 소멸자가 없고, 가비지 컬렉터(Garbage Collector)가 메모리 관리를 자동으로 처리합니다. 따라서 소멸자에 대해 신경 쓸 필요가 없습니다.

 

그러나 객체가 삭제될 때 특정 동작이 필요하다면, 대신  dispose  메서드를 정의하고 수동으로 호출할 수 있습니다.

 

 dispose 메서드 예제 

class Resource { void open() { print('리소스를 열었습니다.'); } void close() { print('리소스를 닫았습니다.'); } } void main() { Resource resource = Resource(); resource.open(); // 리소스 사용 후 직접 닫아줘야 함 resource.close(); }

실습 문제

  1.  Car  클래스를 만들어 보세요.  Car  클래스는 다음과 같은 속성을 가집니다.
    •  make  (제조사)
    •  model  (모델명)
    •  year  (제조 연도)
    생성자를 통해 이 속성들을 초기화하고,  displayInfo  메서드를 통해 자동차 정보를 출력하세요.

  2.  BankAccount  클래스를 만들어 보세요.  BankAccount  클래스는 다음과 같은 속성을 가집니다.
    •  accountNumber  (계좌 번호)
    •  balance  (잔액)
    기본 생성자와  deposit  (입금) 및  withdraw  (출금) 메서드를 구현하세요. 각 메서드는 입출금 후 잔액을 출력합니다.

위의 실습 문제를 해결해 보면서 Dart에서 생성자와 메서드를 활용하는 방법을 익혀보세요.


 Car 클래스 예제 답안 

class Car { String make; String model; int year; // 생성자 Car(this.make, this.model, this.year); void displayInfo() { print('제조사: $make, 모델명: $model, 제조 연도: $year'); } } void main() { Car car = Car('Hyundai', 'Sonata', 2021); car.displayInfo(); // 제조사: Hyundai, 모델명: Sonata, 제조 연도: 2021 }

 

 BankAccount 클래스 예제 답안 

class BankAccount { String accountNumber; double balance; // 생성자 BankAccount(this.accountNumber, this.balance); void deposit(double amount) { balance += amount; print('입금 후 잔액: $balance'); } void withdraw(double amount) { if (balance >= amount) { balance -= amount; print('출금 후 잔액: $balance'); } else { print('잔액 부족'); } } } void main() { BankAccount account = BankAccount('123-456-789', 1000.0); account.deposit(500.0); // 입금 후 잔액: 1500.0 account.withdraw(200.0); // 출금 후 잔액: 1300.0 account.withdraw(2000.0); // 잔액 부족 }

 

이 글을 통해 생성자와 소멸자에 대해 이해하고, 실제로 코드를 작성해 보면서 객체지향 프로그래밍의 기본 개념을 익힐 수 있을 것입니다.

반응형