본문 바로가기
Dart/Study

Dart에서 클래스 생성 시 일반 파라미터와 Named 파라미터 사용 방법: 초보자를 위한 완벽 가이드

by Maccrey Coding 2024. 9. 15.
반응형

 

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.

 

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

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

play.google.com

반응형