class Curso {
private double mensalidade;
public Curso
( String nome,
String nivel,
double mensalidade
) { this .nome = nome;
this .nivel = nivel;
this .mensalidade = mensalidade;
}
public String getNome
( ) { return nome
; } public String getNivel
( ) { return nivel
; } public double getMensalidade( ) { return mensalidade; }
}
class Aluno {
private int cód_matrícula;
private boolean é_bolsista;
private double desconto;
private Curso curso;
public Aluno
( String nome,
int cód_matrícula,
boolean é_bolsista,
double desconto, Curso curso
) { this .nome = nome;
this .c ód_matrícula = cód_matrícula;
this .é_bolsista = é_bolsista;
this .desconto = desconto;
this .curso = curso;
}
private double calcularMensalidade( ) {
if ( é_bolsista) {
return curso.getMensalidade ( ) * ( 1 - this .desconto / 100 ) ;
}
return curso.getMensalidade ( ) ;
}
String resp
= "Aluno: " + this .
nome + "\n " ; resp += "Curso: " + curso.getNivel ( ) + " em " + curso.getNome ( ) + "\n " ;
if ( é_bolsista) {
resp += "Bolsista com desconto de: " + this .desconto + "%\n " ;
}
// Chamada ao método extraído
resp += "Mensalidade: R$ " + calcularMensalidade( ) ;
return resp;
}
}
class Teste {
public static void main
( String args
[ ] ) { Curso c1 = new Curso( "ADS" , "Graduação" , 920.50 ) ;
Curso c2 = new Curso( "Computação Aplicada" , "Mestrado" , 2150.45 ) ;
Aluno a1 = new Aluno( "Martin Fowler" , 11223344 , true , 20.5 , c1) ;
Aluno a2 = new Aluno( "Kent Beck" , 22334455 , false , 0 , c2) ;
System .
out .
println ( a1.
getDados ( ) ) ; System .
out .
println ( a2.
getDados ( ) ) ; }
}
Y2xhc3MgQ3Vyc28gewogICAgcHJpdmF0ZSBTdHJpbmcgbm9tZTsKICAgIHByaXZhdGUgU3RyaW5nIG5pdmVsOwogICAgcHJpdmF0ZSBkb3VibGUgbWVuc2FsaWRhZGU7CgogICAgcHVibGljIEN1cnNvKFN0cmluZyBub21lLCBTdHJpbmcgbml2ZWwsIGRvdWJsZSBtZW5zYWxpZGFkZSkgewogICAgICAgIHRoaXMubm9tZSA9IG5vbWU7CiAgICAgICAgdGhpcy5uaXZlbCA9IG5pdmVsOwogICAgICAgIHRoaXMubWVuc2FsaWRhZGUgPSBtZW5zYWxpZGFkZTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldE5vbWUoKSB7IHJldHVybiBub21lOyB9CiAgICBwdWJsaWMgU3RyaW5nIGdldE5pdmVsKCkgeyByZXR1cm4gbml2ZWw7IH0KICAgIHB1YmxpYyBkb3VibGUgZ2V0TWVuc2FsaWRhZGUoKSB7IHJldHVybiBtZW5zYWxpZGFkZTsgfQp9CgpjbGFzcyBBbHVubyB7CiAgICBwcml2YXRlIFN0cmluZyBub21lOwogICAgcHJpdmF0ZSBpbnQgY8OzZF9tYXRyw61jdWxhOwogICAgcHJpdmF0ZSBib29sZWFuIMOpX2JvbHNpc3RhOwogICAgcHJpdmF0ZSBkb3VibGUgZGVzY29udG87CiAgICBwcml2YXRlIEN1cnNvIGN1cnNvOwoKICAgIHB1YmxpYyBBbHVubyhTdHJpbmcgbm9tZSwgaW50IGPDs2RfbWF0csOtY3VsYSwgYm9vbGVhbiDDqV9ib2xzaXN0YSwgZG91YmxlIGRlc2NvbnRvLCBDdXJzbyBjdXJzbykgewogICAgICAgIHRoaXMubm9tZSA9IG5vbWU7CiAgICAgICAgdGhpcy5jw7NkX21hdHLDrWN1bGEgPSBjw7NkX21hdHLDrWN1bGE7CiAgICAgICAgdGhpcy7DqV9ib2xzaXN0YSA9IMOpX2JvbHNpc3RhOwogICAgICAgIHRoaXMuZGVzY29udG8gPSBkZXNjb250bzsKICAgICAgICB0aGlzLmN1cnNvID0gY3Vyc287CiAgICB9CgogICAgcHJpdmF0ZSBkb3VibGUgY2FsY3VsYXJNZW5zYWxpZGFkZSgpIHsKICAgICAgICBpZiAow6lfYm9sc2lzdGEpIHsKICAgICAgICAgICAgcmV0dXJuIGN1cnNvLmdldE1lbnNhbGlkYWRlKCkgKiAoMSAtIHRoaXMuZGVzY29udG8gLyAxMDApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY3Vyc28uZ2V0TWVuc2FsaWRhZGUoKTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldERhZG9zKCkgewogICAgICAgIFN0cmluZyByZXNwID0gIkFsdW5vOiAiICsgdGhpcy5ub21lICsgIlxuIjsKICAgICAgICByZXNwICs9ICJDdXJzbzogIiArIGN1cnNvLmdldE5pdmVsKCkgKyAiIGVtICIgKyBjdXJzby5nZXROb21lKCkgKyAiXG4iOwogICAgICAgIAogICAgICAgIGlmICjDqV9ib2xzaXN0YSkgewogICAgICAgICAgICByZXNwICs9ICJCb2xzaXN0YSBjb20gZGVzY29udG8gZGU6ICIgKyB0aGlzLmRlc2NvbnRvICsgIiVcbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoYW1hZGEgYW8gbcOpdG9kbyBleHRyYcOtZG8KICAgICAgICByZXNwICs9ICJNZW5zYWxpZGFkZTogUiQgIiArIGNhbGN1bGFyTWVuc2FsaWRhZGUoKTsKICAgICAgICAKICAgICAgICByZXR1cm4gcmVzcDsKICAgIH0KfQoKY2xhc3MgVGVzdGUgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZyBhcmdzW10pIHsKICAgICAgICBDdXJzbyBjMSA9IG5ldyBDdXJzbygiQURTIiwgIkdyYWR1YcOnw6NvIiwgOTIwLjUwKTsKICAgICAgICBDdXJzbyBjMiA9IG5ldyBDdXJzbygiQ29tcHV0YcOnw6NvIEFwbGljYWRhIiwgIk1lc3RyYWRvIiwgMjE1MC40NSk7CgogICAgICAgIEFsdW5vIGExID0gbmV3IEFsdW5vKCJNYXJ0aW4gRm93bGVyIiwgMTEyMjMzNDQsIHRydWUsIDIwLjUsIGMxKTsKICAgICAgICBBbHVubyBhMiA9IG5ldyBBbHVubygiS2VudCBCZWNrIiwgMjIzMzQ0NTUsIGZhbHNlLCAwLCBjMik7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhMS5nZXREYWRvcygpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYTIuZ2V0RGFkb3MoKSk7CiAgICB9Cn0=