Обзор проекта
Часть раздела Объектно-ориентированное программирование путешествия по Dart на Coddy — урок 101 из 110.
Задание
ЛегкоВ этой главе вы создадите систему управления библиотекой, которая объединяет классы, инкапсуляцию и паттерны проектирования в работающее приложение.
Давайте начнем с настройки структуры проекта с помощью простого класса Book — фундамента, на котором будут строиться все будущие уроки.
Вы создадите два файла:
book.dart: Определите классBookс тремя свойствами:isbn(String),title(String) иauthor(String). Включите конструктор, который инициализирует все три свойства, и переопределите методtoString(), чтобы он возвращал информацию о книге в формате[isbn] title by author.main.dart: Импортируйте файл с книгой и создайте две книги, чтобы проверить правильность работы вашего класса. Создайте книгу с ISBN978-0-13-468599-1, названиемThe Pragmatic Programmerи авторомDavid Thomas. Создайте вторую книгу с ISBN978-0-596-51774-8, названиемJavaScript: The Good Partsи авторомDouglas Crockford. Выведите обе книги на печать (при этом будет использоваться ваш методtoString()).
Эта простая структура устанавливает шаблон организации файлов, которому вы будете следовать на протяжении всего проекта. В следующих уроках вы расширите его классами пользователей, логикой заимствования и многим другим!
Ожидаемый результат:
[978-0-13-468599-1] The Pragmatic Programmer by David Thomas
[978-0-596-51774-8] JavaScript: The Good Parts by Douglas CrockfordПопробуйте сами
import 'book.dart';
void main() {
// TODO: Создайте книгу с ISBN '978-0-13-468599-1', названием 'The Pragmatic Programmer' и автором 'David Thomas'
// TODO: Создайте вторую книгу с ISBN '978-0-596-51774-8', названием 'JavaScript: The Good Parts' и автором 'Douglas Crockford'
// TODO: Выведите обе книги (это задействует метод toString())
}
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыБиблиотеки и импортВведение в ООПКлассы и объектыКлючевое слово thisМетодыПеременные экземпляраОсновы конструкторовИтоги — Простой калькулятор4Null-безопасность
Введение в Null-безопасностьNullable и Non-Nullable типыОператоры ? и !Ключевое слово Late и Null-безопасностьNull-aware операторыNull-безопасность в классахИтоги — Система профилей пользователей7Абстрактные классы и интерфейсы
Абстрактные классыАбстрактные методыИнтерфейсы в DartНеявные интерфейсыРеализация против наследованияМножественные интерфейсыИтоги — Калькулятор фигур10Коллекции и обобщения
Обзор List, Set, MapТипобезопасные коллекцииОбобщенные классыОбобщенные методыОграничения обобщенийIterable и IteratorИтоги: Обобщенное хранилище13Продвинутые концепции ООП
Композиция против наследованияМетоды расширенияВызываемые классыЗапечатанные классы (Dart 3)Записи (Dart 3)Паттерны и сопоставление (3.0)Перечисления с методами16Проект: Управление библиотекой
Обзор проектаКлассы Book и User2Конструкторы в Dart
Конструктор по умолчаниюИменованные конструкторыСписки инициализацииКонстантные конструкторыФабричные конструкторыПеренаправляющие конструкторыИтоги — Shape Builder5Инкапсуляция
Публичные и приватные членыСоглашение о префиксе _Приватность на уровне библиотекГеттеры и сеттеры: подробный разборСкрытие данныхИтоги — Записи о студентах8Mixins
Введение в MixinsСоздание MixinsИспользование нескольких MixinsКлючевое слово on в MixinsMixin и наследованиеMixin и интерфейсИтоги: Система животных11Специальные методы
Переопределение toString()Переопределение hashCode и ==Интерфейс ComparableМетод call()Переопределение noSuchMethodПовторение — Пользовательская коллекция14Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy3Свойства классов
Члены экземпляра и статические членыПоля Final и ConstПеременные LateСтатические методы и поляГеттеры и сеттерыИтоги — Менеджер банковского счета6Наследование
Основы наследованияКлючевое слово superПереопределение методовАннотация @overrideКлючевое слово final для классовКонструкторы и наследованиеИтоги: Иерархия сотрудников9Полиморфизм
Основы полиморфизмаПолиморфизм через интерфейсыПроверка типов во время выполненияОператоры is и asКлючевое слово covariantИтоги — Обработчик платежей12Асинхронное ООП
Futures и async/awaitОсновы StreamsКонтроллеры StreamАсинхронные конструкторыАсинхронность в методах классовИтоги — Data Fetcher15Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий