1
resposta

[Projeto] [Projeto] Desafio: hora da prática - Modelar o funcionamento de uma oficina automobilistica.

namespace OficinaMecanica;

internal class Veiculo
{
    public string Marca { get; private set; }
    public string Modelo { get; private set; }
    public int Ano { get; private set; }
    public string Placa { get; private set; }
    public Cliente Proprietario { get; private set; }

    public Veiculo(string marca, string modelo, int ano, string placa, Cliente proprietario)
    {
        Marca = marca;
        Modelo = modelo;
        Ano = ano;
        Placa = placa;
        Proprietario = proprietario;
    }
}

internal class Cliente
{
    public string Nome { get; private set; }
    public string Contato { get; private set; }

    public Cliente(string nome, string contato)
    {
        Nome = nome;
        Contato = contato;
    }
}


internal class Mecanico
{
    public string Nome { get; private set; }
    public string Especialidade { get; private set; }

    public Mecanico(string nome, string especialidade)
    {
        Nome = nome;
        Especialidade = especialidade;
    }
}


public class Oficina
{
    private List<Veiculo> veiculos;

    public Oficina()
    {
        veiculos = new();
    }

    internal void AgendarServico(Veiculo veiculo, Mecanico mecanico, string dataAgendamento)
    {
        veiculos.Add(veiculo);

        // Lógica para agendar o serviço (pode ser expandida conforme necessário)
        Console.WriteLine($"Serviço agendado para {veiculo.Placa} em {dataAgendamento} com o mecânico {mecanico.Nome}.");
    }

    internal void RealizarServico(Veiculo veiculo, Mecanico mecanico)
    {
        if (veiculos.Contains(veiculo))
        {
            Console.WriteLine($"Serviço realizado em {veiculo.Placa} pelo mecânico {mecanico.Nome}.");
            veiculos.Remove(veiculo);
        }
        else
        {
            Console.WriteLine($"O veículo {veiculo.Placa} não está na oficina para realizar o serviço.");
        }
    }
}

using OficinaMecanica;

Cliente cliente = new Cliente("Joao", "41785214752");
Veiculo meuCarro = new Veiculo("Chevrolet", "Onyx", 2025, "UTH1J08", cliente);
Mecanico mecanico = new Mecanico("José", "Mecânica Geral");
Oficina oficina = new Oficina();

oficina.AgendarServico(meuCarro, mecanico, "2026-04-05");
oficina.RealizarServico(meuCarro, mecanico);
1 resposta

Oi, Eduardo! Como vai?

Seu projeto ficou bem organizado ao separar as responsabilidades em classes como Veiculo, Cliente, Mecanico e Oficina. Um ponto que chamou atenção foi o uso de propriedades com private set, que ajuda a proteger os dados depois da criação dos objetos. Uma dica interessante para o futuro é criar uma classe Servico para guardar informações do agendamento, como veículo, mecânico e data, deixando a classe Oficina mais flexível:


internal class Servico
{
    public Veiculo Veiculo { get; private set; }
    public Mecanico Mecanico { get; private set; }
    public string Data { get; private set; }

    public Servico(Veiculo veiculo, Mecanico mecanico, string data)
    {
        Veiculo = veiculo;
        Mecanico = mecanico;
        Data = data;
    }
}

Esse código cria um objeto Servico para representar cada atendimento agendado. Assim, em vez de guardar apenas uma lista de Veiculo, você poderia guardar uma lista de Servico, mantendo mais detalhes sobre cada atendimento. Continue praticando, sua modelagem mostra uma boa compreensão de Orientação a Objetos em C#.

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