Menu
Coddy logo textTech

요약 - 동물 시스템

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

challenge icon

챌린지

쉬움

믹스인에 대해 배운 모든 것을 하나로 모으는 완전한 동물 시스템을 구축해 봅시다! 기본 Animal 클래스, on 키워드를 사용하는 동작 믹스인, 그리고 이러한 기능들을 다양한 방식으로 결합하는 특정 동물 클래스들을 만들 것입니다.

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

  • animal.dart: 모든 동물이 상속받을 기본 클래스를 정의합니다:
    • String name 속성과 생성자를 가진 Animal 클래스
    • [name] is an animal을 출력하는 describe() 메서드
  • behaviors.dart: animal 파일을 임포트하고, on 키워드를 사용하여 Animal로 제한된 세 가지 동작 믹스인을 만듭니다:
    • [name] is swimming을 출력하는 swim() 메서드를 가진 Swimming 믹스인
    • [name] is flying을 출력하는 fly() 메서드를 가진 Flying 믹스인
    • [name] is walking을 출력하는 walk() 메서드를 가진 Walking 믹스인
  • main.dart: 두 파일을 모두 임포트하고 상속과 다양한 믹스인 조합을 결합한 세 가지 동물 클래스를 만듭니다:
    • Animal을 상속받고 세 가지 믹스인(Swimming, Flying, Walking)을 모두 사용하는 Duck 클래스
    • Animal을 상속받고 Swimming 믹스인만 사용하는 Fish 클래스
    • Animal을 상속받고 FlyingWalking 믹스인을 사용하는 Bird 클래스
    그런 다음 각 동물의 능력을 보여줍니다:
    • 이름이 'Donald'Duck을 생성하고, describe()를 호출한 후 swim(), fly(), walk()를 호출합니다.
    • 빈 줄을 출력합니다.
    • 이름이 'Nemo'Fish를 생성하고, describe()를 호출한 후 swim()을 호출합니다.
    • 빈 줄을 출력합니다.
    • 이름이 'Tweety'Bird를 생성하고, describe()를 호출한 후 fly()walk()를 호출합니다.

각 믹스인은 on Animal 제약 조건 덕분에 name 속성에 접근할 수 있으며, 유연한 동작 구성을 제공하면서도 타입 안전성을 보장합니다.

예상 출력:

Donald is an animal
Donald is swimming
Donald is flying
Donald is walking

Nemo is an animal
Nemo is swimming

Tweety is an animal
Tweety is flying
Tweety is walking

직접 해보기

import 'animal.dart';
import 'behaviors.dart';

// TODO: Animal을 상속하고 Swimming, Flying, Walking 믹스인을 사용하는 Duck 클래스를 생성하세요
class Duck {
  // TODO: Duck 클래스를 구현하세요
}

// TODO: Animal을 상속하고 Swimming 믹스인만 사용하는 Fish 클래스를 생성하세요
class Fish {
  // TODO: Fish 클래스를 구현하세요
}

// TODO: Animal을 상속하고 Flying과 Walking 믹스인을 사용하는 Bird 클래스를 생성하세요
class Bird {
  // TODO: Bird 클래스를 구현하세요
}

void main() {
  // TODO: 이름이 'Donald'인 Duck을 생성하세요
  // describe(), swim(), fly(), walk()를 호출하세요
  
  // TODO: 빈 줄을 출력하세요
  
  // TODO: 이름이 'Nemo'인 Fish를 생성하세요
  // describe(), swim()을 호출하세요
  
  // TODO: 빈 줄을 출력하세요
  
  // TODO: 이름이 'Tweety'인 Bird를 생성하세요
  // describe(), fly(), walk()를 호출하세요
}

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