Classe Employee:
namespace exercise70.Models;
internal abstract class Employee
{
public string Name { get; }
public string Position { get; }
public double Salary { get; }
public abstract string DetailedDescription { get; }
protected Employee(string name, string position, double salary)
{
Name = name;
Position = position;
Salary = salary;
}
}
Classe Analyst:
namespace exercise70.Models;
internal class Analyst : Employee
{
public List<string> Skills { get; }
public string Level { get; }
public override string DetailedDescription => $"Name: {Name} - Position {Position} - Salary: {Salary}";
public Analyst(string name, string position, double salary, List<string> skills, string level)
: base(name, position, salary)
{
Skills = skills;
Level = level;
}
}
Classe Developer:
namespace exercise70.Models;
internal class Developer : Employee
{
public List<string> ProgrammingLanguages { get; set; }
public string Level { get; set; }
public override string DetailedDescription => $"Name: {Name} - Position {Position} - Salary: {Salary}";
public Developer(string name, string position, double salary, List<string> programmingLanguages, string level)
: base(name, position, salary)
{
ProgrammingLanguages = programmingLanguages;
Level = level;
}
}
Classe Manager:
namespace exercise70.Models;
internal class Manager : Employee
{
public string Sector { get; set; }
public override string DetailedDescription => $"Name: {Name} - Position {Position} - Salary: {Salary}";
public Manager(string name, string position, double salary, string sector)
: base(name, position, salary)
{
Sector = sector;
}
}
Instâncias:
using exercise70.Models;
Analyst analyst = new Analyst("Carlos", "Analyst", 3000.00, new List<string> { "Communication", "Proactivity" }, "Junior");
Console.WriteLine(analyst.DetailedDescription);
Developer developer = new Developer("Carlos", "Developer", 4500.00, new List<string> { "python", "c#" }, "Senior");
Console.WriteLine(developer.DetailedDescription);
Manager manager = new Manager("Carlos", "Manager", 10000, "Financial");
Console.WriteLine(manager.DetailedDescription);