Упражнения за извънаудиторна заетост

Задача 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 при операции, които могат да завършат с изключение.


This site uses Just the Docs, a documentation theme for Jekyll.