reaproveitamento-poo-java

commit ca4808d809f61de78ecba564abf819eb55944fd6

Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>

main: list ITBIs and prices by each real-state unit

 src/org/porcellis/Main.java | 8 ++
 src/org/porcellis/controllers/ImobiliariaController.java | 13 +++
 src/org/porcellis/models/Imobiliaria.java | 37 +++++++++
 src/org/porcellis/models/UnidadePelotas.java | 7 +
 src/org/porcellis/models/UnidadePortoAlegre.java | 7 +
 src/org/porcellis/models/utils/Taxas.java | 3 
 src/org/porcellis/views/ImobiliariaView.java | 21 +++++
 src/org/porcellis/views/ImovelView.java | 2 


diff --git a/src/org/porcellis/Main.java b/src/org/porcellis/Main.java
index ab6fb4facdd5ff6f94b23a3be47a33205b1743fd..1f7b3a0c1537972b81d15f8601739fdd74d2e6a5 100644
--- a/src/org/porcellis/Main.java
+++ b/src/org/porcellis/Main.java
@@ -125,6 +125,14 @@
 		System.out.println("\n\tListar ITBIs dos locais:\n");
 		imovelController.calcularITBI();
 
+		System.out.println("\n\tListar previsao de faturamento das unidades:\n");
+
+		imobiliariaController.exibirPrevisaoFaturamento();
+
+		System.out.println("\n\tListar previsao de ITBI das unidades:\n");
+
+		imobiliariaController.exibirPrevisaoITBI();
+
 		System.out.println("\nXau!");
 	}
 




diff --git a/src/org/porcellis/controllers/ImobiliariaController.java b/src/org/porcellis/controllers/ImobiliariaController.java
index eadb121dfa0d7fb518c4f9469f847831ad56d621..7bc66e3d7c0084adc9b6f4c843fc8720f754098f 100644
--- a/src/org/porcellis/controllers/ImobiliariaController.java
+++ b/src/org/porcellis/controllers/ImobiliariaController.java
@@ -1,6 +1,7 @@
 package org.porcellis.controllers;
 
 import org.porcellis.models.Imobiliaria;
+import org.porcellis.models.Imovel;
 import org.porcellis.views.ImobiliariaView;
 
 import java.util.ArrayList;
