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

Да се създаде програма за книжарница.&#x20;

&#x20;\
&#x20;

Предвидете програмата да продуцира изключение InvalidDataException с подходящо съобщение. Приложете по усмотрение.&#x20;

Ще ви е небходим интерфейс CoverType с метод isHardCover(), който връща булева стойност.&#x20;

Абстрактен клас Person:&#x20;

* Атрибути: firstName, lastName (определете модификаторите за достъп);&#x20;
* Конструктор – според употребата;&#x20;
* Акселератори: според модификаторите и употребата;&#x20;
* Методи: equals, hashCode, toString.&#x20;

Клас Author:&#x20;

* Наследява Person;&#x20;
* Атрибути: country, genre (определете модификаторите за достъп);&#x20;
* Конструктор – според употребата;&#x20;
* Акселератори: според модификаторите и употребата;&#x20;
* Методи: equals, hashCode, toString.&#x20;

Клас Book:&#x20;

* Имплементира интерфейс CoverType;&#x20;
* Атрибути: title, author, publishingYear, quantity (по-голямо от 5), price (по-голяма от 9,99) (определете модификаторите за достъп);&#x20;
* Конструктор – според употребата;&#x20;
* Акселератори: според модификаторите и употребата;&#x20;
* Методи: : equals, hashCode, toString;&#x20;
* Интерфейсният метод връща истина, ако книгата е издадена преди 2000 година и има цена над 14лв.&#x20;

Клас BookStore:&#x20;

* Атрибути:  име на книжарницата и колекция от уникални книги (определете модификаторите за достъп);&#x20;
* Експлицитен конструктор по име на файл, в който се съдържа информация за книгите;&#x20;

Примерен формат на файла:&#x20;

„Под игото“ Иван Вазов България класика 1985 12 15,0&#x20;

„На изток от Рая“ Джон Стайнбек САЩ класика 1998 18 12,58&#x20;

...&#x20;

* Методи:&#x20;
* За добавяне на книга към колекцията;&#x20;
* За намиране и връщане на цената на наличните книги;&#x20;
* За намиране и връщане на средната цена на книги от зададен жанр;&#x20;
* За намиране и връщане на автора с най-много книги;&#x20;
* За намиране и връщане на броя уникални автори, публикували книга след зададена година;&#x20;
* За връщане на книгите, подредени по националността на автора;&#x20;
* За намиране и връщане на броя книги с твърди корици;&#x20;
* toString.&#x20;

Клас Main с главна функция:&#x20;

* създайте обект BookStore с име на файл, в който има поне 3 различни автора с минимум една книга;&#x20;
* добавете нови книги в книжарницата;&#x20;
* запишете в нов файл:&#x20;
* цената на всички книги;&#x20;
* средната цена на книгите от жанр „Класика“;&#x20;
* името на автора с най-много книги;&#x20;
* колко са авторите с книги, издадени след 1990 година;&#x20;
* книгите, сортирани по националност на автора;&#x20;
* броя книги с твърди корици.&#x20;

&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://programmingfundamental.gitbook.io/programmingwithjava/obektno-orientirano-programirane-1-chast/laboratorno-uprazhnenie-11/uprazhneniya-za-izvnauditorna-zaetost.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
