<repo_name>william-marquetti/Exercicios_Java_Orientacao_Objeto3<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicios2/ComparacaoImpl.java
package exercicios2;

import java.util.List;

public class ComparacaoImpl implements IComparacao{

	@Override
	public void buscaProdutoNomeCodBarras(List<Produto> vetorProdutos, String produtoPesquisado) {
		int tamanhoVetor = vetorProdutos.size();
		int posicao = 0;
		boolean encontrado = false;
		
		System.out.println("\n---------------------------------------");
		System.out.println("Comparador de Produtos");
		System.out.println("---------------------------------------");
		for (Produto produtos : vetorProdutos) {
			posicao++; 
			if ( (produtos.getNome().equals(produtoPesquisado) || produtos.getCodigoBarras().equals(produtoPesquisado))){
				System.out.println("\nProduto encontrado. Posição: "+ (posicao-1));
				System.out.println("---------------------------------------");
				System.out.println(produtos.toString());
				encontrado = true;

			}else if ( (posicao == tamanhoVetor) && !encontrado) {
				
				System.out.println("Produto não encontrado");
			
			}
			
			
		}
	}

}
<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicio1/Conta_Corrente.java
package exercicio1;

import java.text.DecimalFormat;

public class Conta_Corrente {
	
	DecimalFormat df = new DecimalFormat("#0.00");
	
	private String numero;
	private String agencia;
	private String cliente;
	private String banco;
	private double saldo;
	
	public Conta_Corrente(String numero, String agencia, String cliente, String banco, double saldo){
		this.numero = numero;
		this.agencia = agencia;
		this.cliente = cliente;
		this.banco = banco;
		this.saldo = saldo;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getAgencia() {
		return agencia;
	}

	public void setAgencia(String agencia) {
		this.agencia = agencia;
	}

	public String getCliente() {
		return cliente;
	}

	public void setCliente(String cliente) {
		this.cliente = cliente;
	}

	public String getBanco() {
		return banco;
	}

	public void setBanco(String banco) {
		this.banco = banco;
	}

	public double getSaldo() {
		return saldo;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}

	
	public void sacar(double valor){
		this.saldo = saldo - (valor + (valor * 0.005));
	}
	
	public void depositar(double valor){
		this.saldo = saldo +valor;
	}
	
	public void extrato(){
		String extrato;
		extrato = "\nCliente: "+ this.getCliente();
		extrato += "\nBanco: "+ this.getBanco();
		extrato += "\nConta: "+ this.getNumero() + " Agência: "+ this.getAgencia();
		extrato += "\nSaldo: R$"+ df.format(this.getSaldo());
		System.out.println(extrato);
	}
	
}
<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicios2/IComparacao.java
package exercicios2;

import java.util.List;

public interface IComparacao {

	/**
	 *  Método criado para realizar pesquisa de produtos pelo nome.
	 *  
	 *  Foi utilizado como "static" porque a classe loja não é uma classe de objeto,
	 *  portanto ela não pode ser instanciada.
	 *  Ao definir o método como "static", o método passa a existir sem ter a necessidade
	 *  de instaciar um objeto da classe. 
	 *  Esta é a única maneira de acessar um método de uma classe que não pode ser 
	 *  instaciada.
	 *  
	 * @param vetorProdutos é a lista de produtos (ArrayList)
	 * @param produtoPesquisado é o termo (item, nome, etc) pesquisado (String)
	 * 
	 * O método buscaProduto, realizará buscas na lista (ArrayList) de produtos,
	 * retornando as informações do produto, se encontrado.
	 * A pesaquisa é feita através do método "equals()", onde o termo pesquisado
	 * só retornará os dados nos casos em que o nome seja EXATAMENTE igual ao termo da 
	 * pesquisa.
	 */
	public abstract  void buscaProdutoNomeCodBarras(List<Produto> vetorProdutos, String produtoPesquisado);
}
<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicio1/Teste.java
package exercicio1;

public class Teste {

	public static void main(String[] args) {
		
		Cliente_Especial cc2 = new Cliente_Especial("1515", "1221", "Andiara", "Banco do Brasil", 1500d);
		Conta_Corrente cc1 = new Conta_Corrente("0021212", "1313", "William", "Caixa", 1500d);
		
		cc1.extrato();
		cc2.extrato();
		
		cc1.sacar(100);
		cc2.sacar(100);
		
		cc1.extrato();
		cc2.extrato();
		
	}
}
<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicios3/Retangulo.java
package exercicios3;

import java.text.DecimalFormat;

public class Retangulo extends Formas {
	