@@ -17,6 +18,18 @@ 	}
 
 	public void adicionarImobiliaria(Imobiliaria imobiliaria) {
 		imobiliarias.add(imobiliaria);
+	}
+
+	public void exibirPrevisaoFaturamento() {
+		for (Imobiliaria unidade : imobiliarias) {
+			imobiliariaView.mostrarPrevisaoFaturamento(unidade);
+		}
+	}
+
+	public void exibirPrevisaoITBI() {
+		for (Imobiliaria unidade : imobiliarias) {
+			imobiliariaView.mostrarPrevisaoITBI(unidade);
+		}
 	}
 
 	public void listarImobiliarias() {




diff --git a/src/org/porcellis/models/Imobiliaria.java b/src/org/porcellis/models/Imobiliaria.java
index 306b8002815f312e12a4b303e4d6777ba999f7cc..8c290965ea393d55cef6274f64ac874d0e2418f6 100644
--- a/src/org/porcellis/models/Imobiliaria.java
+++ b/src/org/porcellis/models/Imobiliaria.java
@@ -1,19 +1,54 @@
 package org.porcellis.models;
 
+import java.util.List;
+import java.util.ArrayList;
+
 public class Imobiliaria implements Portfolio {
 	private String razaoSocial;
 	private String cnpj;
 	private double previsaoDeFaturamento;
+
+	private List<Imovel> imoveis;
 
 	public Imobiliaria(String razaoSocial, String cnpj, double previsaoDeFaturamento) {
 		this.razaoSocial = razaoSocial;
 		this.cnpj = cnpj;
 		this.previsaoDeFaturamento = previsaoDeFaturamento;
+		this.imoveis = new ArrayList<Imovel>();
+	}
+
+	public double previsaoITBI() {
+		double previsaoITBI = 0.0;
+
+		return getPrevisaoDeFaturamento() * getITBI();
+	}
+
+	public void adicionaImovel(Imovel imovel) {
+		imoveis.add(imovel);
+
+		recalcularPrevisaoDeFaturamento();
+	}
+
+	public void recalcularPrevisaoDeFaturamento() {
+		double previsaoDeFaturamentoNova = 0.0;
+
+		for (Imovel imovel : imoveis) {
+			previsaoDeFaturamentoNova += imovel.precoFinal();
+		}
+
+		System.out.println("Previsao faturamento: " + previsaoDeFaturamentoNova);
+
+		setPrevisaoDeFaturamento(previsaoDeFaturamentoNova);
+	}
+
+	// XXX: Razão pela qual não gosto/faz sentido escrever código em português
+	public List<Imovel> getImoveis() {
+		return imoveis;
 	}
 
 	@Override
 	public double getITBI() {
-		return previsaoDeFaturamento * 0.02;
+		return 0.0; // XXX: Implementado nas subclasses
 	}
 
 	public String getRazaoSocial() {




diff --git a/src/org/porcellis/models/UnidadePelotas.java b/src/org/porcellis/models/UnidadePelotas.java
index a860bf8375c0807aa1cde7ed085f966ed7667533..60bc53e8d4b0ee9fb67bac92e0234e5dfd7921d4 100644
--- a/src/org/porcellis/models/UnidadePelotas.java
+++ b/src/org/porcellis/models/UnidadePelotas.java
@@ -1,5 +1,7 @@
 package org.porcellis.models;
 
+import org.porcellis.models.utils.Taxas;
+
 public class UnidadePelotas extends Imobiliaria {
 	private double taxaDeComissao;
 
@@ -8,6 +10,11 @@ 			previsaoDeFaturamento, double taxaDeComissao) {
 		super(razaoSocial, cnpj, previsaoDeFaturamento);
 
 		this.taxaDeComissao = taxaDeComissao;
+	}
+
+	@Override
+	public double getITBI() {
+		return Taxas.ITBI_PELOTAS;
 	}
 
 	public double getTaxaDeComissao() {




diff --git a/src/org/porcellis/models/UnidadePortoAlegre.java b/src/org/porcellis/models/UnidadePortoAlegre.java
index 743994082d6a8d8b0d4712974f44ef24c0fbd12a..41f4cee4f32af18f7fedf5517a7162eba59a6531 100644
--- a/src/org/porcellis/models/UnidadePortoAlegre.java
+++ b/src/org/porcellis/models/UnidadePortoAlegre.java
@@ -1,6 +1,6 @@
 package org.porcellis.models;
 
-import org.porcellis.models.Imobiliaria;
+import org.porcellis.models.utils.Taxas;
 
 public class UnidadePortoAlegre extends Imobiliaria {
     private double taxaDeComissao;
@@ -11,6 +11,11 @@         super(razaoSocial, cnpj, previsaoDeFaturamento);
 
         this.taxaDeComissao = taxaDeComissao;
     }
+
+	@Override
+	public double getITBI() {
+		return Taxas.ITBI_PORTO_ALEGRE;
+	}
 
 	public double getTaxaDeComissao() {
 		return taxaDeComissao;




diff --git a/src/org/porcellis/models/utils/Taxas.java b/src/org/porcellis/models/utils/Taxas.java
index 004a8d572d5e9ae2ddf096cb0b0aacf9453ced9e..fc5be895b2fa540aede1d09901133896b58be30b 100644
--- a/src/org/porcellis/models/utils/Taxas.java
+++ b/src/org/porcellis/models/utils/Taxas.java
@@ -3,4 +3,7 @@
 public class Taxas {
 	public static final double ITBI_CASA = 0.03; // 3% de ITBI
 	public static final double ITBI_APARTAMENTO = 0.04; // 4% de ITBI
+
+	public static final double ITBI_PELOTAS = 0.02; // 2% de ITBI
+	public static final double ITBI_PORTO_ALEGRE = 0.025; // 2,5% de ITBI
 }




diff --git a/src/org/porcellis/views/ImobiliariaView.java b/src/org/porcellis/views/ImobiliariaView.java
index 21f4aeb207e9b5a5401622a2f10c3f7f48eb0fea..7b08d7cd49d37859dea83602caf5ef7e3a38e8fe 100644
--- a/src/org/porcellis/views/ImobiliariaView.java
+++ b/src/org/porcellis/views/ImobiliariaView.java
@@ -1,10 +1,31 @@
 package org.porcellis.views;
 
 import org.porcellis.models.Imobiliaria;
+import org.porcellis.utils.Formatador;
 
 public class ImobiliariaView {
 	public void mostrarDetalhesImobiliaria(Imobiliaria imobiliaria) {
 		System.out.println(imobiliaria);
+	}
+
+	public void mostrarPrevisaoFaturamento(Imobiliaria imobiliaria) {
+		System.out.println(
+				String.format(
+					"Previsão de faturamento para %s: %s",
+					imobiliaria.getRazaoSocial(),
+					Formatador.formatarMoeda(imobiliaria.getPrevisaoDeFaturamento())
+				)
+		);
+	}
+
+	public void mostrarPrevisaoITBI(Imobiliaria imobiliaria) {
+		System.out.println(
+				String.format(
+					"Previsão de ITBI para %s: %s",
+					imobiliaria.getRazaoSocial(),
+					Formatador.formatarMoeda(imobiliaria.previsaoITBI())
+				)
+		);
 	}
 }
 




diff --git a/src/org/porcellis/views/ImovelView.java b/src/org/porcellis/views/ImovelView.java
index e89caf111f854370c25aed6951ca44578a5074bd..8dc6e78f273618d3a0dc23e23c9ab43333e168c8 100644
--- a/src/org/porcellis/views/ImovelView.java
+++ b/src/org/porcellis/views/ImovelView.java
@@ -14,7 +14,7 @@ 				String.format(
 					"O ITBI do imóvel %s é: %.2f%n",
 					imovel.getEndereco().getLogradouro(),
 					imovel.getITBI()
-					)
+				)
 		);
 	}
 }