Dart는 객체지향 프로그래밍 언어로, 클래스(Class)와 객체(Object)를 쉽게 다룰 수 있게 해줍니다.
Dart에서 클래스를 만들 때, 생성자를 통해 데이터를 전달하는 방식이 중요한데, 이때 일반 파라미터(positional parameters)와 named 파라미터(named parameters)를 활용할 수 있습니다.
오늘은 이 두 가지 개념을 초보자도 쉽게 이해할 수 있도록 설명하고, 코드 예시를 통해 실제로 적용해보겠습니다.
1. 클래스(Class)란 무엇인가?
클래스는 하나의 청사진(blueprint)이라고 생각하면 쉽습니다.
객체는 클래스를 기반으로 만들어지며, 클래스 내부에는 속성(변수)과 행동(메서드)이 정의됩니다.
예를 들어, Car라는 클래스를 만든다면, 이 클래스에는 자동차의 brand, model, year와 같은 속성이 있고, drive()나 brake() 같은 메서드가 있을 수 있습니다.
class Car {
String brand;
String model;
int year;
Car(this.brand, this.model, this.year);
}
위 코드는 Car 클래스를 정의하고, 이 클래스를 기반으로 객체를 생성할 수 있습니다.
void main() {
var myCar = Car('Tesla', 'Model S', 2023);
print(myCar.brand); // 출력: Tesla
}
2. 일반 파라미터란?
일반 파라미터(positional parameters)는 클래스의 생성자에서 전달된 값을 순서대로 할당하는 방식입니다.
위 예시의 Car 클래스에서 사용한 방식이 바로 일반 파라미터입니다.
생성자를 호출할 때, 전달하는 인자의 순서가 매우 중요합니다.
장점
- 코드가 간결해짐
- 간단한 클래스에서는 사용하기 편리함
단점
- 순서를 기억해야 하기 때문에 가독성이 떨어질 수 있음
- 선택적인 값을 다루기 어려움
3. Named 파라미터란?
Named 파라미터(named parameters)는 파라미터에 이름을 지정하여 전달하는 방식입니다.
이를 통해 코드의 가독성을 높이고, 순서와 상관없이 값을 전달할 수 있습니다.
Dart에서 Named 파라미터는 중괄호 {}를 사용하여 정의합니다.
class Car {
String brand;
String model;
int year;
Car({required this.brand, required this.model, required this.year});
}
Named 파라미터로 클래스를 생성할 때는 이름을 지정해 값을 전달해야 합니다.
void main() {
var myCar = Car(brand: 'Tesla', model: 'Model S', year: 2023);
print(myCar.brand); // 출력: Tesla
}
장점
- 가독성이 좋음: 각 파라미터가 어떤 역할을 하는지 명확하게 알 수 있음
- 순서에 상관없이 값을 전달할 수 있음
- 선택적 파라미터를 쉽게 다룰 수 있음
단점
- 일반 파라미터보다 다소 복잡해 보일 수 있음
4. 일반 파라미터와 Named 파라미터 예시
두 가지 방식을 모두 사용하여 더 복잡한 클래스를 만들어봅시다.
예를 들어, Laptop 클래스를 생성할 때, brand와 model은 필수 값이지만, RAM과 storage는 선택적으로 입력할 수 있게 만들고 싶다고 가정해 보겠습니다.
class Laptop {
String brand;
String model;
int ram;
int storage;
// 일반 파라미터와 Named 파라미터 혼용
Laptop(this.brand, this.model, {this.ram = 8, this.storage = 256});
}
void main() {
var myLaptop = Laptop('Apple', 'MacBook Pro', ram: 16, storage: 512);
print(myLaptop.brand); // 출력: Apple
print(myLaptop.ram); // 출력: 16
}
위 예제에서는 brand와 model은 일반 파라미터로 필수적으로 받아들이고, ram과 storage는 Named 파라미터로 선택적으로 받아들입니다. 값을 넣지 않으면 기본값으로 ram = 8과 storage = 256이 설정됩니다.
var anotherLaptop = Laptop('Dell', 'XPS');
print(anotherLaptop.ram); // 출력: 8 (기본값)
print(anotherLaptop.storage); // 출력: 256 (기본값)
5. 언제 어떤 파라미터를 사용할까?
- 일반 파라미터는 필수적인 값을 받을 때, 특히 파라미터가 적고 전달하는 값의 순서가 명확할 때 사용하기 좋습니다.
- Named 파라미터는 선택적인 값이 많거나, 코드의 가독성을 높이고 싶을 때 적합합니다. 또한 순서를 기억할 필요가 없기 때문에 복잡한 클래스에서는 더 유리합니다.
Dart에서 클래스를 만들 때, 일반 파라미터와 Named 파라미터를 적절히 활용하면 코드의 가독성, 유지보수성, 유연성을 크게 향상시킬 수 있습니다.
Named 파라미터를 사용하면 파라미터의 순서에 의존하지 않고 코드를 더 명확하게 작성할 수 있으므로, 복잡한 클래스에서는 Named 파라미터를 적극적으로 사용하는 것이 좋습니다.
추가 팁
- required 키워드를 사용해 Named 파라미터를 필수로 지정할 수 있습니다.
- 선택적 파라미터에 기본값을 지정하여 보다 유연한 코드를 작성할 수 있습니다.
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Study' 카테고리의 다른 글
Dart에서 타이머 숫자를 항상 두자리로 표시해주는 padLeft 메서드 사용법 (2) | 2024.11.30 |
---|---|
Dart에서 List와 Map을 정렬하는 방법 (3) | 2024.10.15 |
Dart에서 Immutable vs Mutable 완벽 가이드 (2) | 2024.09.11 |
Dart의 Typedef: 쉽게 이해하는 사용 방법과 옵션 (1) | 2024.09.02 |
Dart의 .. 연산자: 카스케이드 연산자 사용법 완벽 가이드 (0) | 2024.08.26 |