class Bolsa {
private double desconto;
public Bolsa(double desconto) {
this.desconto = desconto;
}
return "Bolsista com desconto de: " + desconto + "%\n";
}
public double aplicarDesconto(Curso curso) {
return curso.getMensalidade() * (1 - desconto / 100);
}
protected void setDesconto(double desconto) {
this.desconto = 0;
}
}
class BolsaNula extends Bolsa {
public BolsaNula() {
super(0);
}
return "";
}
}
abstract class TrabalhoFinal {
protected int ano_finalizacao;
protected String titulo, orientador
; protected double nota;
return getFinalizacao() + getTitulo() + getOrientador() + getNota();
}
private String getFinalizacao
() { return "Curso finalizado em " + ano_finalizacao + "\n";
}
protected String getTitulo
() { return titulo + "\n";
}
private String getOrientador
() { return "Orientador(a): Prof. " + orientador + "\n";
}
return "Nota: " + nota;
}
public void setAnoFinalizacao(int ano_finalizacao) {
this.ano_finalizacao = ano_finalizacao;
}
public void setTitulo
(String titulo
) { this.titulo = titulo;
}
public void setOrientador
(String orientador
) { this.orientador = orientador;
}
public void setNota(double nota) {
this.nota = nota;
}
}
class Tcc extends TrabalhoFinal {
protected String getTitulo
() { return "Título do TCC: " + titulo + "\n";
}
}
class Monografia extends TrabalhoFinal {
protected String getTitulo
() { return "Título da monografia: " + super.getTitulo();
}
}
class Dissertacao extends TrabalhoFinal {
protected String getTitulo
() { return "Título da dissertação: " + super.getTitulo();
}
}
class Tese extends TrabalhoFinal {
protected String getTitulo
() { return "Título da tese: " + super.getTitulo();
}
}
class TrabalhoFinalIgnorado extends TrabalhoFinal {
protected String getTitulo
() { return "";
}
}
class TrabalhoFinalNulo extends TrabalhoFinal {
return "";
}
}
class Curso {
private double mensalidade;
public Curso
(String nome,
String nivel,
double mensalidade
) { this.nome = nome;
this.nivel = nivel;
this.mensalidade = mensalidade;
}
return "Curso: " + nivel + " em " + nome +"\n";
}
public double getMensalidade() {
return mensalidade;
}
public TrabalhoFinal buildTrabalhoFinal
(int ano_finalizacao,
String titulo,
String orientador,
double nota
) { TrabalhoFinal trabalho = null;
switch (nivel) {
case "Graduação": trabalho = new Tcc(); break;
case "Lato sensu": trabalho = new Monografia(); break;
case "Mestrado": trabalho = new Dissertacao(); break;
case "Doutorado": trabalho = new Tese(); break;
}
trabalho.setAnoFinalizacao(ano_finalizacao);
trabalho.setTitulo(titulo);
trabalho.setOrientador(orientador);
trabalho.setNota(nota);
return trabalho;
}
}
class Aluno {
private Curso curso;
private Bolsa bolsa;
private TrabalhoFinal trabalho_final;
private int cod_matricula;
public Aluno(
Curso curso,
Bolsa bolsa,
TrabalhoFinal trabalho_final,
int cod_matricula
) {
this.nome = nome;
this.curso = curso;
this.bolsa = bolsa;
this.trabalho_final = trabalho_final;
this.cod_matricula = cod_matricula;
}
return getNome() + curso.getDados() + bolsa.getDados() + getMensalidade() + trabalho_final.getDados();
}
return "Aluno: "+ nome +"\n";
}
private String getMensalidade
() { return "Mensalidade: R$ " + bolsa.aplicarDesconto(curso) + "\n";
}
}
class Teste {
public static void main
(String args
[]) { Aluno a1 = new Aluno(
"Martin Fowler",
new Curso("ADS", "Graduação", 920.50),
new Bolsa(20.5),
new TrabalhoFinalNulo(),
11223344
);
Curso curso = new Curso("Computação Aplicada", "Mestrado", 2150.45);
TrabalhoFinal trabalho = curso.buildTrabalhoFinal(2019, "Impacto da Refatoração", "Peter Coad", 9.5);
Aluno a2 = new Aluno(
"Kent Beck",
curso,
new BolsaNula(),
trabalho,
22334455
);
System.
out.
println(a1.
getDados()); System.
out.
println(a2.
getDados()); }
}