1
resposta

Desafio: Resolucao Funcionamento Oficina

1 - Modelar o funcionamento de uma oficina automobilistica.

    
namespace OficinaAutomobilistica.Models
{
    internal class Oficina
    {
        public Oficina(string nome, string endereco)
        {
            FuncionariosDaOficina = new List<Funcionario>();
            VeiculosNaOficina = new List<Veiculo>();
            Clientes = new List<Cliente>();
            Nome = nome;
            Endereco = endereco;
        }

        public string? Nome { get; private set; }
        public string? Endereco { get; private set; }
        public List<Funcionario> FuncionariosDaOficina { get; private set; }
        public List<Veiculo> VeiculosNaOficina { get; private set; }    

        public List<Cliente> Clientes { get; private set; }
        public string DescricaoOficina => $"Oficina: {Nome}, Endereço: {Endereco}";

        public void ContratarFuncionario(Funcionario funcionario)
        {
            if (!FuncionariosDaOficina.Contains(funcionario))
            {
                FuncionariosDaOficina.Add(funcionario);
                Console.WriteLine($"Funcionário: {funcionario.Nome}, contratado com sucesso. ");
            }

            else
                Console.WriteLine($"Funcionário: {funcionario.Nome}, não consta na lista de funcionários da oficina. ");
        }

        public void DemitirFuncionario(Funcionario funcionario)
        {
            if (FuncionariosDaOficina.Contains(funcionario))
            {
                FuncionariosDaOficina.Remove(funcionario);
                Console.WriteLine($"Funcionário: {funcionario.Nome}, não consta mais na lista de funcionários da oficina: {this.Nome}");
            }               

            else
                Console.WriteLine($"Funcionario: {funcionario.Nome}, não consta na lista de funcionários da oficina. ");
        }

        public void AgendarServico(Veiculo veiculo, Funcionario funcionario, DateTime DataAgendamento)
        {
            if (!VeiculosNaOficina.Contains(veiculo)) 
            {
                Console.WriteLine($"Serviço agendado para o veiculo de modelo: {veiculo.Modelo} correspondente a Placa: {veiculo.Placa}, com o Mecanico: {funcionario.Nome} na data informada: {DataAgendamento.ToString()}");
                VeiculosNaOficina.Add(veiculo);
            }
            else
            {
                Console.WriteLine("Não contém veículo para reparo.");
            }
        }

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

        public void ExibirFichaTecnica()
        {
            Console.WriteLine($"Oficina: {DescricaoOficina}");
            Console.Write($"Lista de funcionários da oficina");

            foreach (Funcionario mecanico in FuncionariosDaOficina)
            {
                Console.WriteLine($"Funcionario: {mecanico.Nome}");
            }

            Console.Write("Veículos na oficina: ");

            foreach(Veiculo meuCarro in VeiculosNaOficina)
            {
                Console.WriteLine($"Veiculo: {meuCarro.Modelo}");
            }

            Console.ReadKey();
        }

    }
}

2 - Criar um programa Program.cs e simular o funcionamento do programa.

using OficinaAutomobilistica.Models;

Oficina minhaOficina = new Oficina("Guedes Tech Auto", "Av. Principal, 1000");
Veiculo veiculo1 = new Veiculo("Sandero", "ATX-2391");
Veiculo veiculo2 = new Veiculo("Civic", "LOU-4455");

Funcionario mecanico = new Funcionario("Jailson", "1223456");

minhaOficina.ContratarFuncionario(mecanico);
minhaOficina.AgendarServico(veiculo1, mecanico, DateTime.Now);
minhaOficina.ExibirFichaTecnica();
1 resposta

Oi, Adms! Como vai?

Agradeço por compartilhar.

Gostei da sua modelagem da oficina, principalmente na forma como você organizou as responsabilidades da classe Oficina e simulou o fluxo no Program.cs, mostrando bem o uso de listas, métodos e encapsulamento no contexto de Orientação a Objetos. Isso demonstra que você está aplicando bem os conceitos trabalhados na aula.

Continue explorando esse tipo de simulação, pois isso fortalece muito o raciocínio orientado a objetos.

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