ex-oop-01-pupil/Pupils/Program.cs
github-classroom[bot] b09e151301
Initial commit
2024-10-06 09:57:56 +00:00

98 lines
No EOL
2.3 KiB
C#

using Pupils;
Console.WriteLine("*** Pupils ***");
var baseYear = DateTime.Now.Year;
var p1 = new Pupil("Horst", "Fuchs",
new DateOnly(baseYear - 72, 04, 17));
var p2 = new Pupil("Susi", "Sorglos",
new DateOnly(baseYear - 15, 11, 08));
var p3 = new Pupil("Max", "Muster",
new DateOnly(baseYear - 16, 08, 30));
var p4 = new Pupil("Petra", "Programmierer",
new DateOnly(baseYear - 51, 11, 08));
p1.ZipCode = 4060;
p2.ZipCode = 4020;
p3.ZipCode = 688;
p4.ZipCode = 5020;
PrintNextSection("Overview");
foreach (var pupil in new[] { p1, p2, p3, p4 })
{
PrintPupilInformation(pupil);
}
PrintNextSection("Age Checks 1");
AgeCheck(p1, AgeType.RetirementAge);
AgeCheck(p2, AgeType.VotingAge);
AgeCheck(p3, AgeType.VotingAge);
AgeCheck(p3, AgeType.FullAge);
AgeCheck(p4, AgeType.FullAge);
AgeCheck(p4, AgeType.RetirementAge);
PrintNextSection("Age Checks 2");
AgeComparison(p1, p2);
AgeComparison(p2, p3);
AgeComparison(p3, p4);
AgeComparison(p4, p1);
PrintNextSection("Location Checks");
LocationComparison(p1, p2);
LocationComparison(p2, p3);
LocationComparison(p3, p4);
LocationComparison(p4, p1);
#region utility methods
void PrintNextSection(string section)
{
Console.WriteLine($"{Environment.NewLine}{section}");
}
void PrintPupilInformation(Pupil pupil)
{
Console.WriteLine($"[#{pupil.Id}] {pupil.FirstName} " +
$"{pupil.LastName} | Age = {pupil.Age}");
}
void AgeCheck(Pupil pupil, AgeType type)
{
var fulfilled = $"{(pupil.IsOfAge(type) ? "has" : "has not")} fulfilled";
Console.WriteLine($"Pupil {pupil.FirstName} {fulfilled} the requirements for {type}");
}
void AgeComparison(Pupil some, Pupil other)
{
// note: we are ignoring pupils of equal age here
if (some.IsOlderThan(other))
{
PrintOlder(some, other);
return;
}
PrintOlder(other, some);
return;
void PrintOlder(Pupil older, Pupil younger)
{
Console.WriteLine($"{older.FirstName} is older than {younger.FirstName}");
}
}
void LocationComparison(Pupil some, Pupil other)
{
if (some.LivesNearby(other))
{
Console.WriteLine($"{some.FirstName} lives near {other.FirstName}");
return;
}
Console.WriteLine($"{some.FirstName} and {other.FirstName} live some way apart");
}
#endregion