De komst van de e-mail heeft communicatie wereldwijd veranderd. Helaas bevinden zich tussen alle nuttige en belangrijke e-mails, vaak ook reclame en andere ongewenste berichten, spam-mails genaamd. Gelukkig hebben de meeste e-mailproviders en e-mailprogramma’s een spamfilter ingebouwd, om de kans dat je met deze ongewenste berichten geconfronteerd wordt, te verlagen. In deze opgave zul je een zeer eenvoudige spamfilter schrijven, volgens een aantal simpele regels.
Schrijf een Java-klasse Email
. Deze klasse stelt een potentiële spam-mail voor en moet volgende constructor en minstens volgende methoden bevatten. Je bent volledig vrij om de nodige instantievariabelen te kiezen en het is ook toegelaten (en aangeraden!) om extra methodes toe te voegen, dit kan je helpen bij het zoeken naar fouten.
De constructor heeft 5 argumenten:
senderName
: De weergavenaam van de afzendersenderAddress
: Het e-mailadres van de afzendersubject
: Het onderwerp van de e-mailcontentLength
: De lengte van het e-mailberichtreceivers
: Het aantal mensen waarnaar de e-mail werd verstuurdpublic Email(String senderName, String senderAddress, String subject, int contentLength, int receivers)
Je klasse moet minstens onderstaande methoden hebben. Deze zijn gerangschikt in alfabetische volgorde, niet volgens moeilijkheid.
public boolean equals(Object other)
Deze equals()
-methode geeft true
terug als deze instantie van de Email
-klasse gelijk is aan het meegegeven object. Twee e-mails worden als gelijk beschouwd als al de volgende voorwaarden gelden:
public int getContentLength()
Deze methode geeft de lengte van het bericht terug.
public int getReceivers()
Deze methode geeft het aantal ontvangers van de e-mail terug.
public String getSenderAddress()
Deze methode geeft het e-mailadres van de verzender terug.
public String getSenderName()
Deze methode geeft de naam van de verzender terug.
public double getSpamProbability()
Deze methode bepaalt de kans dat de e-mail een ongewenste e-mail is. De kans is een getal tussen 0 en 1 en is gelijk aan de som van onderstaande 4 scores. Een e-mail met een leeg onderwerp en een lege afzender, heeft dus een kans van 0.50 om als spam te worden geclassificeerd.
De afzender krijgt een score van 0.25 als minstens één van volgende voorwaarden voldaan is, anders 0:
Het onderwerp krijgt een score van 0.25 als minstens één van volgende voorwaarden voldaan is, anders 0:
Wanneer de e-mail langer is dan 3.000 karakters, moet deze methode een score van 0.25
teruggeven, anders 0.
Wanneer de e-mail meer dan 50 ontvangers heeft, moet deze methode een score van 0.25
teruggeven, anders 0.
public String getSubject()
Deze methode geeft het onderwerp van de e-mail terug.
Het is aangeraden om je oplossing lokaal uit te proberen en optioneel wat print-statements toe te voegen om je te helpen debuggen. Dit kan je simpelweg doen door aan je klasse een main-methode toe te voegen, net zoals in vorige opgaves.
public class Email {
// Constructor en andere methodes staan hierboven.
public static void main(String[] args){
Email email = new Email("Alexander", "alexander@ugent.be", "EXCLUSIVE LIMITED EDITION OFFER FOR YOU!!!", 1000, 463);
System.out.println(email.getSpamProbability()); // output: 0.25
}
}