class Bolsa {
private double desconto;
public Bolsa( double desconto) {
this .desconto = desconto;
}
return "Bolsista com desconto de: " + desconto + "%\n " ;
}
public double aplicarDesconto( Curso curso) {
return curso.getMensalidade ( ) * ( 1 - desconto / 100 ) ;
}
protected void setDesconto( double desconto) {
this .desconto = 0 ;
}
}
class BolsaNula extends Bolsa {
public BolsaNula( ) {
super ( 0 ) ;
}
return "" ;
}
}
class Curso {
private double mensalidade;
public Curso
( String nome,
String nivel,
double mensalidade
) { this .nome = nome;
this .nivel = nivel;
this .mensalidade = mensalidade;
}
return "Curso: " + nivel + " em " + nome + "\n " ;
}
public double getMensalidade( ) {
return mensalidade;
}
}
class Aluno {
private Curso curso;
private Bolsa bolsa;
private int cod_matricula;
public Aluno(
Curso curso,
Bolsa bolsa,
int cod_matricula
) {
this .nome = nome;
this .curso = curso;
this .bolsa = bolsa;
this .cod_matricula = cod_matricula;
}
return getNome( ) + curso.getDados ( ) + bolsa.getDados ( ) + getMensalidade( ) ;
}
return "Aluno: " + nome + "\n " ;
}
private String getMensalidade
( ) { return "Mensalidade: R$ " + bolsa.aplicarDesconto ( curso) ;
}
}
class Teste {
public static void main
( String args
[ ] ) { Aluno a1 = new Aluno(
"Martin Fowler" ,
new Curso( "ADS" , "Graduação" , 920.50 ) ,
new Bolsa( 20.5 ) ,
11223344
) ;
Aluno a2 = new Aluno(
"Kent Beck" ,
new Curso( "Computação Aplicada" , "Mestrado" , 2150.45 ) ,
new BolsaNula( ) ,
22334455
) ;
System .
out .
println ( a1.
getDados ( ) ) ; System .
out .
println ( a2.
getDados ( ) ) ; }
}
Y2xhc3MgQm9sc2EgewogIHByaXZhdGUgZG91YmxlIGRlc2NvbnRvOwoKICBwdWJsaWMgQm9sc2EoZG91YmxlIGRlc2NvbnRvKSB7CiAgICB0aGlzLmRlc2NvbnRvID0gZGVzY29udG87CiAgfQoKICBwdWJsaWMgU3RyaW5nIGdldERhZG9zKCkgewogICAgcmV0dXJuICJCb2xzaXN0YSBjb20gZGVzY29udG8gZGU6ICIgKyBkZXNjb250byArICIlXG4iOwogIH0KCiAgcHVibGljIGRvdWJsZSBhcGxpY2FyRGVzY29udG8oQ3Vyc28gY3Vyc28pIHsKICAgICAgcmV0dXJuIGN1cnNvLmdldE1lbnNhbGlkYWRlKCkgKiAoMSAtIGRlc2NvbnRvIC8gMTAwKTsKICB9CgogIHByb3RlY3RlZCB2b2lkIHNldERlc2NvbnRvKGRvdWJsZSBkZXNjb250bykgewogICAgdGhpcy5kZXNjb250byA9IDA7CiAgfQp9CgpjbGFzcyBCb2xzYU51bGEgZXh0ZW5kcyBCb2xzYSB7CiAgcHVibGljIEJvbHNhTnVsYSgpIHsKICAgIHN1cGVyKDApOwogIH0KCiAgcHVibGljIFN0cmluZyBnZXREYWRvcygpIHsKICAgIHJldHVybiAiIjsKICB9Cn0KCmNsYXNzIEN1cnNvIHsKICBwcml2YXRlIFN0cmluZyBub21lLCBuaXZlbDsKICBwcml2YXRlIGRvdWJsZSBtZW5zYWxpZGFkZTsKCiAgcHVibGljIEN1cnNvKFN0cmluZyBub21lLCBTdHJpbmcgbml2ZWwsIGRvdWJsZSBtZW5zYWxpZGFkZSkgewogICAgdGhpcy5ub21lID0gbm9tZTsKICAgIHRoaXMubml2ZWwgPSBuaXZlbDsKICAgIHRoaXMubWVuc2FsaWRhZGUgPSBtZW5zYWxpZGFkZTsKICB9CgogIHB1YmxpYyBTdHJpbmcgZ2V0RGFkb3MoKSB7CiAgICByZXR1cm4gIkN1cnNvOiAiICsgbml2ZWwgKyAiIGVtICIgKyBub21lICsiXG4iOwogIH0KCiAgcHVibGljIGRvdWJsZSBnZXRNZW5zYWxpZGFkZSgpIHsKICAgIHJldHVybiBtZW5zYWxpZGFkZTsKICB9Cn0KCmNsYXNzIEFsdW5vIHsKICBwcml2YXRlIFN0cmluZyBub21lOwogIHByaXZhdGUgQ3Vyc28gY3Vyc287CiAgcHJpdmF0ZSBCb2xzYSBib2xzYTsKICBwcml2YXRlIGludCBjb2RfbWF0cmljdWxhOwoKICBwdWJsaWMgQWx1bm8oCiAgICBTdHJpbmcgbm9tZSwKICAgIEN1cnNvIGN1cnNvLAogICAgQm9sc2EgYm9sc2EsCiAgICBpbnQgY29kX21hdHJpY3VsYQogICkgewogICAgdGhpcy5ub21lID0gbm9tZTsKICAgIHRoaXMuY3Vyc28gPSBjdXJzbzsKICAgIHRoaXMuYm9sc2EgPSBib2xzYTsKICAgIHRoaXMuY29kX21hdHJpY3VsYSA9IGNvZF9tYXRyaWN1bGE7CiAgfQoKICBwdWJsaWMgU3RyaW5nIGdldERhZG9zKCkgewogICAgcmV0dXJuIGdldE5vbWUoKSArIGN1cnNvLmdldERhZG9zKCkgKyBib2xzYS5nZXREYWRvcygpICsgZ2V0TWVuc2FsaWRhZGUoKTsKICB9CgogIHByaXZhdGUgU3RyaW5nIGdldE5vbWUoKSB7CiAgICByZXR1cm4gIkFsdW5vOiAiKyBub21lICsiXG4iOwogIH0KCiAgcHJpdmF0ZSBTdHJpbmcgZ2V0TWVuc2FsaWRhZGUoKSB7CiAgICByZXR1cm4gIk1lbnNhbGlkYWRlOiBSJCAiICsgYm9sc2EuYXBsaWNhckRlc2NvbnRvKGN1cnNvKTsKICB9Cn0KCmNsYXNzIFRlc3RlIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nIGFyZ3NbXSkgewogICAgQWx1bm8gYTEgPSBuZXcgQWx1bm8oCiAgICAgICJNYXJ0aW4gRm93bGVyIiwKICAgICAgbmV3IEN1cnNvKCJBRFMiLCAiR3JhZHVhw6fDo28iLCA5MjAuNTApLAogICAgICBuZXcgQm9sc2EoMjAuNSksCiAgICAgIDExMjIzMzQ0CiAgICApOwoKICAgIEFsdW5vIGEyID0gbmV3IEFsdW5vKAogICAgICAiS2VudCBCZWNrIiwKICAgICAgbmV3IEN1cnNvKCJDb21wdXRhw6fDo28gQXBsaWNhZGEiLCAiTWVzdHJhZG8iLCAyMTUwLjQ1KSwKICAgICAgbmV3IEJvbHNhTnVsYSgpLAogICAgICAyMjMzNDQ1NQogICAgKTsKCiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYTEuZ2V0RGFkb3MoKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYTIuZ2V0RGFkb3MoKSk7CiAgfQp9