Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Faça como eu fiz: agendamento médico

Consulta.cs

class Consulta {
    private bool reagendada = false;
    public string? NomePaciente {get;}
    public string? NomeMedico {get;}
    public DateTime DataConsulta {get; set;}

    public Consulta(string? nomePaciente, string? nomeMedico, DateTime dataConsulta) {
        NomePaciente = nomePaciente;
        NomeMedico = nomeMedico;
        DataConsulta = dataConsulta;
    }

    public void Reagendar(DateTime novaData) {
        if (novaData != DataConsulta) {
            DataConsulta = novaData;
            Console.WriteLine($"A data da consulta foi alterada para o dia {novaData.ToString("dd/MM/yyyy")}");
            reagendada = true;
        }
        else Console.WriteLine("A data não pode ser alterada para a mesma.");
    }
    public void ExibirResumo() {
        Console.WriteLine($"Consulta marcada com {NomeMedico} para o paciente {NomePaciente}.");
        if (!reagendada) Console.WriteLine($"Data: {DataConsulta.ToString("dd/MM/yyyy")}");
        else Console.WriteLine($"Nova Data: {DataConsulta.ToString("dd/MM/yyyy")}");
    }
}

Program.cs

void LimpaTela() {
    Console.ReadKey(); Console.Clear();
}

Console.Clear();
var consulta = new Consulta ("Rafael", "Dr Roberto", new DateTime(2026, 10, 20));
consulta.ExibirResumo(); LimpaTela();
consulta.Reagendar(new DateTime(2026,11,3)); LimpaTela();
consulta.Reagendar(new DateTime(2026,11,3)); LimpaTela();
consulta.ExibirResumo();
1 resposta
solução!

Oi, Diego. Tudo bem?

Parabéns pela resolução do exercício! A sua implementação mostra um excelente domínio dos fundamentos de orientação a objetos em C#.

Os pontos principais que tornam sua solução bem estruturada:

  • Uso de membros privados: Você utilizou corretamente o campo reagendada como privado. Isso protege a lógica interna da classe, garantindo que o estado de "reagendamento" só mude através do método apropriado.
  • Validação de dados: Adicionar a verificação para impedir que a data seja alterada para o mesmo dia é uma ótima prática de programação defensiva. Isso evita mudanças desnecessárias no estado do objeto.
  • Lógica de exibição: O uso de condicionais no método ExibirResumo para alternar entre "Data" e "Nova Data" cumpre exatamente o que o requisito pedia, mantendo a interface com o usuário clara.
  • Propriedades somente leitura: Ao definir apenas o get para o nome do paciente e do médico, você garantiu a imutabilidade desses dados após a criação da consulta, o que traz mais segurança ao sistema.

O detalhe de limpar a tela e aguardar uma tecla no Program.cs também ajuda muito na visualização do fluxo durante os testes. Continue com esse foco na organização e na validação dos dados!

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