1
resposta

[Resolução] - Faça como eu fiz: controlando acesso

Eu resolvi o exercício inicialmente conforme o solicitado, a única diferença foi que usei construtores primários.

Depois resolvi ele novamente, tentando separar em objetos específicos, para manter as responsabilidades conforme o contexto.

Adicionei um filtro simples, onde é possível filtrar as consultas pelo nome do médico, tipo de médico, e caso não seja inserido um parâmetro de consulta exibe o histórico completo.

Se puderem dar um feedback como os de sempre, apontando tanto os pontos positivos quanto os negativos, fico muito grato.

https://github.com/GersonODev/ExerciciosResolvidos/tree/main/Praticando%20Orienta%C3%A7%C3%A3o%20a%20Objetos%20-%20Encapsulamento/E03ControlandoAcesso

1 resposta

Oi, Gerson! Como vai?

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

Gostei da forma como você expandiu a proposta original, separando bem as responsabilidades entre Paciente, HistoricoMedico, Consulta e Medico. O uso de internal em HistoricoMedico mantém o controle de acesso dentro do projeto, alinhado com a ideia de proteger dados sensíveis.

Também foi interessante ver o filtro no método ExibirHistorico, utilizando StringComparison.OrdinalIgnoreCase, o que deixa a busca mais robusta. Como ponto de atenção, o HistoricoMedico poderia ter uma propriedade interna como CodigoProntuario para ficar ainda mais próximo do enunciado da atividade e reforçar o conceito de encapsulamento no nível da classe.

Uma dica interessante para o futuro é expor coleções apenas para leitura, evitando modificações externas. Veja este exemplo:


private List<Consulta> consultas = new();

public IReadOnlyList<Consulta> Consultas => consultas.AsReadOnly();

Esse código usa AsReadOnly() para permitir leitura da lista sem permitir alterações externas, reforçando o encapsulamento.

Alura

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