Dart는 객체 지향 프로그래밍 언어로, 클래스와 객체를 사용하여 효율적이고 체계적인 코드를 작성할 수 있습니다.
이 블로그에서는 Dart에서 getter, setter, 그리고 static의 개념과 이들이 어떻게 다른지, 그리고 각각의 최적 사용 사례를 설명하겠습니다.
1. Getter와 Setter
Getter와 Setter는 클래스의 필드(속성)에 접근하고 수정하는 메서드입니다. 이들 메서드는 클래스의 데이터 은닉을 지원하고, 데이터의 안전한 접근을 보장합니다.
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++; } } |
Getter와 Setter는 주로 인스턴스의 데이터 접근 및 수정에 사용되며, 객체 지향의 데이터 캡슐화 원칙을 구현하는 데 유용합니다.
반면, Static 키워드는 클래스 레벨에서 데이터나 메서드를 정의하며, 인스턴스와 관계없이 공통적인 작업을 수행할 때 사용됩니다.
- Getter와 Setter는 인스턴스 데이터의 접근과 변경을 제어하며, 주로 인스턴스 멤버와 관련됩니다.
- Static은 클래스 전체에서 공통적으로 사용하는 데이터나 메서드를 정의하며, 인스턴스 없이도 접근할 수 있습니다.
Dart에서 getter, setter, 그리고 static은 각각 특정 목적에 맞게 사용됩니다.
Getter와 Setter는 인스턴스의 데이터 접근과 수정을 관리하며, 데이터 캡슐화와 안전성을 제공합니다.
반면, Static은 클래스 레벨에서 공통 데이터를 정의하고, 인스턴스와 관계없이 메서드를 호출할 수 있게 해줍니다.
각 개념의 특성과 사용 사례를 잘 이해하고 적절히 활용함으로써, 더 효율적이고 구조적인 Dart 코드를 작성할 수 있습니다.
공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Study' 카테고리의 다른 글
Dart의 Typedef: 쉽게 이해하는 사용 방법과 옵션 (1) | 2024.09.02 |
---|---|
Dart의 .. 연산자: 카스케이드 연산자 사용법 완벽 가이드 (0) | 2024.08.26 |
Dart에서 패스워드 검증하기: 정규 표현식 사용법 (0) | 2024.08.09 |
Dart에서 이메일 주소 검증하기: 정규 표현식 사용법 (0) | 2024.08.09 |
Dart 변수와 함수 명명: 개발자라면 꼭 알아야 할 키워드와 클린 코딩 가이드 (0) | 2024.08.07 |