Complete these tasks to reinforce what you learned in this module.
Diese Klasse lässt sich nicht testen — ihr Ergebnis hängt davon ab, wann der Test läuft:
``csharp
public class Gutschein
{
public DateTime GueltigBis { get; set; }
public bool IstGueltig()
{
return DateTime.Now <= GueltigBis; // versteckte Abhängigkeit
}
}
Mach sie wiederholbar: IstGueltig bekommt das heutige Datum **hereingereicht**, statt es sich selbst zu holen. Ein Gutschein ist gültig, solange das Datum nicht **nach** GueltigBis liegt — der letzte Tag zählt noch.
Main prüft einen bis zum 30.06.2026 gültigen Gutschein an drei festen Stichtagen und gibt je {datum}: gültig oder {datum}: abgelaufen` aus.
public bool IstGueltig(DateTime heute) — mehr braucht es nicht. «Der letzte Tag zählt noch» heisst heute <= GueltigBis, nicht <. Für die Datumsausgabe: datum.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), sonst entscheidet die Kultur des Servers über das Format.using System;
using System.Globalization;
public sealed class Gutschein
{
public Gutschein(DateTime gueltigBis)
{
GueltigBis = gueltigBis;
}
public DateTime GueltigBis { get; private set; }
// TODO: IstGueltig soll das heutige Datum als Parameter bekommen,
// statt DateTime.Now zu benutzen
public bool IstGueltig()
{
return DateTime.Now <= GueltigBis;
}
}
class Program
{
static void Main()
{
var gutschein = new Gutschein(new DateTime(2026, 6, 30));
var stichtage = new DateTime[]
{
new DateTime(2026, 1, 1),
new DateTime(2026, 6, 30),
new DateTime(2026, 7, 1),
};
foreach (var stichtag in stichtage)
{
// TODO: "{yyyy-MM-dd}: gültig" bzw. ": abgelaufen"
}
}
}