Menu
Coddy logo textTech

초기화 리스트

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 12번째.

초기화 리스트(initializer list)는 생성자에서 콜론 뒤, 생성자 본문 앞에 나타나는 코드입니다. 이는 생성자 본문이 실행되기 전에 실행되며 인스턴스 변수를 초기화하는 데 사용됩니다.

이전 레슨에서 이미 초기화 리스트(initializer lists)를 확인했습니다:

Point.origin() : x = 0, y = 0;

콜론 뒤의 부분(x = 0, y = 0)은 초기화 리스트입니다. 여러 초기화는 쉼표로 구분됩니다.

초기화 리스트는 생성자 본문이 실행되기 전에 설정되어야 하는 final 변수를 다룰 때 필수적입니다:

class Circle {
  final double radius;
  final double area;

  Circle(double r)
      : radius = r,
        area = 3.14159 * r * r;
}

Circle c = Circle(5);
print(c.radius); // 5.0
print(c.area);   // 78.53975

초기화 리스트는 생성자 매개변수를 할당하기 전에 계산이나 변환을 수행할 수도 있습니다. 이는 객체 생성 중에 값을 도출하거나 데이터를 검증해야 할 때 유용합니다.

단축형 this. 구문을 초기화 리스트와 결합할 수 있습니다:

class Rectangle {
  final double width;
  final double height;
  final double area;

  Rectangle(this.width, this.height)
      : area = width * height;
}

Rectangle rect = Rectangle(4, 5);
print(rect.area); // 20.0

여기서 widthheight는 단축 구문을 통해 할당되며, area는 해당 값들을 사용하여 초기화 리스트에서 계산됩니다.

challenge icon

챌린지

쉬움

객체가 생성될 때 이니셜라이저 리스트(initializer lists)를 사용하여 파생된 값을 계산하는 상자 크기 계산기를 만들어 봅시다.

코드를 두 개의 파일로 구성합니다:

  • box.dart: 치수와 자동으로 계산되는 속성을 가진 3D 상자를 나타내는 Box 클래스를 정의합니다. 클래스에는 다음이 포함되어야 합니다:
    • 세 개의 final double 필드: length, width, height
    • 두 개의 계산된 final double 필드: volumesurfaceArea
    • this. 축약형을 사용하여 length, width, height를 인자로 받고, 이니셜라이저 리스트를 사용하여 volume (length × width × height)과 surfaceArea (2 × (length×width + width×height + height×length))를 계산하는 생성자
    • 상자 정보를 출력하는 display() 메서드
  • main.dart: 상자 클래스를 임포트하고 두 개의 상자를 생성합니다:
    • 치수가 3.0, 4.0, 5.0인 상자
    • 치수가 2.0, 2.0, 2.0인 상자
    나열된 순서대로 각 상자에 대해 display()를 호출합니다.

display() 메서드는 다음 형식으로 정확하게 출력해야 합니다:

Box: [length]x[width]x[height] | Volume: [volume] | Surface: [surfaceArea]

예상 출력:

Box: 3.0x4.0x5.0 | Volume: 60.0 | Surface: 94.0
Box: 2.0x2.0x2.0 | Volume: 8.0 | Surface: 24.0

치트 시트

초기화 리스트(initializer list)는 생성자에서 콜론 뒤, 생성자 본문 앞에 나타나는 코드입니다. 이는 생성자 본문이 실행되기 전에 실행되며 인스턴스 변수를 초기화하는 데 사용됩니다.

쉼표로 구분된 여러 초기화가 포함된 기본 구문:

Point.origin() : x = 0, y = 0;

초기화 리스트는 생성자 본문이 실행되기 전에 값이 설정되어야 하는 final 변수에 필수적입니다:

class Circle {
  final double radius;
  final double area;

  Circle(double r)
      : radius = r,
        area = 3.14159 * r * r;
}

this. 단축 구문과 초기화 리스트를 결합하여 일부 필드는 직접 할당하고 다른 필드는 계산할 수 있습니다:

class Rectangle {
  final double width;
  final double height;
  final double area;

  Rectangle(this.width, this.height)
      : area = width * height;
}

초기화 리스트는 생성자 매개변수를 할당하기 전에 계산이나 변환을 수행할 수 있어, 객체 생성 중에 값을 도출하는 데 유용합니다.

직접 해보기

import 'box.dart';

void main() {
  // TODO: 크기가 3.0, 4.0, 5.0인 상자 생성하기
  
  // TODO: 크기가 2.0, 2.0, 2.0인 상자 생성하기
  
  // TODO: 각 상자에 대해 순서대로 display() 호출하기
  
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