@ FII

Laborator 10


Exerciții de antrenament:

Exerciții propuse:

Context

Într-o facultate notele studenților sunt gestionate de către secretariat astfel: profesorii pun note studenților, secretariatul stochează notele și notifică atât studenții (care primesc notele) cât și profesorii (care au trimis notele spre înregistrare de către secretariat în catalog).

Detalii:

Cerințe:

  1. (1 punct) Identificați (la nivel de implementare) clasele de care aveți nevoie, împreună cu atributele și metodele fiecăreia.
  2. (1 punct) Explicați în cuvinte cum aveți de gând să utilizați clasele de mai sus pentru a implementa mecanismul de notificare.
  3. (4 puncte) Vom considera că avem următorii participanți:
Professor professor1 = new Professor("Professor1");
Professor professor2 = new Professor("Professor2");
Student student1 = new Student("Student1");
Student student2 = new Student("Student2");
Student student3 = new Student("Student3");

Ambii profesori au voie sa puna note:

List<Professor> professors = new ArrayList<>();
professors.add(professor1);
professors.add(professor2);
Secretariat secretariat = new Secretariat(professors);

Dintre toți participanții, doar câțiva vor primi notificări, și anume profesor1, student1 și student2:

secretariat.addNotifiable(professor1);
secretariat.addNotifiable(student1);
secretariat.addNotifiable(student2);

Testați implementarea voastră pe următoarele scenarii:

professor1.gradeStudent(secretariat, student1, "PLP", 7);
System.out.println(professor1.getMostRecentNotification());
System.out.println(student1.getMostRecentNotification());

În acest caz ar trebui ca ambii să primească notificări (fiecare linie din output-ul de mai jos reprezinta notificarea pentru fiecare participant, în ordine):

Grade for student Student1 is successfully registered: Grade{discipline='PLP', grade=7}
Professor Professor1 just graded you with Grade{discipline='PLP', grade=7}
professor1.gradeStudent(secretariat, student3, "PLP", 8);
System.out.println(professor1.getMostRecentNotification());
System.out.println(student3.getMostRecentNotification());

În acest caz ar trebui ca doar primul să primească notificări:

Grade for student Student3 is successfully registered: Grade{discipline='PLP', grade=8}
no recent notification
professor2.gradeStudent(secretariat, student2, "PLP", 9);
System.out.println(professor2.getMostRecentNotification());
System.out.println(student2.getMostRecentNotification());

În acest caz ar trebui ca doar al doilea să primească notificări:

no recent notification
Professor Professor2 just graded you with Grade{discipline='PLP', grade=9}
professor2.gradeStudent(secretariat, student3, "PLP", 10);
System.out.println(professor2.getMostRecentNotification());
System.out.println(student3.getMostRecentNotification());

În acest caz ar trebui ca ambii să primească notificări:

no recent notification
no recent notification