This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:exceptii [2024/01/14 19:18] aghiorghita [Exerciţii] |
poo-ca-cd:laboratoare:exceptii [2024/01/14 19:22] (current) aghiorghita [Exerciţii] |
||
---|---|---|---|
Line 336: | Line 336: | ||
*''TODO2'' - ia cartea book4 din librărie. Dacă nu există, adaug-o. | *''TODO2'' - ia cartea book4 din librărie. Dacă nu există, adaug-o. | ||
* Atenție la tratarea excepțiilor! (A se afișa un mesaj corespunzător fiecărui caz, ca în exemplu). | * Atenție la tratarea excepțiilor! (A se afișa un mesaj corespunzător fiecărui caz, ca în exemplu). | ||
- | - **(2p)** Dorim să implementăm un Logger pe baza pattern-ului Chain-of-responsibility, definit în laborator, pe care îl vom folosi să păstram un jurnal de evenimente al unui program: | + | - **(2p)** Dorim să implementăm un ''Logger'' pe baza pattern-ului Chain-of-responsibility, definit în laborator, pe care îl vom folosi să păstram un jurnal de evenimente al unui program: |
- | - Creați enumerația LogLevel, ce va acționa ca un bitwise flag, care va conține: | + | - Creați enumerația ''LogLevel'', ce va acționa ca un bitwise flag, care va conține: |
- | * valorile - Info, Debug, Warning, Error, FunctionalMessage, FunctionalError. | + | * valorile - ''Info'', ''Debug'', ''Warning'', ''Error'', ''FunctionalMessage'', ''FunctionalError''. |
- | * Această enumerație va expune și o metodă statică all() care va întoarce o colecție de EnumSet<LogLevel> în care vor fi toate valorile de mai sus (Hint: EnumSet.allOf()). | + | * Această enumerație va expune și o metodă statică ''all()'' care va întoarce o colecție de EnumSet<LogLevel> în care vor fi toate valorile de mai sus (Hint: ''EnumSet.allOf()''). |
- | - Creați o clasă abstractă LoggerBase care: | + | - Creați o clasă abstractă ''LoggerBase'' care: |
* va primi în constructor un obiect de tip EnumSet<LogLevel> care va defini pentru ce nivele de log se va afisa mesajul | * va primi în constructor un obiect de tip EnumSet<LogLevel> care va defini pentru ce nivele de log se va afisa mesajul | ||
* va păstra o referință către următorul LoggerBase la care se trimite mesajul | * va păstra o referință către următorul LoggerBase la care se trimite mesajul | ||
- | * va expune o metodă publică setNext ce va primi un LoggerBase și va seta următorul delegat din lista de responsabilitate | + | * va expune o metodă publică ''setNext'' ce va primi un LoggerBase și va seta următorul delegat din lista de responsabilitate |
- | * va defini o metodă abstractă protected writeMessage ce va primi mesajul care trebuie afișat și afișează mesajul în cauză | + | * va defini o metodă abstractă protected ''writeMessage'' ce va primi mesajul care trebuie afișat și afișează mesajul în cauză |
- | * va expune o metodă publică message ce va primi mesajul care trebuie afișat și o severitate de tip LogLevel (adică Info, Debug, Warning, Error, FunctionalMessage sau FunctionalError). Dacă instanța de logger conține această severitate în colecția primită în constructor, atunci se va apela metoda writeMessage. Apoi se vor pasa mesajul și severitatea către următorul delegat din lista de responsabilitate (dacă există unul) | + | * va expune o metodă publică ''message'' ce va primi mesajul care trebuie afișat și o severitate de tip LogLevel (adică Info, Debug, Warning, Error, FunctionalMessage sau FunctionalError). Dacă instanța de logger conține această severitate în colecția primită în constructor, atunci se va apela metoda writeMessage. Apoi se vor pasa mesajul și severitatea către următorul delegat din lista de responsabilitate (dacă există unul) |
- Definiți clasele de mai jos care vor extinde LoggerBase și implementa metoda writeMessage: | - Definiți clasele de mai jos care vor extinde LoggerBase și implementa metoda writeMessage: | ||
- | * ConsoleLogger - care va scrie toate tipurile de LogLevel (Hint: all()) și va prefixa mesajele cu [Console] | + | * ''ConsoleLogger'' - care va scrie toate tipurile de LogLevel (Hint: all()) și va prefixa mesajele cu ''[Console]'' |
- | * EmailLogger - care va scrie doar tipurile FunctionalMessage și FunctionalError și va prefixa mesajele cu [Email] | + | * ''EmailLogger'' - care va scrie doar tipurile FunctionalMessage și FunctionalError și va prefixa mesajele cu ''[Email]'' |
- | * FileLogger - care va scrie doar tipurile Warning și Error și va prefixa mesajele cu [File] | + | * ''FileLogger'' - care va scrie doar tipurile Warning și Error și va prefixa mesajele cu ''[File]'' |
- | - Completați cele 2 TODO-uri rămase în metoda main din clasa Main. (Hint: EnumSet.of() pentru constructori) | + | - Completați cele 2 TODO-uri rămase în metoda main din clasa Main. (Hint: ''EnumSet.of()'' pentru constructori) |
==== Referinţe ==== | ==== Referinţe ==== |