Dart Functions Classes

Dart에서 함수와 클래스는 객체 지향 프로그래밍을 구현하는 중요한 요소입니다. 아래에서 Dart에서 함수와 클래스를 어떻게 정의하고 사용하는지에 대해 자세히 설명하겠습니다.

함수 (Functions)

Dart에서 함수는 기본적으로 다음과 같이 정의됩니다:

// 반환 타입이 명시된 함수
int add(int a, int b) {
  return a + b;
}

// 반환 타입이 void인 함수
void printMessage(String message) {
  print(message);
}

// 매개변수가 옵셔널인 함수 (기본값을 설정할 수 있음)
void greet(String name, {String greeting = 'Hello'}) {
  print('$greeting, $name!');
}

// 위치 매개변수와 이름 매개변수를 혼용한 함수
void describePerson(String name, int age, {String gender = 'Unknown'}) {
  print('$name is $age years old and identifies as $gender.');
}

void main() {
  // 함수 호출
  int sum = add(3, 5);
  print('Sum: $sum');

  printMessage('Hello, Dart!');
  greet('Alice');
  describePerson('Bob', 25, gender: 'Male');
}
  • 기본 함수: add 함수는 두 개의 정수를 받아들여 그들의 합을 반환합니다.
  • void 함수: printMessage 함수는 반환 값이 없으며, 주어진 메시지를 출력합니다.
  • 옵셔널 매개변수: greet 함수는 이름과 선택적으로 인사말을 인자로 받습니다.
  • 이름 매개변수: describePerson 함수는 위치 매개변수와 이름 매개변수를 혼용하여 사람의 정보를 설명합니다.

클래스 (Classes)

Dart에서 클래스를 정의하고 사용하는 방법은 다음과 같습니다:

// Person 클래스 정의
class Person {
  // 필드 (멤버 변수)
  String name;
  int age;

  // 생성자
  Person(this.name, this.age);

  // 메서드
  void sayHello() {
    print('Hello, my name is $name and I am $age years old.');
  }
}

void main() {
  // 클래스 인스턴스 생성
  var person1 = Person('Alice', 30);
  var person2 = Person('Bob', 25);

  // 메서드 호출
  person1.sayHello();
  person2.sayHello();
}
  • 클래스 정의: Person 클래스는 nameage라는 필드를 가지며, 생성자를 통해 초기화합니다.
  • 생성자: Person 클래스는 this.namethis.age를 통해 생성자를 정의하여 초기화합니다.
  • 메서드: sayHello 메서드는 해당 객체의 속성을 사용하여 인사말을 출력합니다.

상속과 다형성

Dart에서는 상속을 통해 클래스의 재사용성을 높일 수 있고, 다형성을 통해 동일한 인터페이스를 가진 여러 클래스를 처리할 수 있습니다.

// 상속 예제
class Employee extends Person {
  String position;

  Employee(String name, int age, this.position) : super(name, age);

  @override
  void sayHello() {
    print('Hello, my name is $name, I am $age years old, and I work as a $position.');
  }
}

void main() {
  var employee = Employee('Carol', 35, 'Manager');
  employee.sayHello(); // Employee 클래스의 sayHello 메서드 호출
}
  • 상속: Employee 클래스는 Person 클래스를 확장하여 position 필드를 추가하고, super 키워드를 통해 부모 클래스의 생성자를 호출합니다.
  • 다형성: Employee 클래스의 sayHello 메서드가 Person 클래스의 메서드를 재정의하고 있습니다. 이는 다형성의 예입니다.

Dart에서 함수와 클래스는 강력한 객체 지향 프로그래밍의 기본 요소들을 제공하며, 이를 통해 코드의 재사용성을 높이고 유지보수를 용이하게 할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *