Vamos la
programação orientada a objetos é vc desenhar objetos que representam algo. esse representar é feito pelo estado interno do objeto e o comportamento do mesmo ( os metodos e como estes afetam o estado interno ).
vamos definir um Automovel. Ele usa combustivel. Esse combustivel é armazenado em um tanque. vc tem duas quantidades que o definem sob este aspecto: a quantidade de combustivel atual e a quantidade maxima de combustivel.
Ja vamos entender que existem algumas pre-condições para vc criar um Automóvel:
- vc não pode ter capacidade de combustivel negativa ( - 5 litros ? oi ? )
- vc não pode ter capacidade maxima de combustivel negativa ( mesma coisa )
- o tanque de combustivel do carro não suporta mais combustivel que o maximo ( senão transborda, pega fogo, mata as pessoas, queima uma floresta. etc, é muito errado ).
de cara vc tem duas quantidades: quantidade e capacidade.
qual o tipo da variavel? depende. pode ser inteiro armazenando litros (isso simplifica algumas coisas), pode ser inteiro armazenando mili-litros., pode ser float ( ai vc pode abastecer 1/3 de litro numa boa ).
uma vez que vc definiuo tipo, e o exercicio pede que vc crie um construtor q define a capacidade do tanque ( ou seja, vai começar com tanque vazio ), o seu problema é trivial.
trivial entre aspas. o estado interno do seu objeto é muito importante. eu observaria PRIMEIRO a condição que vc não pode botar mais gasolina do que cabe.
versão simples:
metodo publico vazio abastece( quantidade ):
this.tanque = this.tanque + quantidade
se ( this.tanque > this.capacidade ) {
this.tanque = this.capacidade
}
agora vem o lance de dizer se excedeu ou não. eu pensaria no metodo de abastecer retornando um boolean. ele retorna true se ultrapassou a capacidade do tanque
metodo publico boolean abastece( quantidade ):
this.tanque = this.tanque + quantidade
se ( this.tanque > this.capacidade ) {
this.tanque = this.capacidade
return true
}
return false
assim
excedeu = fusca.abastecer( 99 )
se ( excedeu ) {
imprime("VC ATOCHOU GASOLINA NO POBRE DO CARRO, PRESTA ATENÇAO MEO!!!")
}
agora pense no caso
o loco vc chupou 5 litros de gasolina do fuquinha com uma mangueira! é perigoso!
eu pensaria em exceptions nesses casos. se alguem enfiar um numero negativo vc manda um errao bem loco ( exemplo IllegalArgumentException ), ou ignora. pense nisso se der tempo