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

### Задача 1

Създаите програма за служителите в една фирма.

За целта ще имате нужда от:

* клас Служител, който да описва служител и неговите три имена, основна заплата и длъжност. Методи за достъп до полетата на класа. Метод за текстово представяне. (Пълното име на служителя)
* клас Фирма, който да описва фирмата с нейните служители и имена. В конструктор който приема броя на служителите във фирмата, инициализирайте масива. Създайте два метода&#x20;
  * getInfo() - който да връща като резултат информацията за фирмата със всички служители на фирмат. Използвайте конкатенация на стрингове
  * getInformation() - който да връща като резултат информацията за фирмата със всички служители на фирмат. Използвайте стрин буфер
  * getEmployees(String name) - Връща списък от имената на служителите, в койтро съществува подаденоето име

Проверете изпълнението на методите за различен брой служители във фирмата с System.out.println(java.time.LocalDateTime.now());  в началото и края на изпълнение на методите има ли разлика между String и StringBuilder?

### Задача 2

Съставете програма за автомобилен паркиинг:

За целта ще имате нужда от:

* клас Автомобил с номер, ширина и дължина
* клас Камион с номер, ширина и дължина, товаро носимост
* клас Автобус с номер, ширина и дължина, брой седящи места

Могат ли класовете да имат общ родителски клас?

* клас паркинг, със списък от 1000 превозни средства.
* конструктор, който приема входен параметър, форматиран стринг
  * Car:В4747КК,4,6;Truck:В4747КК,4,6,3;Bus:В4747КК,4,6,59
  * Разбелете стринга и за всеки тип превозно средство създайте обект в масива
* Текстово представяне на паркинга, използвайте конкатениране на стринг или стринг буфер, в зависимост от това кой се е представил по добрре в първата задача

### Задача 3

Направете система за блог, за целта ще се нуждаете от:

Клас редакция (Version), класа трябва да има полета за създател и редактирал, в който да се съхраняват имената на автор и имената на автор, който е направил редакция. Следвайте принципите за капсолация при създаването на обекти от класа.

Създайте клас за изключения, които възноикват в класа Version (VersionException). Класа за изключенията трябва да наследява базовия клас Exception и да прииема съобщение за грешка, катоп параметър на конструктора си.

Приложете класа за изключения VersionException при сетване на стойностио за полетата. Да се обработи нулева и празна стойност на полетата за създател и редактор, като се хвърля изключение с текст "Created by cannot be null" и "Modified by cannot be null"

Клас коментар (Comment), класа трябва да наследява Version и да има поле за съдържание. Следвайте принципите за капсолация при създаването на обекти от класа.&#x20;

Създайте клас за изключения, които възноикват в класа Comment (CommentException). Класа за изключенията трябва да наследява базовия клас Exception и да прииема съобщение за грешка, катоп параметър на конструктора си.

Приложете класа за изключения CommentException при сетване на стойностио за полетата. Да се обработи нулева и празна стойност на полетата, като се хвърля изключение с текст "Comment cannot be empty"

Клас статия (Article), класа трябва да наследява Version и да има полета за заглавие, съдържание и масив от коментари до 50 коментара. Следвайте принципите за капсолация при създаването на обекти от класа.

Създайте клас за изключения, които възноикват в класа Article (ArticleException). Класа за изключенията трябва да наследява базовия клас Exception и да прииема съобщение за грешка, катоп параметър на конструктора си.

Приложете класа за изключения ArticleException при сетване на стойностио за полетата. Да се обработи нулева и празна стойност на полетата, като се хвърля изключение с текст "Article title cannot be empty", "Article content cannot be empty", "Comment cannot be null"

Създайте клас Blog със статичен масив от 1000 статии и име на автор. Конструктора приема името на автора, като параметър.&#x20;

* Метод, за добавяне на статия, метода и да предадат изключенията от класа Article
* Метод за добавяне на коментар, по заглавие на статия и коментар, ако няма такава статия  да се хвърли изключение "Missing article", и да се предадат изключенията от класа  Comment

В main да се създадат два обекта  Blog с различни автори и да се добавят, статии от двамата автори и коментари за тези статии. Обработете изключенията, като извеждате съобщенията за грешка в конзолата.





