Como posso desenhar uma aula chamada alergia?
requisito: conceber uma classe chamada alergia que forneça informação sobre a alergia de um doente. por exemplo, quem notificou a alergia(doente/médico/familiar), os diferentes sintomas da alergia que são detectados, a gravidade, o método que retorna quando essa alergia foi detectada nesse doente.
Estou a pensar em algo assim.public abstract class Allergy{
private String reporter;
private String symptoms;
private int timeReported;
private int severity;
//Higher the number, higher the severity
public Allergy(String reporter, String symptoms, int timeReported, int severity){
this.reporter=reporter;
this.symptoms=symptoms;
this.timeReported=timeReported;
this.severity=severity;
}
public void setReporter(String reporter){
this.reporter=reporter;
}
public void setSymptoms(String symptoms){
this.symptoms=symptoms;
}
public void setSeverity(int severity){
this.severity=severity;
}
public void setTimeReported(int timeReported){
this.timeReported=timeReported;
}
public String getReporter(){
return reporter;
}
public String getSymptoms(){
return symptoms;
}
public int getSeverity(){
return severity;
}
public int getTimeReported(){
return timeReported;
}
}
Este é um bom design da turma? Há alguma maneira de melhorar o design? Ou alguém tem uma implementação melhor?
Tenho de ser capaz de explicar tantos conceitos OPA. Posso fazer uso de qualquer outro conceito OOP aqui além de Abstrato, encapsulação e herança que eu serei capaz de usar tendo o projeto atual em minha mente?
3 answers
Que tal usar um enum para gravidade (baixo, alto, médio) e usar um enum para o repórter(paciente, médico, familiar, outro) e usar HashSet para sintomas.
A melhor maneira de ter alergia e paciência. O paciente tem alergia. No entanto, o paciente pode ter alergias, então você pode adicionar a estrutura de dados como arrayList de alergia.
Além dos erros de sintaxe mencionados no comentário, e assumindo que você não deve usar herança, o conceito que você está faltando mais são interfaces. Então o que você poderia incluir uma doença de interface (chamada IDisease) e deixar a classe de alergia implementá-la, ou seja
public interface IDisease{
void setReporter(String reporter);
//other methods
}
}
public class Allergy implements IDisease{
public Allergy(String reporter, String symptoms, int timeReported, int severity){
this.reporter=reporter;
this.symptoms=symptoms;
this.timeReported=timeReported;
this.severity=severity;
}
public void setReporter(String reporter){
this.reporter=reporter;
}
public void setSymptoms(String symptoms){
this.symptoms=symptoms;
}
public void setSeverity(int severity){
this.severity=severity;
}
public void setTimeReported(int timeReported){
this.timeReported=timeReported;
}
public String getReporter(){
return reporter;
}
public String getSymptoms(){
return symptoms;
}
public int getSeverity(){
return severity;
}
public int getTimeReported(){
return timeReported;
}
}
A utilização de uma interface pode justificar-se no caso de, mais tarde, pretender escrever um algoritmo para analisar todos os tipos de doenças (incluindo alergias) e manter o algoritmo dissociado a partir dos detalhes reais de uma doença particular.