Een e-mail

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.

Opgave

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.

Constructor

De constructor heeft 5 argumenten:

public Email(String senderName, String senderAddress, String subject, int contentLength, int receivers)

Methodes

Je klasse moet minstens onderstaande methoden hebben. Deze zijn gerangschikt in alfabetische volgorde, niet volgens moeilijkheid.

equals()

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:

getContentLength()

public int getContentLength()

Deze methode geeft de lengte van het bericht terug.

getReceivers()

public int getReceivers()

Deze methode geeft het aantal ontvangers van de e-mail terug.

getSenderAddress()

public String getSenderAddress()

Deze methode geeft het e-mailadres van de verzender terug.

getSenderName()

public String getSenderName()

Deze methode geeft de naam van de verzender terug.

getSpamProbability()

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.

1. Afzender

De afzender krijgt een score van 0.25 als minstens één van volgende voorwaarden voldaan is, anders 0:

2. Onderwerp

Het onderwerp krijgt een score van 0.25 als minstens één van volgende voorwaarden voldaan is, anders 0:

3. Lengte van het bericht

Wanneer de e-mail langer is dan 3.000 karakters, moet deze methode een score van 0.25 teruggeven, anders 0.

4. Aantal ontvangers

Wanneer de e-mail meer dan 50 ontvangers heeft, moet deze methode een score van 0.25 teruggeven, anders 0.

getSubject()

public String getSubject()

Deze methode geeft het onderwerp van de e-mail terug.

Lokaal testen

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
    }
}