fork(1) download
  1. class Curso {
  2. private String nome;
  3. private String nivel;
  4. private double mensalidadeBase;
  5.  
  6. public Curso(String nome, String nivel, double mensalidadeBase) {
  7. this.nome = nome;
  8. this.nivel = nivel;
  9. this.mensalidadeBase = mensalidadeBase;
  10. }
  11.  
  12. public String getNivel() {
  13. return nivel;
  14. }
  15.  
  16. public double getMensalidadeBase() {
  17. return mensalidadeBase;
  18. }
  19.  
  20. public String getDados() {
  21. return "Curso: " + this.nivel + " em " + this.nome;
  22. }
  23. }
  24.  
  25. class TrabalhoConclusao {
  26. private String titulo;
  27. private String orientador;
  28. private String nota;
  29.  
  30. public TrabalhoConclusao(String orientador, String titulo, String nota) {
  31. this.orientador = orientador;
  32. this.titulo = titulo;
  33. this.nota = nota;
  34. }
  35.  
  36. public String getDados(String nivelCurso) {
  37. String tipoTrabalho = "";
  38. switch (nivelCurso) {
  39. case "Graduação": tipoTrabalho = "do TCC: "; break;
  40. case "Lato sensu": tipoTrabalho = "da monografia: "; break;
  41. case "Mestrado": tipoTrabalho = "da dissertação: "; break;
  42. case "Doutorado": tipoTrabalho = "da tese: "; break;
  43. default: tipoTrabalho = "do trabalho final: "; break;
  44. }
  45. String resp = "Título " + tipoTrabalho + this.titulo + "\n";
  46. resp += "Orientador(a): Prof. " + this.orientador + "\n";
  47. resp += "Nota: " + this.nota;
  48. return resp;
  49. }
  50. }
  51.  
  52. class TrabalhoNulo extends TrabalhoConclusao {
  53. public TrabalhoNulo() {
  54. super(null, null, null);
  55. }
  56.  
  57. @Override
  58. public String getDados(String nivelCurso) {
  59. return "";
  60. }
  61. }
  62.  
  63. class Aluno {
  64. private String nome;
  65. private int codMatricula;
  66. private boolean ehBolsista;
  67. private double percentualDesconto;
  68. private boolean cursoFinalizado;
  69. private int anoFinalizacao;
  70. private Curso curso;
  71. private TrabalhoConclusao trabalhoConclusao;
  72.  
  73. public Aluno(String nome, int codMatricula, boolean ehBolsista, double percentualDesconto,
  74. boolean cursoFinalizado, int anoFinalizacao, Curso curso, TrabalhoConclusao trabalho) {
  75. this.nome = nome;
  76. this.codMatricula = codMatricula;
  77. this.ehBolsista = ehBolsista;
  78. this.percentualDesconto = percentualDesconto;
  79. this.cursoFinalizado = cursoFinalizado;
  80. this.anoFinalizacao = anoFinalizacao;
  81. this.curso = curso;
  82. this.trabalhoConclusao = trabalho;
  83. }
  84.  
  85. public double calculaMensalidade() {
  86. if (ehBolsista) {
  87. return this.curso.getMensalidadeBase() * (1 - this.percentualDesconto / 100);
  88. }
  89. return this.curso.getMensalidadeBase();
  90. }
  91.  
  92. public String getDados() {
  93. String resp = "Aluno: " + this.nome + "\n";
  94. resp += this.curso.getDados() + "\n";
  95.  
  96. if (this.ehBolsista) {
  97. resp += "Bolsista com desconto de: " + this.percentualDesconto + "%\n";
  98. }
  99. resp += "Mensalidade: R$ " + String.format("%.2f", this.calculaMensalidade()) + "\n";
  100.  
  101. if (this.cursoFinalizado) {
  102. resp += "Curso finalizado em " + anoFinalizacao + "\n";
  103. String dadosTrabalho = this.trabalhoConclusao.getDados(this.curso.getNivel());
  104. if (!dadosTrabalho.isEmpty()) {
  105. resp += dadosTrabalho;
  106. }
  107. }
  108.  
  109. return resp.trim();
  110. }
  111. }
  112.  
  113. class Teste {
  114. public static void main(String args[]) {
  115. Curso cursoAds = new Curso("ADS", "Graduação", 920.50);
  116. Curso cursoMestrado = new Curso("Computação Aplicada", "Mestrado", 2150.45);
  117.  
  118. TrabalhoConclusao trabalho1 = new TrabalhoNulo();
  119. Aluno aluno1 = new Aluno("Martin Fowler", 11223344, true, 20.5, false, -1, cursoAds, trabalho1);
  120.  
  121. TrabalhoConclusao trabalho2 = new TrabalhoConclusao("Peter Coad", "Impacto da Refatoração", "9.5");
  122. Aluno aluno2 = new Aluno("Kent Beck", 22334455, false, 0, true, 2019, cursoMestrado, trabalho2);
  123.  
  124. System.out.println(aluno1.getDados());
  125. System.out.println("\n--------------------------------\n");
  126. System.out.println(aluno2.getDados());
  127. }
  128. }
  129.  
  130.  
Success #stdin #stdout 0.26s 59560KB
stdin
Standard input is empty
stdout
Aluno: Martin Fowler
Curso: Graduação em ADS
Bolsista com desconto de: 20.5%
Mensalidade: R$ 731.80

--------------------------------

Aluno: Kent Beck
Curso: Mestrado em Computação Aplicada
Mensalidade: R$ 2150.45
Curso finalizado em 2019
Título da dissertação: Impacto da Refatoração
Orientador(a): Prof. Peter Coad
Nota: 9.5