Het immuunsysteem is het geheel aan verdedigingsmechanismen waarmee organismen indringers kunnen bestrijden. Naast bescherming tegen virussen, bacteriën en parasieten, wordt het immuunsysteem ook ingezet om afvalstoffen of zieke lichaamscellen (zoals kankercellen) op te ruimen. Het immuunsysteem kan onderverdeeld worden in een aspecifiek (aangeboren) en een adaptief (verworven) gedeelte. Het aspecifieke deel is snel werkzaam, maar minder specifiek voor de ziekteverwekker (pathogeen). Daarentegen past het adaptieve deel zich aan aan bepaalde pathogenen. Dat kost tijd, maar resulteert uiteindelijk in een sterkere afweer. Bovendien is het lichaam daarna vaak langdurig beschermd tegen die specifieke ziekteverwekkers.
Definieer een klasse Organisme
waarmee organismen kunnen voorgesteld worden die beschikken over een vereenvoudigd model van een immuunsysteem. Dit immuunsysteem heeft zowel aspecifieke als adaptieve eigenschappen die het organisme beschermen tegen virussen — andere vormen van pathogenen worden omwille van de eenvoud achterwege gelaten. Een bepaald type virus wordt in dit model voorgesteld door een geheel getal (Number
). Het aspecifieke deel van het immuunsysteem beschermt het organisme tegen een aantal opgegeven types van virussen. Daarnaast kan het adaptieve gedeelte van het immuunsysteem er ook voor zorgen dat het organisme resistent wordt voor bijkomende virussen. Dat laatste gebeurt wanneer er zich een aantal antilichamen tegen het virus gevormd hebben. Wanneer een bepaald type virus muteert, dan verliest het organisme zijn resistentie (zowel aspecifiek als adaptief) tegen het virus, en moet het indien nodig terug adaptief antilichamen tegen het virus aanmaken.
Zorg ervoor dat bij het aanmaken van een nieuw object van de klasse Organisme
, het nieuwe organisme initieel nog geen antilichamen heeft in het adaptieve gedeelte van het immuunsysteem. Aan de constructor kunnen eventueel een aantal virussen doorgegeven worden (gehele getallen(Number
) die als afzonderlijke argumenten opgegeven worden) waartegen het aspecifieke deel van het immuunsysteem het organisme beschermt. Voorts moet de klasse Organisme
ondersteuning bieden aan de volgende methoden:
Een methode isResistent
waaraan een virus (een geheel getal; Number
) moet doorgegeven worden. Deze methode moet een Booleaanse waarde (Boolean
) teruggeven die aangeeft of het organisme al dan niet resistent is tegen het opgegeven virus. Als het aspecifieke deel van het immuunsysteem bescherming biedt tegen het virus dan treedt er resistentie op, anders wordt het adaptieve deel van het immuunsysteem aangesproken. In dat laatste geval wordt er in de eerste plaats een bijkomend antilichaam aangemaakt tegen het virus waarvan de resistentie getest wordt. Er treedt dan pas resistentie op wanneer het immuunsysteem minstens drie specifieke antilichamen heeft aangemaakt voor het opgegeven virus.
Een methode mutatie
waaraan een virus (een geheel getal; Number
) moet doorgegeven worden. Wanneer deze methode wordt aangeroepen, verliest het immuunsysteem elke vorm van resistentie (zowel aspecifiek als adaptief) tegen het virus. Later kan er terug resistentie optreden tegen het virus, als het adaptieve gedeelte terug voldoende antilichamen heeft aangemaakt (door het aanroepen van de methode isResistent
).
> const organisme = new Organisme(1, 2, 3, 4, 5)
> organisme.isResistent(1)
true
> organisme.isResistent(88)
false
> organisme.isResistent(99)
false
> organisme.isResistent(2)
true
> organisme.isResistent(99)
false
> organisme.isResistent(99)
true
> organisme.isResistent(99)
true
> organisme.mutatie(1)
> organisme.isResistent(1)
false
> organisme.isResistent(1)
false
> organisme.isResistent(1)
true
> organisme.mutatie(99)
> organisme.isResistent(99)
false
> organisme.isResistent(99)
false
> organisme.isResistent(99)
true