class Curso {
private double mensalidadeBase;
public Curso
( String nome,
String nivel,
double mensalidadeBase
) { this .nome = nome;
this .nivel = nivel;
this .mensalidadeBase = mensalidadeBase;
}
public double getMensalidadeBase( ) {
return this .mensalidadeBase ;
}
return "Curso: " + this .nivel + " em " + this .nome ;
}
}
class Aluno {
private int codMatricula;
private boolean ehBolsista;
private double percentualDesconto;
private Curso curso;
public Aluno
( String nome,
int codMatricula,
boolean ehBolsista,
double percentualDesconto, Curso curso
) { this .nome = nome;
this .codMatricula = codMatricula;
this .ehBolsista = ehBolsista;
this .percentualDesconto = percentualDesconto;
this .curso = curso;
}
public double calculaMensalidade( ) {
if ( ehBolsista) {
return this .curso .getMensalidadeBase ( ) * ( 1 - this .percentualDesconto / 100 ) ;
}
return this .curso .getMensalidadeBase ( ) ;
}
String resp
= "Aluno: " + this .
nome + "\n " ; resp += this .curso .getDados ( ) + "\n " ;
if ( ehBolsista) {
resp += "Bolsista com desconto de: " + this .percentualDesconto + "%\n " ;
}
resp
+= "Mensalidade: R$ " + String .
format ( "%.2f" ,
this .
calculaMensalidade ( ) ) ; return resp;
}
}
class Teste {
public static void main
( String args
[ ] ) { Curso cursoAds = new Curso( "ADS" , "Graduação" , 920.50 ) ;
Curso cursoMestrado = new Curso( "Computação Aplicada" , "Mestrado" , 2150.45 ) ;
Aluno a1 = new Aluno( "Martin Fowler" , 11223344 , true , 20.5 , cursoAds) ;
Aluno a2 = new Aluno( "Kent Beck" , 22334455 , false , 0 , cursoMestrado) ;
System .
out .
println ( a1.
getDados ( ) ) ; System .
out .
println ( "\n --------------------------------\n " ) ; System .
out .
println ( a2.
getDados ( ) ) ; }
}
Y2xhc3MgQ3Vyc28gewogICAgcHJpdmF0ZSBTdHJpbmcgbm9tZTsKICAgIHByaXZhdGUgU3RyaW5nIG5pdmVsOwogICAgcHJpdmF0ZSBkb3VibGUgbWVuc2FsaWRhZGVCYXNlOwoKICAgIHB1YmxpYyBDdXJzbyhTdHJpbmcgbm9tZSwgU3RyaW5nIG5pdmVsLCBkb3VibGUgbWVuc2FsaWRhZGVCYXNlKSB7CiAgICAgICAgdGhpcy5ub21lID0gbm9tZTsKICAgICAgICB0aGlzLm5pdmVsID0gbml2ZWw7CiAgICAgICAgdGhpcy5tZW5zYWxpZGFkZUJhc2UgPSBtZW5zYWxpZGFkZUJhc2U7CiAgICB9CgogICAgcHVibGljIGRvdWJsZSBnZXRNZW5zYWxpZGFkZUJhc2UoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubWVuc2FsaWRhZGVCYXNlOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGFkb3MoKSB7CiAgICAgICAgcmV0dXJuICJDdXJzbzogIiArIHRoaXMubml2ZWwgKyAiIGVtICIgKyB0aGlzLm5vbWU7CiAgICB9Cn0KCmNsYXNzIEFsdW5vIHsKICAgIHByaXZhdGUgU3RyaW5nIG5vbWU7CiAgICBwcml2YXRlIGludCBjb2RNYXRyaWN1bGE7CiAgICBwcml2YXRlIGJvb2xlYW4gZWhCb2xzaXN0YTsKICAgIHByaXZhdGUgZG91YmxlIHBlcmNlbnR1YWxEZXNjb250bzsKICAgIHByaXZhdGUgQ3Vyc28gY3Vyc287CgogICAgcHVibGljIEFsdW5vKFN0cmluZyBub21lLCBpbnQgY29kTWF0cmljdWxhLCBib29sZWFuIGVoQm9sc2lzdGEsIGRvdWJsZSBwZXJjZW50dWFsRGVzY29udG8sIEN1cnNvIGN1cnNvKSB7CiAgICAgICAgdGhpcy5ub21lID0gbm9tZTsKICAgICAgICB0aGlzLmNvZE1hdHJpY3VsYSA9IGNvZE1hdHJpY3VsYTsKICAgICAgICB0aGlzLmVoQm9sc2lzdGEgPSBlaEJvbHNpc3RhOwogICAgICAgIHRoaXMucGVyY2VudHVhbERlc2NvbnRvID0gcGVyY2VudHVhbERlc2NvbnRvOwogICAgICAgIHRoaXMuY3Vyc28gPSBjdXJzbzsKICAgIH0KCiAgICBwdWJsaWMgZG91YmxlIGNhbGN1bGFNZW5zYWxpZGFkZSgpIHsKICAgICAgICBpZiAoZWhCb2xzaXN0YSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJzby5nZXRNZW5zYWxpZGFkZUJhc2UoKSAqICgxIC0gdGhpcy5wZXJjZW50dWFsRGVzY29udG8gLyAxMDApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5jdXJzby5nZXRNZW5zYWxpZGFkZUJhc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldERhZG9zKCkgewogICAgICAgIFN0cmluZyByZXNwID0gIkFsdW5vOiAiICsgdGhpcy5ub21lICsgIlxuIjsKICAgICAgICByZXNwICs9IHRoaXMuY3Vyc28uZ2V0RGFkb3MoKSArICJcbiI7CiAgICAgICAgaWYgKGVoQm9sc2lzdGEpIHsKICAgICAgICAgICAgcmVzcCArPSAiQm9sc2lzdGEgY29tIGRlc2NvbnRvIGRlOiAiICsgdGhpcy5wZXJjZW50dWFsRGVzY29udG8gKyAiJVxuIjsKICAgICAgICB9CiAgICAgICAgcmVzcCArPSAiTWVuc2FsaWRhZGU6IFIkICIgKyBTdHJpbmcuZm9ybWF0KCIlLjJmIiwgdGhpcy5jYWxjdWxhTWVuc2FsaWRhZGUoKSk7CiAgICAgICAgcmV0dXJuIHJlc3A7CiAgICB9Cn0KCmNsYXNzIFRlc3RlIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKICAgICAgICBDdXJzbyBjdXJzb0FkcyA9IG5ldyBDdXJzbygiQURTIiwgIkdyYWR1YcOnw6NvIiwgOTIwLjUwKTsKICAgICAgICBDdXJzbyBjdXJzb01lc3RyYWRvID0gbmV3IEN1cnNvKCJDb21wdXRhw6fDo28gQXBsaWNhZGEiLCAiTWVzdHJhZG8iLCAyMTUwLjQ1KTsKICAgICAgICBBbHVubyBhMSA9IG5ldyBBbHVubygiTWFydGluIEZvd2xlciIsIDExMjIzMzQ0LCB0cnVlLCAyMC41LCBjdXJzb0Fkcyk7CiAgICAgICAgQWx1bm8gYTIgPSBuZXcgQWx1bm8oIktlbnQgQmVjayIsIDIyMzM0NDU1LCBmYWxzZSwgMCwgY3Vyc29NZXN0cmFkbyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGExLmdldERhZG9zKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGEyLmdldERhZG9zKCkpOwogICAgfQp9Cgo=