-
-
Save victorknust/9790699 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package emporium; | |
// Esta classe modela o caixa do "emporium". Ela deve receber o nome do | |
// cliente e a lista de produtos (conteúdo do "carrinho"). | |
public class Caixa | |
{ | |
// atributos: variáveis que armazenam os dados de um objeto, após este | |
// ser instanciado. | |
private Cliente cliente; | |
private Carrinho carrinho; | |
// método construtor: usado para inicializar os atributos, | |
// quando um objeto cliente é criado (instanciado). Notar que o construtor | |
// faz chamada interna de dois métodos modificadores. | |
public Caixa(String nomeCliente, String cpfCliente, Carrinho novoCarrinho) | |
{ | |
cliente = new Cliente(nomeCliente, cpfCliente); | |
carrinho = novoCarrinho; | |
} | |
// outros métodos | |
/* | |
* O método abaixo imprime os dados do cliente e a lista de | |
* compras (conteúdo do "carrinho"). O nome do cliente (retornado pelo | |
* método getNome() ) e a lista de produtos comprados pelo cliente | |
* (retornados pelo método listaDeProdutos() ) são concatenados em uma | |
* String. Em seguida, o conteúdo da String é impresso. | |
*/ | |
public String dadosDaCompra() | |
{ | |
String saida = ""; | |
saida += "Cliente: " + cliente.getNome() + "\n\n" + | |
"******** Lista de compras ********** \n\n" + | |
carrinho.listaDeProdutos(); | |
return saida; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package emporium; | |
import java.util.ArrayList; | |
import java.util.Iterator; | |
//import javax.swing.JOptionPane; | |
import java.text.DecimalFormat; | |
public class Carrinho { | |
private ArrayList produtosEscolhidos; | |
private double peso = 0.0; | |
private double totalPagar = 0.0; | |
private double desconto = 0.0; | |
public Carrinho() { | |
produtosEscolhidos = new ArrayList(); | |
} | |
public void colocarProdutoNoCarrinho(String nomeProduto, double precoProduto, double quantidadeProduto) { | |
Produto novoProduto = new Produto(nomeProduto, precoProduto, quantidadeProduto); | |
produtosEscolhidos.add( novoProduto ); | |
this.peso += quantidadeProduto; | |
this.totalPagar += novoProduto.getPrecoTotal(); | |
if ( isPesoGreather50() ) { | |
double desconto = this.getPercentage( this.totalPagar, 12 ); | |
this.totalPagar = this.totalPagar - desconto; | |
this.desconto = desconto; | |
} | |
} | |
public String listaDeProdutos() { | |
Iterator achaProdutoNaLista = produtosEscolhidos.iterator(); | |
String saida = ""; | |
Produto prod; | |
while( achaProdutoNaLista.hasNext() ) { | |
prod = (Produto) achaProdutoNaLista.next(); // Aqui casting! | |
saida += prod.getGastoComProduto(); | |
} | |
saida += "\n\nPeso total: " + this.peso + " kg"; | |
saida += "\n\nDesconto total: R$ " + this.desconto; | |
saida += "\n\nPreço total: R$ " + this.totalPagar; | |
return saida; | |
} | |
public double getPeso(){ | |
return this.peso; | |
} | |
public Boolean isPesoGreather50(){ | |
/* | |
** Verifica se o peso total do carrinho é maior que 50 kg | |
*/ | |
if ( this.peso > 50 ) { | |
return true; | |
} else { | |
return false; | |
} | |
} | |
public double getPercentage( double total, int percentage ){ | |
/* | |
** Calcula o valor a partir de um total e uma porcentagem | |
*/ | |
double processedValue = ( total * percentage ) / 100; | |
return processedValue; | |
} | |
public String printProduto( int indexProduto ){ | |
String output; | |
if ( indexProduto > (produtosEscolhidos.size()-1) ) { | |
output = getOutOfIndexMessage(); | |
} else { | |
Produto item = (Produto) this.produtosEscolhidos.get( indexProduto ); | |
output = item.getGastoComProduto(); | |
} | |
return output; | |
} | |
public String getOutOfIndexMessage(){ | |
return "Não existe produto nesta posição"; | |
} | |
public Boolean removerProduto( String nomeProduto ){ | |
for ( int i = 0 ; i < produtosEscolhidos.size() ; i++ ) { | |
Produto produto = (Produto) produtosEscolhidos.get( i ); | |
if ( produto.getNome().equals( nomeProduto ) ) { | |
produtosEscolhidos.remove( i ); | |
return true; | |
} | |
} | |
return false; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Esta classe modela o cliente que irá fazer compras no "emporium". | |
package emporium; | |
public class Cliente | |
{ | |
// atributos: armazenam os dados de um objeto, após este ser instanciado. | |
private String nome; | |
private String cpf; | |
// método construtor: usado para inicializar os atributos, | |
// quando um objeto cliente é criado (instanciado). Notar que o construtor | |
// faz chamada interna de dois métodos modificadores. | |
public Cliente(String nome, String cpf) | |
{ | |
this.nome = nome; | |
this.cpf = cpf; | |
} | |
// métodos de acesso: usados para retornar o valor de um atributo. | |
public String getNome() | |
{ | |
return nome; | |
} | |
public String getCpf(){ | |
return this.cpf; | |
} | |
// métodos modificadores: usados para alterar o valor de um atributo, | |
// depois que o objeto foi criado (instanciado). | |
public void setNome(String novoNome) | |
{ | |
nome = novoNome; | |
} | |
public void setCpf( String newCpf ){ | |
this.cpf = newCpf; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package emporium; | |
import javax.swing.*; | |
public class Main { | |
public static void main( String args[] ) { | |
Carrinho carrinho = new Carrinho(); | |
Caixa caixa; | |
String nomeCliente; | |
String cpfCliente; | |
// preenche o carrinho | |
for( int i = 0; i < 2; i++ ) { | |
// INPUT | |
String nomeProduto = JOptionPane.showInputDialog( | |
"Escreva o nome do produto." | |
); | |
double precoProduto = Double.parseDouble( | |
JOptionPane.showInputDialog( | |
"Escreva o preço unitário do produto." | |
) | |
); | |
double quantidadeProduto = Double.parseDouble( | |
JOptionPane.showInputDialog( | |
"Escreva a quantidade (kg) de produto." | |
) | |
); | |
// adiciona 1 produto | |
carrinho.colocarProdutoNoCarrinho( nomeProduto, precoProduto, quantidadeProduto ); | |
} | |
nomeCliente = JOptionPane.showInputDialog( | |
"Escreva o nome do cliente." | |
); | |
cpfCliente = JOptionPane.showInputDialog( | |
"Escreva o cpf do cliente." | |
); | |
caixa = new Caixa( nomeCliente, cpfCliente, carrinho ); | |
// exibe o resultado da compra e o valor a pagar. | |
JOptionPane.showMessageDialog( null, caixa.dadosDaCompra(), | |
"Resultado da Compra", 1 | |
); | |
System.out.print( carrinho.removerProduto( "leite" ) + "\n\n" + carrinho.printProduto( 0 ) ); | |
System.exit(0); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package emporium; | |
// Esta classe modela um produto a ser comprado no "emporium". | |
import java.text.DecimalFormat; | |
public class Produto | |
{ | |
// atributos: variáveis que armazenam os dados de um objeto, após este | |
// ser instanciado. | |
private String nome; | |
private double precoUnitario; // em reais | |
private double quantidade; // em quilogramas | |
private double precoTotal; | |
// método construtor: usado para inicializar os atributos, | |
// quando um objeto cliente é criado (instanciado). Notar que o construtor | |
// faz chamada interna de dois métodos modificadores. | |
public Produto(String nome, double precoUnitario, double quantidade) | |
{ | |
this.nome = nome; | |
this.precoUnitario = precoUnitario; | |
this.quantidade = quantidade; | |
this.precoTotal = precoUnitario * quantidade; | |
} | |
// métodos de acesso: usados para retornar o valor de um atributo. | |
public String getNome() | |
{ | |
return nome; | |
} | |
public double getPrecoUnitario() | |
{ | |
return precoUnitario; | |
} | |
public double getPrecoTotal(){ | |
return this.precoTotal; | |
} | |
public double getQuantidade() | |
{ | |
return quantidade; | |
} | |
// métodos modificadores: usados para alterar o valor de um atributo, | |
// depois que o objeto foi criado (instanciado). | |
public void setNome(String novoNome) | |
{ | |
nome = novoNome; | |
} | |
public void setPrecoUnitario(double novoPreco) | |
{ | |
if(novoPreco <= 0) | |
{ | |
precoUnitario = 1.0; | |
} | |
else | |
{ | |
precoUnitario = novoPreco; | |
} | |
} | |
public void setQuantidade(double novaQuantidade) | |
{ | |
if(quantidade < 0) | |
{ | |
quantidade = 1.0; | |
} | |
else | |
{ | |
quantidade = novaQuantidade; | |
} | |
} | |
// outros métodos | |
// O método abaixo retorna uma String, que contém os valores dos | |
// atributos do objeto, mais a quantidade vezes o preço unitário. | |
public String getGastoComProduto() | |
{ | |
DecimalFormat duas = new DecimalFormat("0.00"); | |
return "Produto: " + nome + " " + | |
"Preço Unitário: R$ " + duas.format(precoUnitario) + " / kg " + | |
"Quantidade: " + duas.format(quantidade) + " kg " + | |
"Total: R$ " + duas.format(quantidade*precoUnitario) + "\n"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment