You are on page 1of 17

Programação Orientada a Objeto

Anı́sio Silva

Instituto de Engenharia -UFMT

18 de Agosto de 2018

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 1/3
Exemplos:

Exemplo 01:
Dados do aluguel
Modelo do equipamento: Betoneira
Data Inicio (dd/MM/yyyy hh:ss) :15/07/2018 13:20
Data Retorno (dd/MM/yyyy hh:ss) :15/07/2018 17:40
Preço por hora:5.00
Preço por dia: 80.00
Cupom:
Valor total aluguel: 25.00
Taxa: 2.50
Total pago: 27.50

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 2/3
Exemplo 02:

Dados do aluguel
Modelo do equipamento: Betoneira
Data Inicio (dd/MM/yyyy hh:ss) :15/07/2018 13:20
Data Retorno (dd/MM/yyyy hh:ss) :18/07/2018 14:40
Preço por hora:5.00
Preço por dia: 80.00
Cupom:
Valor total aluguel: 320
Taxa: 16.00
Total pago: 336.00

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 3/3
Camada de Domı́nio

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 3/3
Camada de Negócio

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
Equipamento
1 public class Equipamento {
2 private String model ;
3
4 public Equipamento () {
5
6 }
7
8 public Equipamento ( String model ) {
9 this . model = model ;
0 }
1
2 public String getModel () {
3 return model ;
4 }
5
6 public void setModel ( String model ) {
7 this . model = model ;
8 }
9
0
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
1
2 }

Cupom

1 public class Cupom {


2
3 private Double valorAluguel ;
4 private Double taxa ;
5
6 public Cupom () {
7
8 }
9

0 public Cupom ( Double valorAluguel , Double taxa ) {


1 this . valorAluguel = valorAluguel ;
2 this . taxa = taxa ;
3 }
4
5 public Double getValorAluguel () {
6 return valorAluguel ;
7 }
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
8
9 public void setValorAluguel ( Double valorAluguel ) {
0 this . valorAluguel = valorAluguel ;
1 }
2

3 public Double getTaxa () {


4 return taxa ;
5 }
6
7 public void setTaxa ( Double taxa ) {
8 this . taxa = taxa ;
9 }
0
1 public Double getTotalCupom () {
2 return getValorAluguel () + getTaxa () ;
3 }
4

5
6 }

EquipamentoAluguel
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
1 import java . util . Date ;
2
3 /**
4 *
5 * @author anisio
6 */
7 public class E qu ip am en to Al ug ue l {
8 private Date inicio ;
9 private Date termino ;
0 private Equipamento equipamento ;
1 private Cupom cupom ;
2
3
4 public E qu ip am en to Al ug ue l () {
5
6 }
7

8 public E qu ip am en to Al ug ue l ( Date inicio , Date


termino , Equipamento equipamento ) {
9 this . inicio = inicio ;
0 this . termino = termino ;
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
1 this . equipamento = equipamento ;
2 }
3
4 public Date getInicio () {
5 return inicio ;
6 }
7
8 public void setInicio ( Date inicio ) {
9 this . inicio = inicio ;
0 }
1

2 public Date getTermino () {


3 return termino ;
4 }
5
6 public void setTermino ( Date termino ) {
7 this . termino = termino ;
8 }
9
0 public Equipamento getEquipamento () {
1 return equipamento ;
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
2 }
3
4 public void setEquipamento ( Equipamento equipamento
) {
5 this . equipamento = equipamento ;
6 }
7
8 public Cupom getCupom () {
9 return cupom ;
0 }
1

2 public void setCupom ( Cupom cupom ) {


3 this . cupom = cupom ;
4 }
5
6 }

TaxaServico

1 public interface TaxaServico {


2
3 double taxa ( double montante ) ;
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
4
5 }
BrasilTaxaServico
1 public class Br asilTa xaServ ico implements TaxaServico
{
2

3 public double taxa ( double montante ) {


4 if ( montante <= 50) {
5 return montante * 0.1;
6 } else {
7 return montante * 0.05;
8 }
9 }
0
1
2 }
ServicoAluguel
1 import model . entidade . Cupom ;
2 import model . entidade . Equ ip am en to Al ug ue l ;
3
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
4 /**
5 *
6 * @author anisio
7 */
8 public class ServiAluguel {
9 private Double precoHora ;
0 private Double precoDia ;
1
2 private TaxaServico taxaServico ;
3
4 public ServiAluguel ( Double precoHora , Double precoDia ,
TaxaServico taxa ) {
5 this . precoHora = precoHora ;
6 this . precoDia = precoDia ;
7 this . taxaServico = taxa ;
8 }
9

0
1 public void processaCupom ( Equ ip am en to Al ug ue l
equipamneto ) {
2 long ti = equipamneto . getInicio () . getTime () ;
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
3 long tf = equipamneto . getTermino () . getTime () ;
4 double horas = ( double ) ( tf - ti ) /1000 /60 /60;
5
6 double valorAluguel ;
7 if ( horas <=10.0) {
8 valorAluguel = Math . ceil ( horas ) * precoHora ;
9
0 } else {
1 valorAluguel = Math . ceil ( horas /24) * precoDia ;
2 }
3

4 double taxa = taxaServico . taxa ( valorAluguel ) ;


5
6 equipamneto . setCupom ( new Cupom ( valorAluguel , taxa ) ) ;
7 System . out . println ( " Hora : " ) ;
8 System . out . println ( horas ) ;
9

0 }
1
2 }

Programa
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
1 public class A lu g u el E q ui p a me n t os {
2
3 /**
4 * @param args the command line arguments
5 */
6 public static void main ( String [] args ) throws
ParseException {
7 Locale . setDefault ( Locale . US ) ;
8 Scanner sc = new Scanner ( System . in ) ;
9 SimpleDateFormat sdf = new SimpleDateFormat ( " dd / MM /
yyyy HH : mm " ) ;
0
1 System . out . println ( " Dados do aluguel " ) ;
2 System . out . print ( " Modelo do equipamento : " ) ;
3 String modelo = sc . nextLine () ;
4 System . out . print ( " Data Inicio ( dd / MM / yyyy ) : " ) ;
5 Date inicio = sdf . parse ( sc . nextLine () ) ;
6 System . out . print ( " Data Final ( dd / MM / yyyy ) : " ) ;
7 Date termino = sdf . parse ( sc . nextLine () ) ;
8
9 Equipament oA lu gu el ea = new E qui pa me nt oA lu gu el ( inicio ,
Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
termino , new Equipamento ( modelo ) ) ;
0
1 System . out . print ( " Preco por hora : " ) ;
2 double precoHora = sc . nextDouble () ;
3 System . out . print ( " Preco por dia : " ) ;
4 double precoDia = sc . nextDouble () ;
5
6 ServiAluguel servicoAluguel = new ServiAluguel (
precoHora , precoDia , new B rasilT axaSer vico () ) ;
7
8 servicoAluguel . processaCupom ( ea ) ;
9
0
1 System . out . println ( " INVOICE : " ) ;
2 System . out . println ( " Basic payment : " + String . format ( "
%.2 f " , ea . getCupom () . getValorAluguel () ) ) ;
3 System . out . println ( " Tax : " + String . format ( " %.2 f " , ea .
getCupom () . getTaxa () ) ) ;
4 System . out . println ( " Total payment : " + String . format ( "
%.2 f " , ea . getCupom () . getTotalCupom () ) ) ;
5

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3
6 sc . close () ;
7
8 }
9
0 }

Anı́sio Silva (Instituto de Engenharia -UFMT) Programação Orientada a Objeto 18 de Agosto de 2018 4/3

You might also like