class Trabalho {
private String tipo, titulo, orientador
; private double nota;
this .titulo = titulo;
this .orientador = orientador;
this .nota = nota;
switch ( nivel_curso) {
case "Graduação (Bacharelado)" :
case "Graduação" : tipo = "TCC" ; break ;
case "Lato sensu" : tipo = "Monografia" ; break ;
case "Mestrado" : tipo = "Dissertação" ; break ;
case "Doutorado" : tipo = "Tese" ; break ;
default : tipo = "Trabalho" ; break ;
}
}
String resp
= "Título do trabalho (" + tipo
+ "): " + titulo
+ "\n " ; resp += "Orientador(a): Prof. " + orientador + "\n " ;
resp += "Nota: " + nota + "\n " ;
return resp;
}
}
class TrabalhoNulo extends Trabalho {
public TrabalhoNulo( ) {
super ( "" , "" , - 1.0 , "" ) ;
}
}
class Aluno {
private String nome, nome_curso, nivel_curso
; private int cod_matricula, ano_finalizacao;
private boolean e_bolsista, curso_finalizado;
private double mensalidade_curso, desconto;
private Trabalho trabalho;
int cod_matricula,
boolean e_bolsista,
boolean curso_finalizado,
int ano_finalizacao,
double mensalidade_curso,
double desconto,
Trabalho trabalho) {
this .nome = nome;
this .nome_curso = nome_curso;
this .nivel_curso = nivel_curso;
this .cod_matricula = cod_matricula;
this .e_bolsista = e_bolsista;
this .curso_finalizado = curso_finalizado;
this .ano_finalizacao = ano_finalizacao;
this .mensalidade_curso = mensalidade_curso;
this .desconto = desconto;
this .trabalho = trabalho;
}
String resp
= "Aluno: " + this .
nome + "\n " ; resp += "Curso: " + this .nivel_curso + " em " + this .nome_curso + "\n " ;
if ( this .e_bolsista ) {
resp += "Bolsista com desconto de: " + this .desconto + "%\n " ;
resp += "Mensalidade: R$ " + this .mensalidade_curso * ( 1 - this .desconto / 100 ) + "\n " ;
} else {
resp += "Mensalidade: R$ " + this .mensalidade_curso + "\n " ;
}
if ( this .curso_finalizado ) {
resp += "Curso finalizado em " + ano_finalizacao + "\n " ;
resp += trabalho.getDados ( ) ;
}
return resp;
}
}
class Teste {
public static void main
( String args
[ ] ) { Aluno aluno1 = new Aluno( "Martin Fowler" ,
"ADS" ,
"Graduação" ,
11223344 ,
true ,
true ,
2020 ,
920.50 ,
20.5 ,
new TrabalhoNulo( ) ) ;
Aluno aluno2 = new Aluno( "Kent Beck" ,
"Computação Aplicada" ,
"Mestrado" ,
22334455 ,
false ,
true ,
2019 ,
2150.45 ,
0 ,
new Trabalho( "Peter Coad" , "Impacto da Refatoração" , 9.5 , "Mestrado" ) ) ;
System .
out .
println ( aluno1.
getDados ( ) ) ; System .
out .
println ( aluno2.
getDados ( ) ) ; }
}
Y2xhc3MgVHJhYmFsaG8gewogICAgcHJpdmF0ZSBTdHJpbmcgdGlwbywgdGl0dWxvLCBvcmllbnRhZG9yOwogICAgcHJpdmF0ZSBkb3VibGUgbm90YTsKCiAgICBwdWJsaWMgVHJhYmFsaG8oU3RyaW5nIG9yaWVudGFkb3IsIFN0cmluZyB0aXR1bG8sIGRvdWJsZSBub3RhLCBTdHJpbmcgbml2ZWxfY3Vyc28pIHsKICAgICAgICB0aGlzLnRpdHVsbyA9IHRpdHVsbzsKICAgICAgICB0aGlzLm9yaWVudGFkb3IgPSBvcmllbnRhZG9yOwogICAgICAgIHRoaXMubm90YSA9IG5vdGE7CiAgICAgICAgc3dpdGNoIChuaXZlbF9jdXJzbykgewogICAgICAgICAgICBjYXNlICJHcmFkdWHDp8OjbyAoQmFjaGFyZWxhZG8pIjoKICAgICAgICAgICAgY2FzZSAiR3JhZHVhw6fDo28iOiB0aXBvID0gIlRDQyI7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJMYXRvIHNlbnN1IjogdGlwbyA9ICJNb25vZ3JhZmlhIjsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIk1lc3RyYWRvIjogdGlwbyA9ICJEaXNzZXJ0YcOnw6NvIjsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgIkRvdXRvcmFkbyI6IHRpcG8gPSAiVGVzZSI7IGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiB0aXBvID0gIlRyYWJhbGhvIjsgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGFkb3MoKSB7CiAgICAgICAgU3RyaW5nIHJlc3AgPSAiVMOtdHVsbyBkbyB0cmFiYWxobyAoIiArIHRpcG8gKyAiKTogIiArIHRpdHVsbyArICJcbiI7CiAgICAgICAgcmVzcCArPSAiT3JpZW50YWRvcihhKTogUHJvZi4gIiArIG9yaWVudGFkb3IgKyAiXG4iOwogICAgICAgIHJlc3AgKz0gIk5vdGE6ICIgKyBub3RhICsgIlxuIjsKICAgICAgICByZXR1cm4gcmVzcDsKICAgIH0KfQoKY2xhc3MgVHJhYmFsaG9OdWxvIGV4dGVuZHMgVHJhYmFsaG8gewogICAgcHVibGljIFRyYWJhbGhvTnVsbygpIHsKICAgICAgICBzdXBlcigiIiwgIiIsIC0xLjAsICIiKTsKICAgIH0KfQoKY2xhc3MgQWx1bm8gewogICAgcHJpdmF0ZSBTdHJpbmcgbm9tZSwgbm9tZV9jdXJzbywgbml2ZWxfY3Vyc287CiAgICBwcml2YXRlIGludCBjb2RfbWF0cmljdWxhLCBhbm9fZmluYWxpemFjYW87CiAgICBwcml2YXRlIGJvb2xlYW4gZV9ib2xzaXN0YSwgY3Vyc29fZmluYWxpemFkbzsKICAgIHByaXZhdGUgZG91YmxlIG1lbnNhbGlkYWRlX2N1cnNvLCBkZXNjb250bzsKICAgIHByaXZhdGUgVHJhYmFsaG8gdHJhYmFsaG87CgogICAgcHVibGljIEFsdW5vKFN0cmluZyBub21lLAogICAgICAgICAgICAgICAgIFN0cmluZyBub21lX2N1cnNvLAogICAgICAgICAgICAgICAgIFN0cmluZyBuaXZlbF9jdXJzbywKICAgICAgICAgICAgICAgICBpbnQgY29kX21hdHJpY3VsYSwKICAgICAgICAgICAgICAgICBib29sZWFuIGVfYm9sc2lzdGEsCiAgICAgICAgICAgICAgICAgYm9vbGVhbiBjdXJzb19maW5hbGl6YWRvLAogICAgICAgICAgICAgICAgIGludCBhbm9fZmluYWxpemFjYW8sCiAgICAgICAgICAgICAgICAgZG91YmxlIG1lbnNhbGlkYWRlX2N1cnNvLAogICAgICAgICAgICAgICAgIGRvdWJsZSBkZXNjb250bywKICAgICAgICAgICAgICAgICBUcmFiYWxobyB0cmFiYWxobykgewoKICAgICAgICB0aGlzLm5vbWUgPSBub21lOwogICAgICAgIHRoaXMubm9tZV9jdXJzbyA9IG5vbWVfY3Vyc287CiAgICAgICAgdGhpcy5uaXZlbF9jdXJzbyA9IG5pdmVsX2N1cnNvOwogICAgICAgIHRoaXMuY29kX21hdHJpY3VsYSA9IGNvZF9tYXRyaWN1bGE7CiAgICAgICAgdGhpcy5lX2JvbHNpc3RhID0gZV9ib2xzaXN0YTsKICAgICAgICB0aGlzLmN1cnNvX2ZpbmFsaXphZG8gPSBjdXJzb19maW5hbGl6YWRvOwogICAgICAgIHRoaXMuYW5vX2ZpbmFsaXphY2FvID0gYW5vX2ZpbmFsaXphY2FvOwogICAgICAgIHRoaXMubWVuc2FsaWRhZGVfY3Vyc28gPSBtZW5zYWxpZGFkZV9jdXJzbzsKICAgICAgICB0aGlzLmRlc2NvbnRvID0gZGVzY29udG87CiAgICAgICAgdGhpcy50cmFiYWxobyA9IHRyYWJhbGhvOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGFkb3MoKSB7CiAgICAgICAgU3RyaW5nIHJlc3AgPSAiQWx1bm86ICIgKyB0aGlzLm5vbWUgKyAiXG4iOwogICAgICAgIHJlc3AgKz0gIkN1cnNvOiAiICsgdGhpcy5uaXZlbF9jdXJzbyArICIgZW0gIiArIHRoaXMubm9tZV9jdXJzbyArICJcbiI7CgogICAgICAgIGlmICh0aGlzLmVfYm9sc2lzdGEpIHsKICAgICAgICAgICAgcmVzcCArPSAiQm9sc2lzdGEgY29tIGRlc2NvbnRvIGRlOiAiICsgdGhpcy5kZXNjb250byArICIlXG4iOwogICAgICAgICAgICByZXNwICs9ICJNZW5zYWxpZGFkZTogUiQgIiArIHRoaXMubWVuc2FsaWRhZGVfY3Vyc28gKiAoMSAtIHRoaXMuZGVzY29udG8gLyAxMDApICsgIlxuIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXNwICs9ICJNZW5zYWxpZGFkZTogUiQgIiArIHRoaXMubWVuc2FsaWRhZGVfY3Vyc28gKyAiXG4iOwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuY3Vyc29fZmluYWxpemFkbykgewogICAgICAgICAgICByZXNwICs9ICJDdXJzbyBmaW5hbGl6YWRvIGVtICIgKyBhbm9fZmluYWxpemFjYW8gKyAiXG4iOwogICAgICAgICAgICByZXNwICs9IHRyYWJhbGhvLmdldERhZG9zKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXNwOwogICAgfQp9CgpjbGFzcyBUZXN0ZSB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CiAgICAgICAgQWx1bm8gYWx1bm8xID0gbmV3IEFsdW5vKCJNYXJ0aW4gRm93bGVyIiwKICAgICAgICAgICAgICAgICJBRFMiLAogICAgICAgICAgICAgICAgIkdyYWR1YcOnw6NvIiwKICAgICAgICAgICAgICAgIDExMjIzMzQ0LAogICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgIHRydWUsCiAgICAgICAgICAgICAgICAyMDIwLAogICAgICAgICAgICAgICAgOTIwLjUwLAogICAgICAgICAgICAgICAgMjAuNSwKICAgICAgICAgICAgICAgIG5ldyBUcmFiYWxob051bG8oKSk7CgogICAgICAgIEFsdW5vIGFsdW5vMiA9IG5ldyBBbHVubygiS2VudCBCZWNrIiwKICAgICAgICAgICAgICAgICJDb21wdXRhw6fDo28gQXBsaWNhZGEiLAogICAgICAgICAgICAgICAgIk1lc3RyYWRvIiwKICAgICAgICAgICAgICAgIDIyMzM0NDU1LAogICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgMjAxOSwKICAgICAgICAgICAgICAgIDIxNTAuNDUsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgbmV3IFRyYWJhbGhvKCJQZXRlciBDb2FkIiwgIkltcGFjdG8gZGEgUmVmYXRvcmHDp8OjbyIsIDkuNSwgIk1lc3RyYWRvIikpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYWx1bm8xLmdldERhZG9zKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbHVubzIuZ2V0RGFkb3MoKSk7CiAgICB9Cn0K