Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpFPMd 113 of 113 menu
◀

Смешанная практика ООП в Dart

Задачи из разных тем раздела в одном наборе - без повторения одной и той же схемы решения.

Сделайте класс Line с полями sku и price. Сделайте класс Cart с методом total(List<Line> lines). Сделайте DiscountCart, который возвращает сумму price минус 10, но не ниже 0. Дан список:

var items = [ Line("a", 30), Line("b", 5), ];

Выведите итог для Cart и для DiscountCart.

Сделайте sealed class Auth с вариантами Guest и Member с полем name. Сделайте класс Portal с полем Auth, который возвращает "hello guest" или "hello " и имя. Выведите оба варианта.

Сделайте абстрактный класс Storage с абстрактным методом size() и статическим счетчиком созданных хранилищ. Сделайте ListStorage, который оборачивает список строк. Создайте два ListStorage, выведите счетчик и оба size().

Сделайте класс Invoice с полями id и sum. Сделайте класс Registry со статической картой int - Invoice. Запишите счет 1 на сумму 100, прочитайте по id и выведите sum.

Сделайте enum Role с константами viewer и editor. Сделайте класс Account с полем role и методом canEdit(), который возвращает true только для Role.editor. Сделайте класс AdminAccount, наследующий Account(Role.editor) и переопределяющий canEdit() так, чтобы метод всегда возвращал true. Выведите три результата canEdit(): Account(Role.viewer), Account(Role.editor), AdminAccount().

Сделайте sealed class Msg с вариантами Text с полем body и Ping. Сделайте класс Inbox, который хранит список Msg и метод textCount() - число сообщений Text. Дан inbox из Ping(), Text("a"), Text("b"). Выведите счетчик.

Сделайте класс Ident с геттером id. Сделайте класс Task с полями id и title, реализующий Ident. Напишите функцию pickTitle(List<Ident> list, int id), которая находит заголовок задачи по id. Дан список из двух Task. Выведите заголовок для id = 2 и для id = 9.

Сделайте класс Version с полями major и minor. Сделайте класс Release, который хранит Version? и метод set(Version v). Сделайте класс Tool с методом label(), возвращающим "tool". Сделайте VersionTool, который выводит "tool " и major из текущего Release, если версия задана, иначе "tool ?". Установите Version(2, 1) и выведите label().

←
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить