Exercicio Caelum - Duvida  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
evil.hunter
Entusiasta Java
[Avatar]

Membro desde: 16/03/2007 10:23:05
Mensagens: 23
Localização: Brasília, DF
Offline

Boa tarde a todos, tenho a seguinte duvida. Eu tenho a classe porta:



Também tenho a classe casa:



Preciso criar um metodo que some e me retorne quantas portas eu tenho abertas...
[WWW] [MSN] [ICQ]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

E qual a dúvida?

Former LIPE.
[ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

[WWW]
themasta
Entusiasta Java
[Avatar]

Membro desde: 21/08/2007 16:38:28
Mensagens: 22
Offline

seria interessante que você guardasse as portas da casa num array de portas.


no método de contar portas abertas você recebe o array de portas

rmarin
JavaEvangelist
[Avatar]

Membro desde: 13/07/2005 09:14:45
Mensagens: 360
Localização: São Paulo
Offline

Este objeto Casa deveria possuir uma lista de portas, não?



Ou ainda melhor:



Deste modo seria muito mais fácil efetuar a iteração sobre os elementos da casa, sejam portas ou janelas. Além disso, a quantidade de elementos não é fixa, podemos ter n portas...



Roberto Marin
__________________________________________
Odeio auto-nerds!
[WWW]
evil.hunter
Entusiasta Java
[Avatar]

Membro desde: 16/03/2007 10:23:05
Mensagens: 23
Localização: Brasília, DF
Offline

O problema é o seguintes, estou seguindo a apostila da caelum. Nesta parte que estou ainda não me foi apresentado array's. Então eu pensei que não é pra utilizar. So que nao vi uma maneira de fazer isso sem utilizar array...
[WWW] [MSN] [ICQ]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Tudo bem, os arrays não são necessários nesse problema. O pessoal só usou array para ficar mais facil de aumentar a casa depois (mania de programador Java ).

Pense na sua casa... o que você faria para verificar quantas portas estão abertas? Olharia uma por uma, se está aberta você conta, se está fechada não conta. É mais ou menos isso.
dmarcosm
JavaTeenager

Membro desde: 27/03/2006 10:07:05
Mensagens: 177
Localização: Goiânia/GO
Offline

Ora... se você sabe que a casa tem 3 portas fixas, por quê precisa de um array ou list?!



=]

This message was edited 1 time. Last update was at 25/09/2007 16:19:42


Diego Miranda
Analista\Desenvolvedor

"If history is to change, let it change. If the world is to be destroyed, so be it. If my fate is to die, I must simply laugh!" - Magus
rmarin
JavaEvangelist
[Avatar]

Membro desde: 13/07/2005 09:14:45
Mensagens: 360
Localização: São Paulo
Offline

dmarcosm wrote:Ora... se você sabe que a casa tem 3 portas fixas, por quê precisa de um array ou list?!



=]


Uau , ainda bem que não são 1000 portas, né dmarcosm?

Já pensou?

Roberto Marin
__________________________________________
Odeio auto-nerds!
[WWW]
Adolfo Rodrigues
Java Ninja
[Avatar]

Membro desde: 18/04/2007 20:02:52
Mensagens: 270
Localização: Sampa
Offline

Já aprendeu reflexão? Se sim, poderia pegar todas as Portas da sua Casa e ver se elas estão abertas. É bom que se tiver 1 ou 1000 Portas o seu código vai ser o mesmo (não vai precisar daqueles 1000 ctrl c + ctrl v)

http://www.adolfosousa.com.br/blog
[WWW] [MSN]
evil.hunter
Entusiasta Java
[Avatar]

Membro desde: 16/03/2007 10:23:05
Mensagens: 23
Localização: Brasília, DF
Offline

Adolfo infelizmente ainda não aprendi reflexão ainda. Rmarin eu vi o que estava fazendo errado, eu tinha feito código idêntico ao que você fez só que não tinha colocado o this. Por isso não estava dando certo. Alias muito obrigado a todos pelas respostas...



[WWW] [MSN] [ICQ]
neohacker
Virtual Machine Man
[Avatar]

Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline

Cara usa a solução do Thingol .... já usou Varargs ??
É bem simples e fácil ....
e outra parte que você poderia mexer e ficar melhor de entender.




http//www.tecnologiaims.blogspot.com

↑ Grab this Headline Animator

http://www.imstechnology.blogspot.com
[Email] [WWW]
rmarin
JavaEvangelist
[Avatar]

