Практика на абстрактные классы в Dart
Задачи на абстрактные контракты и общие реализации в базовом классе.
Сделайте абстрактный класс Storage
с абстрактным методом count().
Сделайте классы ListStorage
и SetStorage, которые возвращают
размер своей коллекции.
Выведите оба значения для непустых коллекций.
Дан следующий код:
abstract class Report {
String get title;
String body();
String headline() {
return title.toUpperCase();
}
}
Сделайте DailyReport с заголовком "day"
и телом "ok". Выведите headline()
и body().
Сделайте абстрактный класс Payment
с полем amount
и абстрактным методом label().
Сделайте классы CardPayment
и CashPayment, возвращающие
"card" и "cash".
Выведите метки для суммы 50.
Сделайте абстрактный класс UnitConv
с методом toBase(double value)
в теле класса и абстрактным методом
fromBase(double value).
Сделайте KmConv, где базовая единица -
метры, а множитель равен 1000.
Выведите 2.5 км в метрах и обратно.
Сделайте абстрактный класс Role
с абстрактным геттером code.
Сделайте GuestRole со значением
"G" и StaffRole
со значением "S".
Дан список ролей из обоих типов.
Выведите коды в порядке списка в одной строке
без пробелов.
Дан следующий код:
abstract class Job {
Job(this.name);
String name;
bool run();
String describe() {
return name + (run() ? ":done" : ":fail");
}
}
Сделайте CopyJob, возвращающий
true, и MoveJob,
возвращающий false.
Выведите describe() для обоих.
Сделайте абстрактный класс Widget
со статическим счетчиком созданных виджетов
и абстрактным методом kind().
Пусть каждый наследник увеличивает счетчик
в конструкторе.
Создайте по одному Button
и Field. Выведите счетчик
и оба kind().
Сделайте абстрактный класс Parser
с абстрактным методом
parse(String line).
Сделайте IntParser, который возвращает
число или null.
Даны строки "10", "x".
Выведите результаты разбора.
Сделайте абстрактный класс Discount
с методом apply(int price)
в базовом классе, вызывающим абстрактный
метод rate().
Сделайте HalfPrice со ставкой 0.5.
Выведите цену 80 после скидки.