Cílem cvičení bude implementovat strukturu tříd podle následujícího třídního diagramu:

Během implementace se řiďte třídním diagramem (některé třídy jsou abstraktní).
Person
PrintInfo bude virtuální. V rámci metody se do konzole vypíše jméno a věk.Employee
GetSalary (získání platu) bude abstraktní.GetBonus (prémie k platu) bude virtuální a bude vracet hodnotu 0.MonthlySalaryEmployee
MonthlySalary).HourlySalaryEmployee
HourlySalary).HoursWorked) × hodinová mzda (HourlySalary) + prémie.Worker
130.5000.Manager
80 000.500 + prémie.PrintInfo bude kromě základních informací vypisovat také Pozice: manager.Secretary
20 000.PrintInfo bude kromě základních informací vypisovat také Pozice: sekretářka.Population
PrintUnemployed – vypíše do konzole všechny nezaměstnané.PrintEmployeesWithSalary – vypíše do konzole všechny zaměstnance a jejich plat.GetPersonWithHighestSalary – vrátí zaměstnance s nejvyšším platem (využijte přetížení operátorů porovnání).GetHourlySalaryEmployees – vrátí pole všech zaměstnanců, kteří mají hodinovou mzdu.IncreaseHourlySalary – navýší hodinovou mzdu předaných zaměstnanců o zadanou částku.Otestujte aplikaci.
Population population = new Population();
population.Add(new Secretary("Ana", 30));
population.Add(new Manager("Petr", 40));
population.Add(new Worker("Tomáš", 25)
{
HoursWorked = 90
});
population.Add(new Worker("Monika", 50)
{
HoursWorked = 200
});
population.Add(new Unemployed("Ondra", 50));
Console.WriteLine("Zaměstnanci:");
population.PrintEmployeesWithSalary();
Console.WriteLine("Nezaměstnaní:");
population.PrintUnemployed();
Console.Write("Osoba s nejvyšším platem:");
var person = population.GetPersonWithHighestSalary();
person.PrintInfo();
Console.WriteLine($"Plat: {person.GetSalary()}");
var hourlySalaryEmployees = population.GetHourlySalaryEmployees();
population.IncreaseHourlySalary(hourlySalaryEmployees, 20);