Упражнения за извънаудиторна заетост
Задача
Да се създаде система за блог.
За целта са необходими:
- Клас редакция (Version) с полета за създател и редактирал, в който да се съхраняват имената на автор и имената на автор, който е направил редакция. Следвайте принципите за капсулация при създаването на обекти от класа;
- Клас за изключения, които възникват в класа Version (VersionException), наследяващ базовия клас Exception и да приемащ съобщение за грешка като параметър на конструктора си. Да се приложи VersionException при сетване на стойностите за полетата на клас Verison, като се обработват нулева и празна стойност на полетата за създател и редактор, и се хвърлят изключения с текст “Created by cannot be null” и “Modified by cannot be null”;
- Клас коментар (Comment), наследяващ Version и разширяващ го с поле за съдържание. Следвайте принципите за капсулация при създаването на обекти от класа;
- Клас за изключения, които възникват в класа Comment (CommentException), наследяващ базовия клас Exception и приемащ съобщение за грешка като параметър на конструктора си. Да се приложи CommentException при сетване на стойностите за полето на клас Comment като се обработват нулева и празна стойност на полетата, и се хвърлят изключения с текст “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 статии и име на автор. Конструкторът приема името на автора като параметър и има:
- Метод за добавяне на статия, който предава изключенията от класа Article;
- Метод за добавяне на коментар по заглавие на статия и коментар; ако няма такава статия се хвърля изключение “Missing article”, и се предават изключенията от класа Comment.
В main да се създадат два обекта Blog с различни автори и да се добавят статии от двамата автори и коментари за тези статии. Да се обработят изключенията като се извеждат съобщенията за грешка в конзолата.