fork download
  1.  
  2. class NivelCurso {
  3. private String nome;
  4. private String tipo_trabalho;
  5.  
  6. public NivelCurso(String nome, String tipo_trabalho){
  7. this.nome = nome;
  8. this.tipo_trabalho = tipo_trabalho;
  9. }
  10.  
  11. public String getNome(){
  12. return this.nome;
  13. }
  14.  
  15. public String getTipoTrabalho(){
  16. return this.tipo_trabalho;
  17. }
  18. }
  19.  
  20. class Graduacao extends NivelCurso {
  21. public Graduacao(){
  22. super("Graduação", "TCC");
  23. }
  24. }
  25.  
  26. class Mestrado extends NivelCurso {
  27. public Mestrado(){
  28. super("Mestrado", "Dissertação");
  29. }
  30. }
  31.  
  32. class Doutorado extends NivelCurso {
  33. public Doutorado(){
  34. super("Doutorado", "Tese");
  35. }
  36. }
  37.  
  38. class LatoSensu extends NivelCurso {
  39. public LatoSensu(){
  40. super("Lato Sensu", "Monografia");
  41. }
  42. }
  43.  
  44. class Trabalho {
  45. private String titulo, orientador;
  46. private double nota;
  47.  
  48. public Trabalho(String titulo, String orientador, double nota){
  49. this.titulo = titulo;
  50. this.orientador = orientador;
  51. this.nota = nota == 0 ? 0 : nota;
  52. }
  53.  
  54. public String getDados(){
  55. return "Título: " + this.titulo + "\nOrientador: " + this.orientador + "\nNota: " + this.nota;
  56. }
  57.  
  58. public String getTitulo(){
  59. return this.titulo;
  60. }
  61.  
  62. public String getOrientador(){
  63. return this.orientador;
  64. }
  65.  
  66. public double getNota(){
  67. return this.nota;
  68. }
  69. }
  70.  
  71. class Curso{
  72.  
  73. private String nome;
  74. private NivelCurso nivel;
  75. private double mensalidade;
  76. private boolean finalizado;
  77. private int ano_finalização;
  78. private Trabalho trabalho;
  79.  
  80.  
  81. public Curso(String nome, NivelCurso nivel, double mensalidade, boolean finalizado, int ano_finalização, Trabalho trabalho){
  82. this.nome = nome;
  83. this.nivel = nivel;
  84. this.mensalidade = mensalidade;
  85. this.finalizado = finalizado;
  86. this.ano_finalização = ano_finalização == -1 ? -1 : ano_finalização;
  87. this.trabalho = trabalho == null ? new Trabalho(null, null, 0) : trabalho;
  88. }
  89.  
  90. public double getMensalidade(double desconto){
  91. desconto = desconto == 0 ? 0 : desconto;
  92. return this.mensalidade*(1-desconto/100);
  93. }
  94.  
  95. public String getDados(){
  96. return "Curso: " + this.nivel + " em " + this.nome +"\n";
  97. }
  98.  
  99. public boolean isFinalizado(){
  100. return this.finalizado && this.ano_finalização != -1;
  101. }
  102.  
  103. public int getAnoFinalização(){
  104. return this.ano_finalização;
  105. }
  106.  
  107. public boolean hasTrabalho(){
  108. return this.trabalho != null;
  109. }
  110.  
  111. public NivelCurso getNivel(){
  112. return this.nivel;
  113. }
  114.  
  115. public Trabalho getTrabalho(){
  116. return this.trabalho;
  117. }
  118. }
  119.  
  120. class Aluno{
  121. private String nome;
  122. private Curso curso;
  123. private int cód_matrícula;
  124. private boolean é_bolsista;
  125. private double desconto;
  126.  
  127. public Aluno(String nome,
  128. Curso curso,
  129. int cód_matrícula,
  130. boolean é_bolsista,
  131. double desconto) {
  132. this.nome = nome;
  133. this.curso = curso;
  134. this.cód_matrícula = cód_matrícula;
  135. this.é_bolsista = é_bolsista;
  136. this.desconto = desconto == 0 ? 0 : desconto;
  137. }
  138.  
  139. public String getDados()
  140. {
  141. String resp = "Aluno: "+ this.nome +"\n";
  142.  
  143. resp += this.curso.getDados() +"\n";
  144. if (this.é_bolsista)
  145. {
  146. resp += "Bolsista com desconto de: " + this.desconto + "%\n";
  147. }
  148. resp += "Mensalidade: R$ " + this.curso.getMensalidade(this.desconto) + "\n";
  149.  
  150. if (this.curso.isFinalizado())
  151. {
  152. resp += "Curso finalizado em "+this.curso.getAnoFinalização() + "\n";
  153. if (this.curso.hasTrabalho())
  154. {
  155. resp += "Título " + this.curso.getNivel().getTipoTrabalho() + ": ";
  156. resp += this.curso.getTrabalho().getTitulo() + "\n";
  157. resp += "Orientador(a): Prof. " + this.curso.getTrabalho().getOrientador() + "\n";
  158. resp += "Nota: " + this.curso.getTrabalho().getNota();
  159. }
  160. }
  161. return resp;
  162. }
  163. }
  164.  
  165. class Teste
  166. {
  167. public static void main (String args[])
  168. {
  169. Aluno aluno1 = new Aluno("Martin Fowler",
  170. new Curso("ADS", new Graduacao(), 920.50, false, -1, new Trabalho(null, null, 0)),
  171. 11223344,
  172. true,
  173. 20.5);
  174.  
  175. Aluno aluno2 = new Aluno("Kent Beck",
  176. new Curso("Computação Aplicada", new Mestrado(), 2150.45, false, -1, new Trabalho("Peter Coad", "Impacto da Refatoração", 9.5)),
  177. 22334455,
  178. false,
  179. 0);
  180. System.out.println(aluno1.getDados());
  181. System.out.println(aluno2.getDados());
  182. }
  183. }
Success #stdin #stdout 0.22s 61104KB
stdin
Standard input is empty
stdout
Aluno: Martin Fowler
Curso: Graduacao@378bf509 em ADS

Bolsista com desconto de: 20.5%
Mensalidade: R$ 731.7975

Aluno: Kent Beck
Curso: Mestrado@9807454 em Computação Aplicada

Mensalidade: R$ 2150.45