fork download
  1. // 1. Extração dos dados do curso para uma classe própria
  2. class Curso {
  3. private String nome;
  4. private String nivel;
  5. private double mensalidade;
  6.  
  7. public Curso(String nome, String nivel, double mensalidade) {
  8. this.nome = nome;
  9. this.nivel = nivel;
  10. this.mensalidade = mensalidade;
  11. }
  12.  
  13. public String getNome() { return nome; }
  14. public String getNivel() { return nivel; }
  15. public double getMensalidade() { return mensalidade; }
  16. }
  17.  
  18. // 2. Criação de uma superclasse abstrata para Aluno
  19. abstract class Aluno {
  20. protected String nome;
  21. protected int matricula;
  22. protected Curso curso;
  23.  
  24. public Aluno(String nome, int matricula, Curso curso) {
  25. this.nome = nome;
  26. this.matricula = matricula;
  27. this.curso = curso;
  28. }
  29.  
  30. // Método abstrato para ser implementado pelas subclasses
  31. public abstract String getDados();
  32. }
  33.  
  34. // 3. Subclasse para alunos sem bolsa
  35. class AlunoRegular extends Aluno {
  36.  
  37. public AlunoRegular(String nome, int matricula, Curso curso) {
  38. super(nome, matricula, curso);
  39. }
  40.  
  41. @Override
  42. public String getDados() {
  43. String resp = "Aluno: " + this.nome + "\n";
  44. resp += "Curso: " + this.curso.getNivel() + " em " + this.curso.getNome() + "\n";
  45. resp += "Mensalidade: R$ " + this.curso.getMensalidade();
  46. return resp;
  47. }
  48. }
  49.  
  50. // 4. Subclasse para alunos bolsistas
  51. class AlunoBolsista extends Aluno {
  52. private double desconto;
  53.  
  54. public AlunoBolsista(String nome, int matricula, Curso curso, double desconto) {
  55. super(nome, matricula, curso);
  56. this.desconto = desconto;
  57. }
  58.  
  59. @Override
  60. public String getDados() {
  61. String resp = "Aluno: " + this.nome + "\n";
  62. resp += "Curso: " + this.curso.getNivel() + " em " + this.curso.getNome() + "\n";
  63. resp += "Bolsista com desconto de: " + this.desconto + "%\n";
  64. resp += "Mensalidade: R$ " + this.curso.getMensalidade() * (1 - this.desconto / 100);
  65. return resp;
  66. }
  67. }
  68.  
  69. // 5. Classe de Teste
  70. class Teste {
  71. public static void main (String args[]) {
  72. Curso c1 = new Curso("ADS", "Graduação", 920.50);
  73. Curso c2 = new Curso("Computação Aplicada", "Mestrado", 2150.45);
  74.  
  75. Aluno a1 = new AlunoBolsista("Martin Fowler", 11223344, c1, 20.5);
  76. Aluno a2 = new AlunoRegular("Kent Beck", 22334455, c2);
  77.  
  78. System.out.println(a1.getDados());
  79. System.out.println();
  80. System.out.println(a2.getDados());
  81. }
  82. }
Success #stdin #stdout 0.33s 61256KB
stdin
Standard input is empty
stdout
Aluno: Martin Fowler
Curso: Graduação em ADS
Bolsista com desconto de: 20.5%
Mensalidade: R$ 731.7975

Aluno: Kent Beck
Curso: Mestrado em Computação Aplicada
Mensalidade: R$ 2150.45