Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Разработайте программу учета книг для небольшой библиотеки. Программа должна позволять добавлять новые книги, удалять старые, искать книги по различным параметрам (например, по автору, названию или году издания). Также программа должна поддерживать функцию вывода списка всех книг, отсортированного по выбранному пользователем критерию. Использовать парадигму объектно-ориентированного программирования.
- void main() {
- final libraryManager = LibraryManagerImpl();
- final books = [
- Book(
- name: "Град обреченный",
- author: "Братья Стругацкие",
- publicationYear: 1972,
- ),
- Book(
- name: "Искра жизни",
- author: "Эрих Мария Ремарк",
- publicationYear: 1952,
- ),
- Book(
- name: "Время жить и время умирать",
- author: "Эрих Мария Ремарк",
- publicationYear: 1954,
- ),
- ];
- libraryManager.addBooks(books);
- print('Sorted by author: ${libraryManager.sortedBooksByAuthor}\n');
- print('Sorted by name: ${libraryManager.sortedBooksByName}\n');
- print('Sorted by year: ${libraryManager.sortedBooksByPublicationYear}\n');
- libraryManager.deleteBook(books.first);
- print('Delete one book: ${libraryManager.findBooks()}\n');
- }
- abstract class LibraryManager {
- void addBooks(List<Book> books);
- void deleteBook(Book book);
- List<Book> findBooks({String? name, String? author, int? publicationYear});
- List<Book> get sortedBooksByName;
- List<Book> get sortedBooksByAuthor;
- List<Book> get sortedBooksByPublicationYear;
- }
- final class LibraryManagerImpl implements LibraryManager {
- final List<Book> _books = [];
- @override
- void addBooks(List<Book> books) {
- _books.addAll(books);
- }
- @override
- void deleteBook(Book book) {
- _books.remove(book);
- }
- @override
- List<Book> findBooks({String? name, String? author, int? publicationYear}) {
- return _books.where((book) {
- if (name != null &&
- !book.name.toLowerCase().contains(name.toLowerCase())) {
- return false;
- }
- if (author != null &&
- !book.author.toLowerCase().contains(author.toLowerCase())) {
- return false;
- }
- if (publicationYear != null && book.publicationYear != publicationYear) {
- return false;
- }
- return true;
- }).toList();
- }
- @override
- List<Book> get sortedBooksByName {
- final sortedBooks = [..._books];
- sortedBooks.sort((a, b) => a.name.compareTo(b.name));
- return sortedBooks;
- }
- @override
- List<Book> get sortedBooksByAuthor {
- final sortedBooks = [..._books];
- sortedBooks.sort((a, b) => a.author.compareTo(b.author));
- return sortedBooks;
- }
- @override
- List<Book> get sortedBooksByPublicationYear {
- final sortedBooks = [..._books];
- sortedBooks.sort((a, b) => a.publicationYear.compareTo(b.publicationYear));
- return sortedBooks;
- }
- }
- final class Book {
- final String name;
- final String author;
- final int publicationYear;
- const Book({
- required this.name,
- required this.author,
- required this.publicationYear,
- });
- @override
- String toString() => "Name: $name, Author: $author, Publication year: $publicationYear";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement