Упражнения за извънаудиторна заетост
Задача 1
Да се дефинира клас Page, който описва страница от книга.
Класът трябва да съдържа:
numberот типint;contentот типString.
Да се реализират конструктор, методи за четене и промяна, toString() и compareTo(Page other). Класът трябва да имплементира Comparable<Page>, като страниците се сравняват по номер.
Задача 2
Да се дефинира изключение InvalidPageException, което се използва при невалиден номер на страница или невъзможна операция със страници.
Класът трябва да наследява RuntimeException и да съдържа конструктор:
InvalidPageException(String message)
Задача 3
Да се дефинира интерфейс BookEditor.
Интерфейсът трябва да съдържа методи:
generateBook(String title, int numberPages);swapPages(int firstPageNumber, int secondPageNumber);updatePage(int pageNumber, String content);removePage(int pageNumber).
Когато дадена операция не може да бъде изпълнена, трябва да се хвърля InvalidPageException.
Задача 4
Да се дефинира клас Book, който имплементира BookEditor.
Класът трябва да съдържа:
titleот типString;pagesот типMap<Integer, Page>.
Ключът в картата трябва да бъде номерът на страницата, а стойността обектът от тип Page. Да се използва такава реализация на Map, която позволява страниците да се извеждат подредени по номер.
Да се реализират:
- конструктор
Book(String title, int numberPages); - метод
addPage(Page page); - методите от
BookEditor; toString().
Методът generateBook трябва да създава книга с празни страници. Методът swapPages трябва да разменя съдържанието на две страници, а не номерата им.
Задача 5
Да се създаде клас Application, който демонстрира:
- създаване на книга;
- добавяне на страница;
- промяна на съдържание на страница;
- премахване на страница;
- размяна на две страници;
- обработка на
InvalidPageException.
Да се използва try-catch при операции, които могат да завършат с изключение.