Wie een smartphone of tablet heeft, kent het wel: een overzicht van je gemiste berichten in de vorm van notifications. Het geeft je in een oogopslag een samenvatting van de gemiste berichten tijdens de les wiskunde of Frans. In iOS of iPadOS van Apple heet dit overzicht het berichtencentrum. In onderstaande afbeelding zie je een berichtencentrum met heel wat verschillende types van berichten

Twee types van notifications herkennen de meesten onmiddellijk:
Naast deze informatie tonen alle notifications hoelang geleden het bericht toegekomen is.
In deze oefening programmeren we de klasse Berichtencentrum, een klasse die objecten van het type Mail en IMessage
verzamelt in een ArrayList. Je maakt in BlueJ het project Berichtencentrum met volgende klassen:
Bericht: de code van Bericht kan je hier1 downloaden.Mail: de code van Mail kan je hier2 downloaden.IMessage: de code van IMessage kan je hier3 downloaden.Berichtencentrum: kopieer alvast de boilerplate-code uit de indiensectie op deze pagina naar jouw project.
Bestuderen we eerst even de klassendefinitie van Bericht:
public abstract class Bericht {
private String afzender;
private int timestamp;
protected String bericht;
public Bericht(String afzender, String bericht){
this.afzender = afzender;
this.bericht = bericht;
timestamp = 0;
}
public String getAfzender(){
return afzender;
}
public void setTimestamp(int timestamp){
this.timestamp = timestamp;
}
public int getTimestamp(){
return timestamp;
}
public String leeftijd(){
//...
}
public abstract void print();
}
De klasse Bericht is een abstracte klasse met 1 abstracte methode: print(). De subklassen Mail en IMessage
implementeren, op een eerder complexe wijze, de methode print().
Elk bericht heeft een afzender en timestamp. De waarde van het veld timestamp kan je steeds opvragen
of wijzigen. De waarde van het veld afzender kan je opvragen. Het veld bericht houdt het
eigenlijke bericht bij.
Op basis van de timestamp wordt de leeftijd van het bericht bepaald. De methode leeftijd() geeft
bijvoorbeeld 3 uren geleden terug.
De klasse Mail is een uitbreiding van de klasse Bericht en heeft een extra veld: onderwerp. De implementatie
van de methode print() hoef je niet te begrijpen. Test deze methode wel op voorhand.
De klasse IMessage is een uitbreiding van de klasse Bericht. Geen extra velden of methoden. Wel opnieuw
een complexe implementatie van de methode print(). De moeite om eens te testen.
Programmeer de klasse Berichtencentrum.
Het enige veld verzamelt objecten van het type IMessage en Mail in een
ArrayList.
In de constructor initialiseer je het enige veld.
void toevoegen(...)
Voeg een nieuw object van het type IMessage of Mail toe aan het berichtencentrum.
... opvragen(int)
Geeft het object van het type IMessage of Mail op de gegeven index terug. Controleer of de index
geldig is!.
void print()
Toont het berichtencentrum in het Terminalvenster van BlueJ.

int aantalVan(String)
Geeft het aantal objecten van het typeIMessage of Mail terug waarbij de afzender de gegeven tekst
bevat. Gebruik de methode boolean contains(String) van de klasse String. Zorg dat deze methode niet
hoofdlettergevoelig is.
void meestRecente()
Toont het meest recente bericht van het berichtencentrum in het Terminalvenster van BlueJ.
