Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resposta - Exercício 2

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);
2 respostas
solução!

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu modelo de classes ficou bem organizado e a herança está clara. Gostei de como você manteve a propriedade DetailedDescription nas classes derivadas, deixando cada tipo com sua própria descricao sem acento.

Uma dica interessante para o futuro é usar string.Join quando quiser exibir listas como Skills ou ProgrammingLanguages. Isso deixa a saida mais limpa e facilita a leitura. Veja este exemplo:


List<string> skills = new List<string> { "communication", "teamwork" };
string texto = string.Join(", ", skills);
Console.WriteLine(texto);

O código acima transforma a lista em uma única string separada por vírgulas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pela dica Rafaela, vou utiliza-la no futuro quando tiver um desafio semalhante.