> For the complete documentation index, see [llms.txt](https://apwt.gitbook.io/coronafiles/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apwt.gitbook.io/coronafiles/missie-1/untitled.md).

# Opdracht

![](/files/-MYZMhRJQtmXKDDAi6k8)

> Tijd om ons Vaccin te verbeteren. Het huidige Vaccin vindt de killcode enkel door steeds willekeurige getallen te testen. Dat is een beetje hetzelfde als geblinddoekt op een olifant jagen. We gaan nieuwe vaccins ontwikkelen die een betere strategie hanteren.

Deze oefening gaat verder op de klassen die je in de trainingsmissie hebt moeten maken. Vond je jezelf te goed voor de trainings missie? [Gebruik dan de klassen die hier staan](/coronafiles/oplossingen/trainings-opdracht.md).

## Nieuwe vaccins en virussen

1. Zorg ervoor dat de methode `TryKillCode` virtual wordt gemaakt in de Vaccin klasse.
2. Maak een klasse SlimVaccin dat overerft van Vaccin. Deze klasse implementeert TryKillCode op een andere manier via `override`:
   1. Het Vaccin zal eerst alle veelvouden van 10 (0,10, 20, etc.) testen. Vervolgens 11,21,31,...en dan 12,22, etc.

## Nieuw virus

1. Zorg ervoor dat de methode `TryVaccin` virtual wordt gemaakt in de Virus klasse.
2. Maak een klasse DomVirus dat overerft van Virus. Deze klasse voert nog steeds TryVaccin uit zonder aanpassingen. Echter, 50% van de tijd zal de aanroep van TryVaccin resulteren in het verhogen (ipv verlagen) van de `DoomCountdown` teller.

## Test vaccin en nieuwe virus

Voer terug Fase 1 uit maar deze keer doe je dit op het nieuwe DomVirus en gebruik je SlimVaccins.

Kan je nu sneller het vaccin vinden?

## Vaccinatiecentra verspreiden

### Dictionary

We gaan de centra over de 7 continenten verspreiden. Maar we gaan hiervoor een nieuw concept gebruiken, een zogenaamde `Dictionary` dit is hetzelfde als een `List` maar in plaats van een index heeft ieder element een key van een type dat je zelf bepaalt.

Maak de Dictionary als volgt:

```java
Dictionary<string,VaccinatieCentrum> centraDB = new Dictionary<string,VaccinatieCentrum>();
```

`string` geeft hier aan dat we als key een string gebruiken, en dat de elementen in de dictionary allemaal Vaccinatiecentra zijn.

Voeg centra aan de dicht als volgt toe. Dit centrum geven we als key frankrijk:

```java
centraDB.Add("frankrijk", new VaccinatieCentrum());
```

Volgende code toont bijvoorbeeld hoe je een vaccin nu aan het centrum met key frankrijk verkrijgt

```java
Vaccin vac= centraDB["frankrijk"].GeefVaccin();
```

### Uitvoeren

Maak een programma dat aan de "operator" vraagt in welke landen een centrum moet geplaatst worden. Zoek op hoe je in een dictionary kan controleren of er reeds een element met die key bestaat (want anders overschrijf je bestaande centrum). Toon aan gebruiker dat bouw van nieuw centrum gelukt is, of waarschuw hem als dit land reeds centrum heeft.

De operator kan uit het menu ook kiezen om een overzicht van alle centra te krijgen. Volgende code toont hoe dit kan:

```java
Console.WriteLine("Centra in volgende landen:")
foreach (VaccinatieCentrum item in centraDV)
{
    Console.WriteLine(item.Key);
}
```

Kan je hier een programma rond bouwen waarbij de operator ook kan kiezen welk land/centrum Vaccins moet genereren?


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apwt.gitbook.io/coronafiles/missie-1/untitled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
