요약 - 동물 시스템
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 56번째.
챌린지
쉬움믹스인에 대해 배운 모든 것을 하나로 모으는 완전한 동물 시스템을 구축해 봅시다! 기본 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을 상속받고Flying과Walking믹스인을 사용하는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()를 호출하세요
}