Vul de ontbrekende delen in __________ om delegates correct te implementeren.
Specificaties
Vul de ontbrekende onderdelen correct in.
Test de code in een C#-omgeving en controleer of de werking correct is.
Verwachte output
Knop is ingedrukt!
De knop is geklikt! Event is geactiveerd.
Nu jij
using System;class Program{ // Stap 1: Delegate definiëren __________ int RekenDelegate(int a, int b); static void Main() { // Stap 2: Delegate toewijzen aan methoden __________ optellen = Optellen; __________ aftrekken = Aftrekken; // Stap 3: Delegate aanroepen int resultaat1 = optellen(10, 5); int resultaat2 = aftrekken(10, 5); // Stap 4: Output tonen Console.WriteLine($"Optellen: 10 + 5 = {resultaat1}"); Console.WriteLine($"Aftrekken: 10 - 5 = {resultaat2}"); } // Methode voor optellen static int Optellen(int x, int y) { return x + y; } // Methode voor aftrekken static int Aftrekken(int x, int y) { return x - y; }}
Mogelijke uitwerking
using System;class Program{ // Stap 1: Delegate definiëren delegate int RekenDelegate(int a, int b); static void Main() { // Stap 2: Delegate toewijzen aan methoden RekenDelegate optellen = Optellen; RekenDelegate aftrekken = Aftrekken; // Stap 3: Delegate aanroepen int resultaat1 = optellen(10, 5); int resultaat2 = aftrekken(10, 5); // Stap 4: Output tonen Console.WriteLine($"Optellen: 10 + 5 = {resultaat1}"); Console.WriteLine($"Aftrekken: 10 - 5 = {resultaat2}"); } // Methode voor optellen static int Optellen(int x, int y) { return x + y; } // Methode voor aftrekken static int Aftrekken(int x, int y) { return x - y; }}
Opdracht 2
Vul de ontbrekende delen in __________ om delegates correct te implementeren.
Specificaties
Vul de ontbrekende onderdelen correct in.
Test de code in een C#-omgeving en controleer of de werking correct is.
Verwachte output
Als invoer is 1 dan komt in de console:
Het dier maakt het volgende geluid:
Woef woef!
Als invoer is 3 dan komt in de console:
Het dier maakt het volgende geluid:
Boehhh!
Nu jij
using System;class Program{ // Stap 1: Delegate definiëren __________ void DierGeluidDelegate(); static void Main() { // Stap 2: Opties weergeven Console.WriteLine("Kies een dier om het geluid te horen:"); Console.WriteLine("1. Hond"); Console.WriteLine("2. Kat"); Console.WriteLine("3. Koe"); Console.WriteLine("4. Schaap"); Console.Write("Voer een keuze in (1-4): "); string keuze = Console.ReadLine(); // Stap 3: Delegate toewijzen op basis van keuze __________ geluidMaken = keuze switch { "1" => Blaffen, "2" => Miauwen, "3" => BoeRoepen, "4" => BlaatRoepen, _ => null }; if (geluidMaken == null) { Console.WriteLine("Ongeldige keuze!"); return; } // Stap 4: Delegate uitvoeren Console.WriteLine("\nHet dier maakt het volgende geluid:"); geluidMaken(); } // Diergeluiden static __________ Blaffen() => Console.WriteLine("Woef woef!"); static __________ Miauwen() => Console.WriteLine("Miauw miauw!"); static __________ BoeRoepen() => Console.WriteLine("Boehhh!"); static __________ BlaatRoepen() => __________;}
Mogelijke uitwerking
using System;class Program{ // Stap 1: Delegate definiëren delegate void DierGeluidDelegate(); static void Main() { // Stap 2: Opties weergeven Console.WriteLine("Kies een dier om het geluid te horen:"); Console.WriteLine("1. Hond"); Console.WriteLine("2. Kat"); Console.WriteLine("3. Koe"); Console.WriteLine("4. Schaap"); Console.Write("Voer een keuze in (1-4): "); string keuze = Console.ReadLine(); // Stap 3: Delegate toewijzen op basis van keuze DierGeluidDelegate geluidMaken = keuze switch { "1" => Blaffen, "2" => Miauwen, "3" => BoeRoepen, "4" => BlaatRoepen, _ => null }; if (geluidMaken == null) { Console.WriteLine("Ongeldige keuze!"); return; } // Stap 4: Delegate uitvoeren Console.WriteLine("\nHet dier maakt het volgende geluid:"); geluidMaken(); } // Diergeluiden static void Blaffen() => Console.WriteLine("Woef woef!"); static void Miauwen() => Console.WriteLine("Miauw miauw!"); static void BoeRoepen() => Console.WriteLine("Boehhh!"); static void BlaatRoepen() => Console.WriteLine("Bèèèhhh!");}
Opdracht 3
Vul de ontbrekende delen in om events correct te implementeren.
Specificaties
Vul de ontbrekende onderdelen correct in.
Test de code in een C#-omgeving en controleer of de werking correct is.
Verwachte output
Huidige temperatuur: 25°C
Huidige temperatuur: 35°C
⚠️ Waarschuwing! Hoge temperatuur: 35°C
Nu jij
using System;// Stap 1: Custom EventArgs makenclass TemperatuurEventArgs __________// Stap 2: Klasse met event makenclass TemperatuurSensor{ public event EventHandler<TemperatuurEventArgs>? TemperatuurTeHoog; public void MeetTemperatuur(double temperatuur) { Console.WriteLine($"Huidige temperatuur: {temperatuur}°C"); if (temperatuur > 30) // Drempelwaarde { TemperatuurTeHoog?.Invoke(this, new TemperatuurEventArgs(temperatuur)); } }}// Stap 3: Klasse die luistert naar het eventclass Monitoring{ public void Waarschuw(object sender, TemperatuurEventArgs e) { Console.WriteLine($"⚠️ Waarschuwing! Hoge temperatuur: {e.Temperatuur}°C"); }}// Stap 4: Testenclass Program{ static void Main() { TemperatuurSensor sensor = new(); Monitoring monitor = new(); // Abonneren op het event sensor.TemperatuurTeHoog += monitor.Waarschuw; // Testmetingen sensor.MeetTemperatuur(25); // Geen waarschuwing sensor.MeetTemperatuur(35); // Waarschuwing wordt geactiveerd }}
Mogelijke uitwerking
using System;// Stap 1: Custom EventArgs makenclass TemperatuurEventArgs : EventArgs{ public double Temperatuur { get; } public TemperatuurEventArgs(double temperatuur) { Temperatuur = temperatuur; }}// Stap 2: Klasse met event makenclass TemperatuurSensor{ public event EventHandler<TemperatuurEventArgs>? TemperatuurTeHoog; public void MeetTemperatuur(double temperatuur) { Console.WriteLine($"Huidige temperatuur: {temperatuur}°C"); if (temperatuur > 30) // Drempelwaarde { TemperatuurTeHoog?.Invoke(this, new TemperatuurEventArgs(temperatuur)); } }}// Stap 3: Klasse die luistert naar het eventclass Monitoring{ public void Waarschuw(object sender, TemperatuurEventArgs e) { Console.WriteLine($"⚠️ Waarschuwing! Hoge temperatuur: {e.Temperatuur}°C"); }}// Stap 4: Testenclass Program{ static void Main() { TemperatuurSensor sensor = new(); Monitoring monitor = new(); // Abonneren op het event sensor.TemperatuurTeHoog += monitor.Waarschuw; // Testmetingen sensor.MeetTemperatuur(25); // Geen waarschuwing sensor.MeetTemperatuur(35); // Waarschuwing wordt geactiveerd }}
Opdracht 4
Zorg ervoor dat het aanbellen wordt gelogd.
Specificaties:
Maak een klasse Logger
Geef de klasse een geschikte methode
Subscribe the methode bij de deurbel instantie
Verwachte output
E-mail naar: software@deurbel.nl, Bericht: Er is aangebeld!
[LOG] Deurbel event: Ontvanger=software@deurbel.nl, Bericht=Er is aangebeld!
Nu jij
class MessageEventArgs : EventArgs { public string Ontvanger { get; set; } public string Tekst { get; set; } }public delegate void Observer(object sender, MessageEventArgs message);class Mailer { public void SendMail(object sender, MessageEventArgs e) { Console.WriteLine($"E-mail naar: {e.Ontvanger}, Bericht: {e.Tekst}"); }}class Deurbel { public event Observer? observer; public void BelDrukken() { observer?.Invoke(this, new MessageEventArgs { Ontvanger = "software@deurbel.nl", Tekst = "Er is aangebeld!" }); }}// Hoofdprogramma om de deurbel, mailer en logger te koppelen.class Program { static void Main() { // Instantie van Deurbel maken. Deurbel deurbel = new Deurbel(); // Instantie van Mailer maken. Mailer mailer = new Mailer(); // Mailer abonneren op het event van de deurbel. deurbel.observer += mailer.SendMail; // Simuleren van een deurbel-activiteit. deurbel.BelDrukken(); }}
Mogelijke uitwerking
class MessageEventArgs : EventArgs { public string Ontvanger { get; set; } public string Tekst { get; set; } }public delegate void Observer(object sender, MessageEventArgs message);class Mailer { public void SendMail(object sender, MessageEventArgs e) { Console.WriteLine($"E-mail naar: {e.Ontvanger}, Bericht: {e.Tekst} ); }}// Klasse die een observer implementeert om logs bij te houden.class Logger { // Methode die een logbericht opslaat wanneer het event wordt getriggerd. public void LogEvent(object sender, MessageEventArgs e) { // Simuleert het loggen van een bericht. Console.WriteLine($"[LOG] Deurbel event: Ontvanger={e.Ontvanger}, Bericht={e.Tekst}"); }}class Deurbel { public event Observer? observer; public void BelDrukken() { observer?.Invoke(this, new MessageEventArgs { Ontvanger = "software@deurbel.nl", Tekst = "Er is aangebeld!" }); }}// Hoofdprogramma om de deurbel, mailer en logger te koppelen.class Program { static void Main() { // Instantie van Deurbel maken. Deurbel deurbel = new Deurbel(); // Instantie van Mailer maken. Mailer mailer = new Mailer(); // Instantie van Logger maken. Logger logger = new Logger(); // Mailer abonneren op het event van de deurbel. deurbel.observer += mailer.SendMail; // Logger abonneren op het event van de deurbel. deurbel.observer += logger.LogEvent; // Simuleren van een deurbel-activiteit. deurbel.BelDrukken(); }}
Opdracht 5
Vul de ontbrekende delen in om events correct te implementeren.
Specificaties
Vul de ontbrekende onderdelen correct in.
Test de code in een C#-omgeving en controleer of de werking correct is.
Verwachte output
Knop is ingedrukt!
De knop is geklikt! Event is geactiveerd.
Nu jij
using System;class Knop{ // Stap 1: Event definiëren met EventHandler public event EventHandler? Klik; // Stap 2: Methode die het event triggert public void DrukOpKnop() { Console.WriteLine("Knop is ingedrukt!"); // Stap 3: Event activeren (null-check) __________ // Gebruik als eventargs EventArgs.empty }}// Hoofdprogramma om het event te testenclass Program{ static void Main() { // Instantie van Knop maken Knop knop = new Knop(); // Abonneren op het event met een event-handler knop.Klik __________ KnopIngedrukt; // Simuleren van een knopdruk knop.DrukOpKnop(); } // Methode die reageert op het Klik-event static void KnopIngedrukt(object? sender, EventArgs e) { Console.WriteLine("De knop is geklikt! Event is geactiveerd."); }}
Mogelijke uitwerking
using System;class Knop{ // Stap 1: Event definiëren met EventHandler public event EventHandler? Klik; // Stap 2: Methode die het event triggert public void DrukOpKnop() { Console.WriteLine("Knop is ingedrukt!"); // Stap 3: Event activeren (null-check) Klik?.Invoke(this, EventArgs.Empty); }}// Hoofdprogramma om het event te testenclass Program{ static void Main() { // Instantie van Knop maken Knop knop = new Knop(); // Abonneren op het event met een event-handler knop.Klik += KnopIngedrukt; // Simuleren van een knopdruk knop.DrukOpKnop(); } // Methode die reageert op het Klik-event static void KnopIngedrukt(object? sender, EventArgs e) { Console.WriteLine("De knop is geklikt! Event is geactiveerd."); }}
Opdracht 6
Vul de ontbrekende delen in om events correct te implementeren.
Specificaties
Vul de ontbrekende onderdelen correct in.
Test de code in een C#-omgeving en controleer of de werking correct is.
Verwachte output
Verkocht: 3x Laptop. Nieuwe voorraad: 7
Verkocht: 3x Laptop. Nieuwe voorraad: 4
⚠️ LET OP: Laag in voorraad! Product: Laptop, Aantal over: 4
Nu jij
using System;// Stap 1: Custom EventArgs makenclass VoorraadEventArgs : ________{ public string ProductNaam { get; } public int HuidigeVoorraad { get; } ________ // constructor}// Stap 2: Klasse met eventclass Product{ public string Naam { get; } private int voorraad; public event ________ VoorraadLaag; public Product(string naam, int startVoorraad) { Naam = naam; voorraad = startVoorraad; } public void Verkoop(int aantal) { voorraad -= aantal; Console.WriteLine($"Verkocht: {aantal}x {Naam}. Nieuwe voorraad: {voorraad}"); if (voorraad < 5) // Drempelwaarde { VoorraadLaag?.Invoke(this, ________); } }}// Stap 3: Klasse die luistert naar het eventclass Magazijn{ public void Waarschuw(object sender, ________) { Console.WriteLine($"⚠️ LET OP: Laag in voorraad! Product: {e.ProductNaam}, Aantal over: {e.HuidigeVoorraad}"); }}// Stap 4: Testenclass Program{ static void Main() { Product product = new("Laptop", 10); Magazijn magazijn = new(); // Abonneren op het event product.VoorraadLaag ________ magazijn.Waarschuw; // Simuleren van verkopen product.Verkoop(3); // Geen waarschuwing product.Verkoop(3); // Geen waarschuwing product.Verkoop(2); // Waarschuwing wordt geactiveerd }}
Mogelijke uitwerking
using System;// Stap 1: Custom EventArgs makenclass VoorraadEventArgs : EventArgs{ public string ProductNaam { get; } public int HuidigeVoorraad { get; } public VoorraadEventArgs(string productNaam, int huidigeVoorraad) { ProductNaam = productNaam; HuidigeVoorraad = huidigeVoorraad; }}// Stap 2: Klasse met event makenclass Product{ public string Naam { get; } private int voorraad; public event EventHandler<VoorraadEventArgs>? VoorraadLaag; public Product(string naam, int startVoorraad) { Naam = naam; voorraad = startVoorraad; } public void Verkoop(int aantal) { voorraad -= aantal; Console.WriteLine($"Verkocht: {aantal}x {Naam}. Nieuwe voorraad: {voorraad}"); if (voorraad < 5) // Drempelwaarde { VoorraadLaag?.Invoke(this, new VoorraadEventArgs(Naam, voorraad)); } }}// Stap 3: Klasse die luistert naar het eventclass Magazijn{ public void Waarschuw(object sender, VoorraadEventArgs e) { Console.WriteLine($"⚠️ LET OP: Laag in voorraad! Product: {e.ProductNaam}, Aantal over: {e.HuidigeVoorraad}"); }}// Stap 4: Testenclass Program{ static void Main() { Product product = new("Laptop", 10); Magazijn magazijn = new(); // Abonneren op het event product.VoorraadLaag += magazijn.Waarschuw; // Simuleren van verkopen product.Verkoop(3); // Geen waarschuwing product.Verkoop(3); // Geen waarschuwing product.Verkoop(2); // Waarschuwing wordt geactiveerd }}