package exemplostrategy; import java.math.BigDecimal; public class Participacao { private OfertaDisciplina oferta; private BigDecimal notaP1; private BigDecimal notaP2; private BigDecimal notaP3; private BigDecimal frequencia; private EstrategiaCalculoGrau strategia; public char calcularGrau(Participacao participacao) { return strategia.calcularGrau(this); } /** Creates a new instance of Participacao */ public Participacao() { } public BigDecimal getNotaFinal() { double notaFinal= 0.0; notaFinal = (getNotaP1().doubleValue() + getNotaP2().doubleValue() + getNotaP3().doubleValue()) / 3; return new BigDecimal(notaFinal); } public OfertaDisciplina getOferta() { return oferta; } public void setOferta(OfertaDisciplina oferta) { this.oferta = oferta; } public BigDecimal getNotaP1() { if(notaP1 == null) { throw new IllegalStateException("Nota de P1 não definida."); } return notaP1; } public void setNotaP1(BigDecimal notaP1) { if(notaP1 == null) throw new IllegalArgumentException("Nota de P1 não pode ser nula."); if(notaP1.doubleValue() < 0.0 || notaP1.doubleValue() > 10.0) throw new IllegalArgumentException("Valor inválido para nota de P1."); this.notaP1 = notaP1; } public BigDecimal getNotaP2() { return notaP2; } public void setNotaP2(BigDecimal notaP2) { this.notaP2 = notaP2; } public BigDecimal getNotaP3() { return notaP3; } public void setNotaP3(BigDecimal notaP3) { this.notaP3 = notaP3; } public BigDecimal getFrequencia() { return frequencia; } public void setFrequencia(BigDecimal frequencia) { this.frequencia = frequencia; } public void setStrategia(EstrategiaCalculoGrau strategia) { this.strategia = strategia; } }