Menu
CoddyTech

Ôn tập: hệ thống động vật

Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 56 trên 110.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống động vật hoàn chỉnh, kết hợp mọi kiến thức bạn đã học về mixin! Bạn sẽ tạo một lớp cơ sở Animal, các mixin hành vi sử dụng từ khóa on và các lớp động vật cụ thể kết hợp những khả năng này theo nhiều cách khác nhau.

Bạn sẽ sắp xếp code vào ba tệp:

  • animal.dart: Định nghĩa lớp cơ sở mà mọi động vật sẽ kế thừa:
    • Một lớp Animal có thuộc tính String name và hàm khởi tạo
    • Một phương thức describe() in ra [name] is an animal
  • behaviors.dart: Nhập tệp động vật và tạo ba mixin hành vi, mỗi mixin chỉ áp dụng cho Animal bằng từ khóa on:
    • Một mixin Swimming có phương thức swim() in ra [name] is swimming
    • Một mixin Flying có phương thức fly() in ra [name] is flying
    • Một mixin Walking có phương thức walk() in ra [name] is walking
  • main.dart: Nhập cả hai tệp và tạo ba lớp động vật kết hợp kế thừa với các tổ hợp mixin khác nhau:
    • Một lớp Duck kế thừa Animal và sử dụng cả ba mixin (Swimming, Flying, Walking)
    • Một lớp Fish kế thừa Animal và chỉ sử dụng mixin Swimming
    • Một lớp Bird kế thừa Animal và sử dụng các mixin Flying và Walking
    Sau đó, minh họa khả năng của từng con vật:
    • Tạo một Duck có tên 'Donald', gọi describe(), sau đó gọi swim(), fly() và walk()
    • In ra một dòng trống
    • Tạo một Fish có tên 'Nemo', gọi describe(), sau đó gọi swim()
    • In ra một dòng trống
    • Tạo một Bird có tên 'Tweety', gọi describe(), sau đó gọi fly() và walk()

Mỗi mixin có thể truy cập thuộc tính name nhờ ràng buộc on Animal, đảm bảo an toàn kiểu dữ liệu mà vẫn cho phép kết hợp hành vi linh hoạt.

Đầu ra mong đợi:

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

Tự làm thử

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

// TODO: Tạo lớp Duck kế thừa Animal và sử dụng các mixin Swimming, Flying, Walking
class Duck {
  // TODO: Triển khai lớp Duck
}

// TODO: Tạo lớp Fish kế thừa Animal và chỉ sử dụng mixin Swimming
class Fish {
  // TODO: Triển khai lớp Fish
}

// TODO: Tạo lớp Bird kế thừa Animal và sử dụng các mixin Flying, Walking
class Bird {
  // TODO: Triển khai lớp Bird
}

void main() {
  // TODO: Tạo một Duck tên là 'Donald'
  // Gọi describe(), swim(), fly(), walk()
  
  // TODO: In ra một dòng trống
  
  // TODO: Tạo một Fish tên là 'Nemo'
  // Gọi describe(), swim()
  
  // TODO: In ra một dòng trống
  
  // TODO: Tạo một Bird tên là 'Tweety'
  // Gọi describe(), fly(), walk()
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Dart online