Duvida sobre OO

9 respostas
marcosvidolin

Olá pessoal…

Estou com a seguinte duvida. Tenho as classes chamada Cidade, Viagem, Itinerario e Principal.
A classe Viagem tem Cidades e a classe Itinerario um arraylist tem Viagem.
Como faço para saber o nome da cidade neste caso, se na verdade o arraylist é de Viagens?

Será que fui claro :frowning:

Vlw galera…

9 Respostas

H

Bom…

Acho que você poderia fazer assim…

Um for percorrendo o arrayList de Viagem… e para cada posição desse arrayList, mais um for que percorra as Cidades mostrando os seus nomes…

Valeu!

Naruffy

dentro do objeto viagem tem que ter um método para recuperar a o obejto cidade, ai você pega a cidade

por exemplo:

for(Viagem viagem : itinerario.getViagens()) {
  for(Cidade cidade : viagem.getCidades()) {
     System.out.println(cidade.getNome());
  }
}
celso.martins

marcosvidolin:
Olá pessoal…

Estou com a seguinte duvida. Tenho as classes chamada Cidade, Viagem, Itinerario e Principal.
A classe Viagem tem Cidades e a classe Itinerario um arraylist tem Viagem.
Como faço para saber o nome da cidade neste caso, se na verdade o arraylist é de Viagens?

Será que fui claro :frowning:

Vlw galera…

Não, você não foi claro. Pelo menos para mim =)

Mas vamos ver se eu consegui entender. Você está precisando modelar um roteiro de viagem de alguma coisa (ônibus, avião, carroça, sei lá).

Veja se é mais ou menos isso que você precisa.

EDIT: Você ainda pode acrescentar a sua classe Viagem a este modelo. Esta classe pode ser responsável pelos horários, preços, etc. Esta classe teria um relacionamento por composição com o Itinerário, pois não existe, pelo menos em teoria, uma Viagem sem Itinerario. A classe Veiculo, agregaria Viagem. Acho que existe um nome melhor para a classe Viagem, mas não estou me recordando no momento.

celso.martins

Utilizando a dúvida do nosso amigo, e aproveitando o tópico.

Qual seria a melhor forma, sem violar a Lei de Demeter, de um objeto do tipo Veiculo, responder a pergunta: Por quais cidades você passou (ou passara)? Resumindo, obter o nome das cidades do(s) itinerário(s) do Veiculo.

Implementar um obterNomeCidades() em Veiculo, que fará uma referência a um wrapper (Demeter Transmogrifiers) em Itinerario, que propagará a solicitação do nome da cidade para o objeto de Cidade?

Obrigado.

Abraços!

fantomas

Na minha opinião, não.

Este método deveria estar sob o domínio da entidade itinerario. O GPS, por exemplo; quando queremos saber os detalhes do itinerario perguntamos para ele e não para o carro. Embora alguns carros tenha este dispositivo acoplado no painel a idéia é que vc possa se deslocar com ele mesmo sem estar dentro de um veículo.

P.S Tudo é uma questão de analise e interpretação, logo a minha pode não estar correta.

flws

celso.martins

Acho que entendi onde você quis chegar.

Nesse caso, eu recuperaria a lista de itinerários do Veiculo, criando esta lista, onde está a informação da cidade por onde o Veiculo passará, no local onde ela é necessária (em um Servlet, por exemplo)?

O problema que eu vejo é que o nome da cidade não está no Itinerario, está em um objeto de Cidade. Assim, eu teria que criar mais uma lista, agora de Cidade, para recuperar os nomes desejados.

Acho que não podemos afirmar que nunca precisaremos saber por quais cidades um determinado Veiculo pode passar (já trabalhei com isso. =) ). Por ex: por quais cidades o Veiculo XPTO-0000 vai passar hoje? A minha grande dúvida é de como fazer isso.

Exemplos.
Com a propagação:

// Dessa forma, veiculo delega para cada Itinerario o retorno da List de Cidade.
List<Cidade> listaCidades = veiculo.getCidades();

O que entendi da sua sugestão:

List<Itinerario> listaItinerario = veiculo.getItinerarios();
List<Cidade> listaCidade = new ArrayList<Cidade>();
for (Itinerario itinerario: listaItinerario){
  listaCidade.addAll(itinerario.getCidades());
}

Lembrando que os dois exemplos estariam na mesma classe, por exemplo, um servlet.

Entendi direito a sua sugestão?

Abraços!

EDIT: No mundo real, essa pergunta sobre quais cidades o veiculo vai passar, seria feita para o Motorista (ou outro funcionário) que consultaria uma planilha para responder (esquecendo o GPS, por enquanto).

marcosvidolin

Obrigado pessoal pelas respostas.
vlw abraçao.

fantomas

Oi celso.martins,

A idéia que me veio foi mais ou menos esta mesmo.

O único porem é que eu colocaria a lista de itinerários associada a um objeto preparado para me fornecer alguns serviços a respeito do itinerário, um deles seria esta lista de cidades por onde deveria passar. Desta maneira eu tiro a responsabilidade de montar a lista de cidades (código exemplo que vc descreveu) do objeto cliente.

Um grande abraço.

:slight_smile:

celso.martins

fantomas, obrigado pelas dicas.

Ontem, dei uma olhada nessa e nessa thread.

Tirando as brigas de linguagens (que sempre considero inúteis), existe muito a aprender com essas threads.

Eu já sabia que o meu conhecimento era limitado. Só não sabia que era tanto.

Na primeira thread tem mais uma trilha de livros, de onde pesquei, por enquanto, mais dois. Eu fico impressionado com as datas de publicação dos livros. Por que eu não conheci essas pragas antes? Não credito à falta de formação (faculdade), pois quando conversava sobre a minha fila antiga com pessoal formado (inclusive em UERJs, UFFs e UFRJs da vida) o pessoal não conhecia nem 90%. Das obras que adicionei, ninguém conhecia nenhuma. E o pior de tudo, não acham tão importante assim. Parece que, o que importa é somente a sintaxe da linguagem.

Comentei sobre a Lei de Demeter com um amigo experiente. Fiquei abismado quando percebi que ele nunca nem tinha ouvido falar. Depois de uma breve explicação do pouco que conheço sobre a lei (inclusive com o exemplo do cachorro) ele me disse: Cara, isso tinha que ser ensinado em sala de aula! E eu respondi: No segundo grau!!

Enfim, fumei um maço de cigarros inteiro, bebi algumas cervejas e, no fim, fiquei contente pelo muito que tenho que ler. Só posso tentar discutir OO, depois de terminar de ler (e entender), pelo menos, mais 3 obras da minha fila de livros. E uma das obras tem 1296 páginas. =)

Para quem se interessar, a minha fila está no blog.

Criado 6 de maio de 2009
Ultima resposta 9 de mai. de 2009
Respostas 9
Participantes 5