<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Modelagem Pessoa Fisica/Pessoa Juridica"]]></title>
		<link>http://www.guj.com.br/posts/list/19.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Modelagem Pessoa Fisica/Pessoa Juridica"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Estou com uma duvida sobre o modo de Modelar Pessoa - PessoaFisica - PessoaJuridica, eu sei q existe muitos Topicos sobre isso, e li varios, mas ainda nao consegui entender, vai minha duvida:<br /> <br /> Estou modelando um sistema, e tenho os seguintes tipos:<br /> <br /> Cliente, que pode ser PessoaFisica ou Pessoa Juridica<br /> Fornecedor, pode ser somente PessoaJuridica<br /> Funcionario,pode ser somente PessoaFisica<br /> Transportadora, que pode ser PessoaFisica ou Pessoa Juridica<br /> <br /> eu estou pensando em fazer o seguinte<br /> <br /> Criar uma classe abstrata Pessoa, Criar uma Classe PessoaFisica que extende Pessoa e  PessoaJuridica que extende Pessoa<br /> <br /> Agora que complica, como faco a relacao de Cliente, a solução q eu achei seria o seguinte<br /> <br /> Fazer uma composicao , uma Classe Cliente compoe Pessoa e possue um atributo Pessoa, q eu vou instanciar como PessoaFisaca ou juridica, faco o mesmo para Transportadoss, mas não sei se esta certo isso, me parece meio Gambiarra...<br /> <br /> se alguem puder me ajudar a esclaresser esse problema ficaria muito grato....<br /> <br /> Aguardo resposta e a compreencao por eu ter criado um tópico a mais sobre esse assunto, mais é q eu nao estou conseguindo enchergar a solucao...heheheheh<br /> <br /> Obrigado!!!<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499215.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499215.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 08:06:32]]> GMT</pubDate>
				<author><![CDATA[ caloro]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Caloro, após ter criado a classe PessoaFisica, PessoaJuridica, etc...<br /> <br /> Pense bem  <img src="http://www.guj.com.br/images/smilies/2786c5c8e1a8be796fb2f726cca5a0fe.gif" border="0"> , heranca multipla NAO existe no java. Mas isso pode ser contornado com o uso de interfaces !<br /> Com essa dica você resolve o problema do cliente !?<br /> <br /> ---------------------Editado------------------------<br /> <br /> Ah, esqueci de comentar a solução que você propos...<br /> Ao criar uma classe Cliente que possui um atributo do tipo Pessoa, você não está dizendo que Cliente é uma Pessoa..<br /> O enunciado quer que você instancialize um cliente ou como PessoaFisica ou como PessoaJuridida ..<br /> <br /> Att,<br /> Renan]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499228.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499228.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 08:16:26]]> GMT</pubDate>
				<author><![CDATA[ renan_]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Renan, por isso q eu estava achando estranho usar um atributo pessoa. Mas com essa solucao da interface q vc disse, eu teria q criar duas interface: PessoaFisica e Pessoa Juridica, ambas com extend Pessoa(q continua sendo classe abstrata, certo?) e no cliente eu teria alguma coisa assim??<br /> <br /> [code]public class Cliente implements PessoaFisica,PessoaJuridica{<br /> <br /> }[/code]<br /> <br /> seria essa a solucao mais correta de acordo com sua opiniao?, é q eu sou meio novo em java, por isso estou perguntando, heheh....]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499242.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499242.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 08:26:07]]> GMT</pubDate>
				<author><![CDATA[ caloro]]></author>
			</item>
			<item>
				<title>Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Depende caloro.<br /> você pode herdar de uma classe e implementar interfaces ao mesmo tempo..<br /> <br /> Eu sempre vejo o que aproveitará mais código e será de mais utilidade para a situação.<br /> <br /> Faça de uma forma que escreverá menos código, aumente a manutenabilidade, etc etc..<br /> Use e abuse de OO e aproveite dessa caracteristica do java, a interface. <br /> <br /> Isso gera bastante discussão. Há quem diga para se programar voltado à interfaces, outros nao..  Existem vários tópicos sobre isso por aqui.<br /> <br /> Att,<br /> <br /> Renan<br />  ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499261.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499261.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 08:40:07]]> GMT</pubDate>
				<author><![CDATA[ renan_]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ valew Renan, vou pesquisar sobre interface e ver o q é melhor, obrigado mesmo ela ajuda....agora ja sei o caminho da minha solução...heheh]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499282.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499282.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 08:58:58]]> GMT</pubDate>
				<author><![CDATA[ caloro]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Um problema que vejo com o uso de interfaces é que você na consegue fazer um "ou exclusivo" da herança. Assim, o cliente sempre será PessoaFisica E PessoaJuridica. Na modelagem do dominio isso meio que começa conflitante, né? Como explicar pro cliente (do sistema) que o entregador dele é PF e PJ ao mesmo tempo?<br /> <br /> Apesar de mais código ser escrito, nao seria melhor compor uma pessoa fisica ou juridica com as informações das "especializações"? Assim... Como uma Pessoa (fisica ou juridica) pode ser cliente E transportadora, seria interessante que a entidade desse suporte a isso. Caso contrario, eu teria duas pessoas no sistema com uma mesma identificação (CNPJ), o que seria um estado inválido do sistema.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499302.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499302.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 09:17:12]]> GMT</pubDate>
				<author><![CDATA[ nicholas.bittencourt]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Intaum nicholas.bittencourt, qto ao problema do "ou exclusivo", eu li alguma coisa de heranca disjunta, só q eu teria q criar uma classe ClientePessoaFisica e outra ClientePessoaJuridica, e o mesmo para tranportados, assim eu usaria uma "ou" outra, mas assim eu teria uma classe usada as vezes sim as vezes nao, nao sei c seria a solucao mais correta....]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499316.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499316.java</link>
				<pubDate><![CDATA[Fri, 6 Jun 2008 09:23:13]]> GMT</pubDate>
				<author><![CDATA[ caloro]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ A solução depende de mais informações do negócio.<br /> <br /> O estado muda com freqüência (PJ vira PF, depois muda para PJ/PF)? Existem regras específicas e complexas para cada tipo (PF, PJ e PJ/PF)? <br /> <br /> Uma possível solução ([url=http://en.wikipedia.org/wiki/Design_Patterns]GOF[/url]), para não duplicar código, em casos de muitas regras específicas e algumas compartilhadas, seria:<br /> <br /> [img]http://www.sinis.com.br/fig/pfpj.jpg[/img]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/499948.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/499948.java</link>
				<pubDate><![CDATA[Sat, 7 Jun 2008 15:25:31]]> GMT</pubDate>
				<author><![CDATA[ Gustavo Serafim]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ A menos que você vá usar a superclasse Pessoa em alguma chamada polimórfica faça a composição. Herança é sadia quando e criam hierarquias, quando se está apenas reutilizando código pode acabar criando relações esquisitas, especialmente sem herança múltipla.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500267.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500267.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 05:55:48]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ [quote=pcalcado]A menos que você vá usar a superclasse Pessoa em alguma chamada polimórfica faça a composição. Herança é sadia quando e criam hierarquias, quando se está apenas reutilizando código pode acabar criando relações esquisitas, especialmente sem herança múltipla.[/quote]<br /> <br /> Sim, claro, herança apenas como artifício de reuso complica mais que ajuda (trocar herança por composição). <br /> <br /> Dependendo do negócio, que foi pouco explorado neste caso, pode existir uma herança honesta mesmo sem polimorfismo (apenas herdando responsabilidades), eu acredito. <br /> <br /> Estou defendendo na verdade uma maior exploração do negócio.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500303.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500303.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 08:13:57]]> GMT</pubDate>
				<author><![CDATA[ Gustavo Serafim]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Se você não vai ter poliorfismo para quê herança?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500353.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500353.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 09:27:21]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Acho interessante trabalhar com tipos mais abstratos, mesmo sem polimorfismo, no caso de heranças aderentes aos conceitos do negócio. Agrupando responsabilidades comuns. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500783.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500783.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 20:15:00]]> GMT</pubDate>
				<author><![CDATA[ Gustavo Serafim]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Nao entendi. Voce pode ter tipos bem abstratos sem hranca (mesmo com a tipagem estatica meia-boca de Java), tem um exemplo? ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500818.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500818.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 22:31:55]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Eu acho uma entidade "Pessoa" uma abstração muito crua e até mesmo sem sentido para a hierarquia proposta.<br /> Veja no sebrae a seguinte distinção:<br /> <br /> [url=http://www.sebraesp.com.br/principal/abrindo%20seu%20neg%C3%B3cio/orienta%C3%A7%C3%B5es/cria%C3%A7%C3%A3o%20de%20empresas/pessoasf%C3%ADsicajur%C3%ADdica.aspx]O que é pessoa física e pessoa jurídica?[/url]<br /> <br /> Uma Pessoa Jurídica NÃO é da mesma hierarquia NATURAL de pessoa, é uma abstração que vai além disso. Fazer uma hieraquia dessa é gambiarra para aproveitar atributos. Uma pessoa jurídica pode ser uma empresa ou uma associação/companhia e não necessariamente uma Pessoa.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500822.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500822.java</link>
				<pubDate><![CDATA[Mon, 9 Jun 2008 23:07:27]]> GMT</pubDate>
				<author><![CDATA[ Alessandro Lazarotti]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Um exemplo melhor: [b]Cliente[/b]; [b]ClienteCorporativo[/b]; [b]ClientePessoa[/b]; (Uma herança honesta, aderente ao negócio)<br /> <br /> Operação: obterCassificação (calculada em função da data de adesão do cliente e do endereço; data e endereço são atributos de [b]Cliente[/b])<br />  <br /> A implementação desta Operação seria um método na classe mais abstrata. (Não teríamos mais métodos nas outras classes para essa operação, pois o comportamento é idêntico)<br /> <br /> Eu estava considerando este caso como uma herança sem polimorfismo, pois o método para essa operação não será escolhido em tempo de execução (sem polimorfismo, só existe um método para essa Operação)<br /> <br /> OK, talvez conceito de polimorfismo esteja impreciso. Podemos considerar polimorfismo, mesmo com apenas um método para a Operação? ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500845.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500845.java</link>
				<pubDate><![CDATA[Tue, 10 Jun 2008 02:23:14]]> GMT</pubDate>
				<author><![CDATA[ Gustavo Serafim]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ Uma chamada polimórfica é uma chamada que se comporta diferente com o objetivo. Em Java isso quer dizer que se eu mandar a mesma mensagem para diversos objetos eles podem reair de maneira diferente. No sistema de tipos de Java "a mesma mensagem" envolve ter uma classe ou interface em comum.<br /> <br /> Como conversamos via IM, herança sem polimorfismo é possível, por vezes justificável, mas é mais uma limitação que leva a um design ruim. Quandos e tem herança sem chamadas polimórficas significa que o sistema em si não conhece a classe pai, possivelmente esta não faz parte do domínio. A classe pai é usada apenas como unidade de reuso, e isso pode causar problemas porque acaba-se criando uma hierarquia artificial. Nesse caso eu sugiro refatorar o comportamento comum em uma classe e usar coposição.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500849.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500849.java</link>
				<pubDate><![CDATA[Tue, 10 Jun 2008 04:36:42]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re:Modelagem Pessoa Fisica/Pessoa Juridica</title>
				<description><![CDATA[ [editado] ... o que tinha escrito ficou redundante relendo o ultimo post do Shoes.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/93255/500899.java</guid>
				<link>http://www.guj.com.br/posts/preList/93255/500899.java</link>
				<pubDate><![CDATA[Tue, 10 Jun 2008 07:52:57]]> GMT</pubDate>
				<author><![CDATA[ Alessandro Lazarotti]]></author>
			</item>
	</channel>
</rss>