본문 바로가기
Dart/Study

Dart에서 Getter와 Setter, Static: 개념 정리와 사용 사례

by Maccrey Coding 2024. 8. 26.
반응형

 

Dart는 객체 지향 프로그래밍 언어로, 클래스와 객체를 사용하여 효율적이고 체계적인 코드를 작성할 수 있습니다.

이 블로그에서는 Dart에서 getter, setter, 그리고 static의 개념과 이들이 어떻게 다른지, 그리고 각각의 최적 사용 사례를 설명하겠습니다.

1. Getter와 Setter

GetterSetter는 클래스의 필드(속성)에 접근하고 수정하는 메서드입니다. 이들 메서드는 클래스의 데이터 은닉을 지원하고, 데이터의 안전한 접근을 보장합니다.

Getter

Getter는 클래스의 필드 값을 읽기 위한 메서드입니다. get 키워드를 사용하여 정의하며, 주로 필드 값을 반환하는 역할을 합니다.

class Person {
  String _name; // Private field

  Person(this._name);

  // Getter
  String get name => _name;
}

위의 코드에서 name은 Person 클래스의 필드 _name의 값을 읽기 위해 사용되는 getter입니다.

Setter

Setter는 클래스의 필드 값을 수정하기 위한 메서드입니다. set 키워드를 사용하여 정의하며, 주로 필드 값을 업데이트하는 역할을 합니다.

class Person {
  String _name;

  Person(this._name);

  // Setter
  set name(String newName) {
    _name = newName;
  }
}

위의 코드에서 name은 Person 클래스의 필드 _name의 값을 수정하기 위해 사용되는 setter입니다.

사용 시기

  • Getter: 클래스의 필드 값을 외부에서 읽을 때 사용합니다. 예를 들어, 객체의 상태를 외부에서 확인하고 싶을 때 유용합니다.
  • Setter: 클래스의 필드 값을 외부에서 수정할 때 사용합니다. 데이터의 유효성을 검증하거나 변경 작업을 수행할 때 유용합니다.

2. Static

Static 키워드는 클래스 레벨에서 데이터를 정의하거나 메서드를 선언할 때 사용됩니다. static 멤버는 클래스의 인스턴스와는 독립적으로 존재하며, 클래스 이름을 통해 직접 접근할 수 있습니다.

Static Field

Static Field는 모든 인스턴스가 공유하는 변수입니다. 클래스의 인스턴스가 아닌 클래스 자체에 속합니다.

class Counter {
  static int _count = 0;

  static int get count => _count;

  static void increment() {
    _count++;
  }
}

위의 코드에서 _count는 모든 Counter 인스턴스에서 공유되는 static 필드입니다. increment 메서드를 통해 _count의 값을 증가시킬 수 있습니다.

Static Method

Static Method는 클래스의 인스턴스와는 무관하게 호출할 수 있는 메서드입니다. 클래스의 인스턴스를 생성하지 않고도 호출할 수 있습니다.

class Utility {
  static void printMessage(String message) {
    print(message);
  }
}

위의 코드에서 printMessage는 Utility 클래스의 static 메서드로, 인스턴스 없이 호출할 수 있습니다.

사용 시기

  • Static Field: 모든 인스턴스가 동일한 값을 공유해야 할 때 사용합니다. 예를 들어, 카운터, 설정 값, 또는 전역 상태를 관리할 때 유용합니다.
  • Static Method: 클래스의 인스턴스와 무관하게 공통적인 작업을 수행할 때 사용합니다. 예를 들어, 유틸리티 함수, 헬퍼 메서드 등을 정의할 때 유용합니다.

3. Getter, Setter vs Static

Getter 클래스의 private 필드 값을 읽기 위한 메서드 인스턴스의 데이터 값을 외부에서 읽어야 할 때 class Person {
String _name;
Person(this._name);
String get name => _name;
}
Setter 클래스의 private 필드 값을 수정하기 위한 메서드 인스턴스의 데이터 값을 외부에서 수정해야 할 때 class Person {
String _name;
Person(this._name);
set name(String newName) { _name = newName; }
}
Static 클래스 레벨에서 정의된 데이터나 메서드. 모든 인스턴스가 공유함 모든 인스턴스에서 공유해야 하는 데이터나 공통 메서드를 정의할 때 class Counter {
static int _count = 0;
static int get count => _count;
static void increment() { _count++; }
}

GetterSetter는 주로 인스턴스의 데이터 접근 및 수정에 사용되며, 객체 지향의 데이터 캡슐화 원칙을 구현하는 데 유용합니다.
반면, Static 키워드는 클래스 레벨에서 데이터나 메서드를 정의하며, 인스턴스와 관계없이 공통적인 작업을 수행할 때 사용됩니다.

  • Getter와 Setter는 인스턴스 데이터의 접근과 변경을 제어하며, 주로 인스턴스 멤버와 관련됩니다.
  • Static은 클래스 전체에서 공통적으로 사용하는 데이터나 메서드를 정의하며, 인스턴스 없이도 접근할 수 있습니다.

Dart에서 getter, setter, 그리고 static은 각각 특정 목적에 맞게 사용됩니다.

GetterSetter는 인스턴스의 데이터 접근과 수정을 관리하며, 데이터 캡슐화와 안전성을 제공합니다.

반면, Static은 클래스 레벨에서 공통 데이터를 정의하고, 인스턴스와 관계없이 메서드를 호출할 수 있게 해줍니다.

각 개념의 특성과 사용 사례를 잘 이해하고 적절히 활용함으로써, 더 효율적이고 구조적인 Dart 코드를 작성할 수 있습니다.

 

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형