	DecimalFormat df = new DecimalFormat("#0.00");

	private double base;
	private double altura;
	
	public Retangulo(){
		
	}
	
	public Retangulo(double altura, double base) {
		setBase(base);
		setAltura(altura);
		calculaArea();
		calculaPerimetro();
	}
		
	public double getBase() {
		return base;
	}

	public void setBase(double base) {
		this.base = base;
	}

	public double getAltura() {
		return altura;
	}

	public void setAltura(double altura) {
		this.altura = altura;
	}

	@Override
	public void calculaPerimetro() {
		
		setPerimetro( (( base * 2 ) + ( altura * 2 )) );
		
	}
	
	@Override
	public void calculaArea() {
		
		setArea( (base * altura) );
	}
	
	@Override
	public String toString() {
		String dados;
		dados = "\n-------------------------";
		dados += "\nRetângulo:";
		dados += "\n-------------------------";
		dados += "\nAltura: "+ df.format(this.getAltura());
		dados += "\nBase: "+ df.format(this.getBase());
		dados += "\nÁrea: "+ df.format(this.getArea())+ " cm";
		dados += "\nPerímetro: "+ df.format(this.getPerimetro())+ " cm";
		return dados;
	}
}
<file_sep>/Exercicios_Java_Orientacao_Objeto3/src/exercicios2/Loja.java
package exercicios2;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Loja {
	
	public static void main(String[] args) {
		
		//Vector<Produto> produtos = new Vector<Produto>();
		
		List<Produto> produtos = new ArrayList<>();
		
		produtos.add(new CD("Nirvana - Bleach", 25.99d, 16, "01212689"));
		produtos.add(new CD("Raimundos - Lavô Tá Novo", 15.99d, 12, "01288989"));
		produtos.add(new CD("Raimundos - Lavô Tá Novo", 15.99d, 12, "01288989"));
		produtos.add(new CD("Raimundos - Lavô Tá Novo", 15.99d, 12, "555877888"));
		
		produtos.add(new DVD("Guia do Mochileiro das Galáxias", 59.9d, 180, "1478787"));
		produtos.add(new DVD("Contatos de 4º Grau", 65.9d, 130, "8998914"));
		
		produtos.add(new Livro("Como trabalhar para um idiota", "<NAME>", 36.85d, "14548777"));
		produtos.add(new Livro("Guia do Mochileiro das Galáxias - Volume 1", "<NAME>", 24.75d, "59595984"));
		produtos.add(new Livro("CADE", "<NAME>", 24.75d, "59595984"));
		
		DVD dvd1 = new DVD("Guia do Mochileiro das Galáxias", 59.9d, 180, "1478787");
		
		CD cd1 = new CD("Foo Fighters", 30.99, 15, "010106646");
		

		// pesquisando um produto utilizando um objeto como parâmetro
		//buscaProduto(produtos, dvd1);
		
//		System.err.println(produtos.get(1).equals(produtos.get(3)));
//		System.err.println(produtos.get(1).equals(produtos.get(2)));
		
		ComparacaoImpl  comparador = new ComparacaoImpl();
		
		//comparador.buscaProdutoNomeCodBarras(produtos, "Cota");
	
		for (Produto produto : produtos) {
			System.out.println(produto.toString());

		}
		
		Collections.sort(produtos);
		
		for (Produto produto : produtos) {
			System.err.println(produto.toString());

		}

	}
	
	
	public static void buscaProduto(List<Produto> vetorProdutos, Produto produtoPesquisado){
		
		int tamanhoVetor = vetorProdutos.size();
		int posicao = 0;
		boolean encontrado = false;
				
		for (Produto produtos : vetorProdutos) {
			posicao++; 
			if ( produtos.equals(produtoPesquisado) ){
				System.out.println("\nProduto encontrado. Posição: "+ (posicao-1));
				System.out.println("---------------------------------------");
				System.out.println(produtos.toString());
				encontrado = true;

			}else if ( (posicao == tamanhoVetor) && !encontrado) {
				
				System.out.println("Produto não encontrado");
			
			}
			
			
		}
	}

}