Membro desde: 13/07/2005 09:14:45
Mensagens: 360
Localização: São Paulo
Offline

evil.hunter wrote:Adolfo infelizmente ainda não aprendi reflexão ainda. Rmarin eu vi o que estava fazendo errado, eu tinha feito código idêntico ao que você fez só que não tinha colocado o this. Por isso não estava dando certo. Alias muito obrigado a todos pelas respostas...






Cara, a minha sugestão foi exatamente para você não usar isso. Imagine, toda vez que uma casa ganhar uma nova porta você terá que colocar um novo if nesse código, isso não é legal.

Usar reflection na camada de negócios para capturar o tipo dos atributos, perguntar se é uma porta e aí sim verificar se ela está aberta, é uma solução. Porém não acho que seja a melhor saída. Reflection deve ser utilizada somente em casos em que haja realmente necessidade, ou seja, dificilmente você usa reflection na camada de negócios. Geralmente em classes de infra-estrutura, ou coisas do gênero.


Agora com relação a solução do varargs, também é uma saída, entretanto, caso a casa ganhe novas portas, além de termos que inserir novos atributos Porta a classe, teremos que colocar um novo argumento para o método contaPortasAbertas (Porta portas...).

--

Uma casa tem N portas, a não ser que seja uma casa específica, ou seja, CasaDaTiaAvóDoMarquinhos, fora isso, a melhor solução é trabalhar com uma lista. Daí você pode ter o addPorta(Porta porta), e aí sim sua casa vai poder ter quantas portas você quiser, e poderá ser a CasaDaTiaAvóDoMarquinos, CasaDoPaiDoZezão, CasaDosInferno...



Roberto Marin
__________________________________________
Odeio auto-nerds!
[WWW]
Calzetta
HelloWorld
[Avatar]

Membro desde: 03/08/2004 10:47:47
Mensagens: 11
Localização: São Paulo - SP
Offline

rmarin wrote:
evil.hunter wrote:Adolfo infelizmente ainda não aprendi reflexão ainda. Rmarin eu vi o que estava fazendo errado, eu tinha feito código idêntico ao que você fez só que não tinha colocado o this. Por isso não estava dando certo. Alias muito obrigado a todos pelas respostas...






Cara, a minha sugestão foi exatamente para você não usar isso. Imagine, toda vez que uma casa ganhar uma nova porta você terá que colocar um novo if nesse código, isso não é legal.

Usar reflection na camada de negócios para capturar o tipo dos atributos, perguntar se é uma porta e aí sim verificar se ela está aberta, é uma solução. Porém não acho que seja a melhor saída. Reflection deve ser utilizada somente em casos em que haja realmente necessidade, ou seja, dificilmente você usa reflection na camada de negócios. Geralmente em classes de infra-estrutura, ou coisas do gênero.


Agora com relação a solução do varargs, também é uma saída, entretanto, caso a casa ganhe novas portas, além de termos que inserir novos atributos Porta a classe, teremos que colocar um novo argumento para o método contaPortasAbertas (Porta portas...).

--

Uma casa tem N portas, a não ser que seja uma casa específica, ou seja, CasaDaTiaAvóDoMarquinhos, fora isso, a melhor solução é trabalhar com uma lista. Daí você pode ter o addPorta(Porta porta), e aí sim sua casa vai poder ter quantas portas você quiser, e poderá ser a CasaDaTiaAvóDoMarquinos, CasaDoPaiDoZezão, CasaDosInferno...




rmarin, não se esqueça que ele está aprendendo a apotila da Caelum ainda.

Quem sabe de verdade é quem sabe explicar.
Calzetta
HelloWorld
[Avatar]

Membro desde: 03/08/2004 10:47:47
Mensagens: 11
Localização: São Paulo - SP
Offline

evil.hunter,

Use a solução abaixo neste momento, as apostilas da Caelum são muito boas e elas têm um objetivo pedagógio, não pule etapas.

Faça do jeito abaixo para vc manjar de lógica e atributos de classe, mais para frente vc aprenderá os modos corretos.

Siga a apostila.

evil.hunter wrote:Adolfo infelizmente ainda não aprendi reflexão ainda. Rmarin eu vi o que estava fazendo errado, eu tinha feito código idêntico ao que você fez só que não tinha colocado o this. Por isso não estava dando certo. Alias muito obrigado a todos pelas respostas...




Quem sabe de verdade é quem sabe explicar.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team