Perguntas sobre MVC Desktop! Existe solução? (+ MVP,MVC WEB,Observer e Exception's)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

ATENÇÃO NOVO VISITANTE: Se a sua intenção é ajudar respondendo perguntas e não ficar confuso entre tantas perguntas e respostas no tópico, recomendo que inicie sua leitura a partir da data de 23/10/2009 (que está dos 160 posts para frente, página 11). Porém se a sua intenção é aprender, recomendo uma leitura cuidadosa de todo o tópico e dos outros já postados anteriormente aqui no GUJ. O tópico está grande justamente para que eu não fique abrindo tópicos novos a cada pergunta relacionada ao MVC. Quem quiser aproveitar o embalo do tópico (já que este está sendo acompanhando por uma boa galera) e postar perguntas novas RELACIONADAS AO MVC, fiquem avontade. Felicidades a todos! (27/10/2009)

QUERO AGRADECER: A todos que estão colaborando, mesmo com o tópico gigante estão acompanhando, mandando ajuda pelo MP (Mensagens Privadas, além que acho, na minha opinião, que as respostas devem ser postadas para todos) e os novos visitantes que também estão ajudando muito. Como disse desde o início sou um aprendiz em JAVA e se não fosse o GUJ para proporcionar essa rede maravilhosa com certeza para mim seria muito ruim aprender alguma coisa. Realmente não tenho palavras para agradecer. Muito Obrigado! (13/07/2009)

QUERO ME DESCULPAR: Pela minha ausência ao fórum durante quase três meses (de início de Novembro até inicio de Fevereiro). Infelizmente passei por alguns problemas pessoais aos quais, graças a Deus, estou são e salvo. Foram os piores meses que passei longe das principais coisas que mais gosto na vida, mas não vou ficar aqui lamentando aos companheiros! Bola para frente. (21/03/2010)

OUTROS TÓPICOS AUXILIARES: Companheiros para ajudar ainda mais os usuários da comunidade vou relacionando outros tópicos encontrados durante as minhas pesquisas aqui dentro do GUJ com o assunto sobre MVC que trazem mais conteúdo a quem está aprendendo sobre o assunto. Espero que esses também possam colaborar com todos! Obrigado. (27/10/2009)

http://www.guj.com.br/posts/list/798.java - http://www.guj.com.br/posts/list/842.java -
http://www.guj.com.br/posts/list/1042.java - http://www.guj.com.br/posts/list/1176.java
http://www.guj.com.br/posts/list/1241.java - http://www.guj.com.br/posts/list/1278.java
http://www.guj.com.br/posts/list/10233.java - http://www.guj.com.br/posts/list/11147.java
http://www.guj.com.br/posts/list/16118.java - http://www.guj.com.br/posts/list/39725.java
http://www.guj.com.br/posts/list/60970.java - http://www.guj.com.br/posts/list/111072.java
http://www.guj.com.br/posts/list/113965.java - http://www.guj.com.br/posts/list/121777.java
http://www.guj.com.br/posts/list/121835.java - http://www.guj.com.br/posts/list/123397.java
http://www.guj.com.br/posts/list/123716.java - http://www.guj.com.br/posts/list/124530.java
http://www.guj.com.br/posts/list/124632.java - http://www.guj.com.br/posts/list/124887.java
http://www.guj.com.br/posts/list/124921.java - http://www.guj.com.br/posts/list/125045.java
http://www.guj.com.br/posts/list/125258.java - http://www.guj.com.br/posts/list/128080.java
http://www.guj.com.br/posts/list/128303.java - http://www.guj.com.br/posts/list/132839.java
http://www.guj.com.br/posts/list/132965.java - http://www.guj.com.br/posts/list/133175.java
http://www.guj.com.br/posts/list/134339.java - http://www.guj.com.br/posts/list/134345.java
http://www.guj.com.br/posts/list/134511.java - http://www.guj.com.br/posts/list/134678.java
http://www.guj.com.br/posts/list/134686.java - http://www.guj.com.br/posts/list/136825.java
http://www.guj.com.br/posts/list/140378.java - http://www.guj.com.br/posts/list/140788.java
http://www.guj.com.br/posts/list/141200.java - http://www.guj.com.br/posts/list/141376.java
http://www.guj.com.br/posts/list/141479.java - http://www.guj.com.br/posts/list/141545.java

OBS: Os tópicos antigos sobre MVC não serão mais "ressucitados" atendendo a um pedido da administração do fórum. (21/03/2010)
-------------

Muito simples: A visão pode alterar o modelo sem passar pelo controle, eu pergunto, direto? Ou o modelo para a visão é só reenderização
Obrigado companheiros da programação

This message was edited 29 times. Last update was at 24/04/2010 21:39:01

markin1
JavaEvangelist

Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline

a camada view serve somente para visualização se você manipular algo la dentro acredito que esteja saindo do padrão MVC.

Mas isso é puro achismo meu

Quem é o juíz?
[Email]
rodrigo.ferreira
JavaGuru
[Avatar]

Membro desde: 28/08/2008 20:38:07
Mensagens: 200
Offline

Boa noite.


Não...

A visão "chama" o controle que atualiza o modelo... quando o modelo responder, o controle atualiza a visão... a "ponte" é o controle... ele deve fazer a transformação dos dados de uma camada para a outra... visão é só pra visualização e nada mais... assim você desacopla a lógica de negócios da lógica de visualização...


Abraço,

This message was edited 1 time. Last update was at 09/06/2009 19:07:14


Rodrigo Lopes Ferreira
Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5
Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP
Pós Graduando em Desenvolvimento de Sistemas em Software Livre - Universidade Católica de Brasília
[MSN]
markin1
JavaEvangelist

Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline

/spam on

"Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP"
Mesmo curso que eu to fazendo ;x termino daqui 2 semanas *-*

/spam off

Quem é o juíz?
[Email]
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

markin1 wrote:/spam on

"Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP"
Mesmo curso que eu to fazendo ;x termino daqui 2 semanas *-*

/spam off


Que é isso? Spam!!! Meu Deus, aqui no nosso GUJ nãããããooooo!!!

"O melhor grupo não é aquele que reúne membros perfeitos, mas aquele
onde cada um aceita os defeitos do outro, com isso se ajudam e conseguem perdão para seus próprios defeitos".
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

Mais uma simples: Devemos encapsular a visão?

Entendam: Tenho uma tela de cadastro onde os dados são informados em JTextField's. Esses são atributos privados da classe Visão.
Para o controle recolher o valor dos JTextField's, devo criar métodos GET/SET, procede?

Obrigado a todos os companheiros que estão colaborando!
markin1
JavaEvangelist

Membro desde: 07/12/2008 20:58:59
Mensagens: 494
Localização: São Paulo
Offline

Bom ^^ eu crio os Get/Set para os meus campos da classe View.

Quem é o juíz?
[Email]
rodrigo.ferreira
JavaGuru
[Avatar]

Membro desde: 28/08/2008 20:38:07
Mensagens: 200
Offline

markin1, que legal que você também está fazendo este curso... ele é muito bom... mas esse negócio de "spam" pegou mal mesmo... rsrsrsrs


Pelas boas práticas, você deve sempre manter os atributos privados (protegidos de acesso externo direto) e criar métodos públicos para atribuir e obter os valores para estes atributos (especificação JavaBeans)... por que assim, você consegue centralizar a lógica para o controle dos valores que podem ser inseridos neles. Imagine um banco... imagine se um um usuário conseguisse acessar o objeto "ContaCorrente" e atribuir o valor saldo diretamente nele: poderia ser um baita de um estrago... mas se você tiver um único ponto de acesso (setSaldo(...), por exemplo) você pode colocar alguma lógica de validação de valores, log de operações, etc... aí... e resolve-se o problema...

Mas direto ao ponto, o controller precisa acessar seus JTextFields através de método publicos... portanto, você deve criá-los... Pesquise sobre encapsulamento para saber mais sobre esta e outras técnicas indispensáveis para o nosso dia-a-dia...


Abraço,

This message was edited 1 time. Last update was at 09/06/2009 19:48:16


Rodrigo Lopes Ferreira
Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5
Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP
Pós Graduando em Desenvolvimento de Sistemas em Software Livre - Universidade Católica de Brasília
[MSN]
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

Perfeito ferreira!

Essas duas perguntas fiz realmente para acabar com dúvidas. Muita gente acaba fazendo confusão com elas, até mesmo porque tentam achar uma resposta exata e acabam achando 200 diferentes sobre essas perguntas. Quem quiser dar opiniões diferentes, pode postar! Estamos aqui para aprender e ajudar.

Agora, mais uma simples: E se os métodos da visão mudarem/deixarem de existir, quem vai avisar a equipe do controle? O mesmo pergunto no caso do Modelo
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

Ninguém mesmo? Nem uma idéia?
rodrigo.ferreira
JavaGuru
[Avatar]

Membro desde: 28/08/2008 20:38:07
Mensagens: 200
Offline

Bom dia!

O controle geralmente tem um modo de detectar os métodos da visão através de introspecção/reflection (ele abre o .class e detecta os atributos da view através dos métodos públicos "get e set" dele... então, esta atualização dá-se automaticamente) e quanto ao modelo, você deve projetar bem as interfaces, por que aí você pode mudar a implementação sem mudar a forma de acesso externo... caso haja uma mudança brusca neste ítem, você terá que atualizar todos os componentes que acessam a sua interface, e aí, você poderá ter vários problemas... portanto, novamente: projete bem as interfaces de acesso, por que se precisar alterar o "recheio", ninguém que utiliza a sua interface ficará sabendo e não sofrerá nenhum problema.


Abraço,

This message was edited 1 time. Last update was at 12/06/2009 07:20:27


Rodrigo Lopes Ferreira
Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5
Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP
Pós Graduando em Desenvolvimento de Sistemas em Software Livre - Universidade Católica de Brasília
[MSN]
pedromuyala
JavaEvangelist
[Avatar]

Membro desde: 02/01/2009 19:08:04
Mensagens: 340
Offline

Legal Ferreira, parabéns por estar colaborando!

Mais uma pergunta: E as DAO's, seram chamadas por métodos no modelo controle ou pelo bean no modelo?
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

rodrigo.ferreira wrote:A visão "chama" o controle que atualiza o modelo... quando o modelo responder, o controle atualiza a visão... a "ponte" é o controle... ele deve fazer a transformação dos dados de uma camada para a outra... visão é só pra visualização e nada mais... assim você desacopla a lógica de negócios da lógica de visualização...


Desculpem iniciar a discussão bem tarde, mas a definição acima não está correta. O controle não é "ponte" entre visão e modelo, o controle só existe para receber estímulos da visão (ou seja, quando o usuário mexe na tela), que invoca ações no modelo, nada mais. Quando, por exemplo, for o caso da visão que se renderiza "lendo" o model, não há controle intermediando, o acesso é direto mesmo, e não há nada de errado nisso. Entendam que a premissa do MVC é do modelo não depender da visão, porque este muda frequentemente. Mas o contrário não é verdadeiro, porque o modelo tende a ser mais estável.

A sim, não sei como se classificam modelo, visão e controle, mas, com certeza, não são camadas.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

rodrigo.ferreira wrote:Pelas boas práticas, você deve sempre manter os atributos privados (protegidos de acesso externo direto) e criar métodos públicos para atribuir e obter os valores para estes atributos (especificação JavaBeans)... por que assim, você consegue centralizar a lógica para o controle dos valores que podem ser inseridos neles. Imagine um banco... imagine se um um usuário conseguisse acessar o objeto "ContaCorrente" e atribuir o valor saldo diretamente nele: poderia ser um baita de um estrago... mas se você tiver um único ponto de acesso (setSaldo(...), por exemplo) você pode colocar alguma lógica de validação de valores, log de operações, etc... aí... e resolve-se o problema...

Mas direto ao ponto, o controller precisa acessar seus JTextFields através de método publicos... portanto, você deve criá-los... Pesquise sobre encapsulamento para saber mais sobre esta e outras técnicas indispensáveis para o nosso dia-a-dia...


Eu sei que essa é a teoria corrente que sustenta a existência dos getters e setters. Mas na prática, os programadores tendem a deturpá-la. Por dois motivos:

1) Métodos que começam com get|set podem até encapsular alguma coisa, mas não são os únicos, porque qualquer método com qualquer padrão de assinatura que manupula atributos privados está encapsulando alguma coisa sobre esse objeto. A vantagem de usar get e set não se sustenta.

2) Por conta de geradores automáticos de getters e setters, as pessoas nunca, mas nunca mesmo, colocam lógica de validação, higienização ou log dentro de um getter ou setter. Pior, para muitos, a alteração de atributos implica na alteração de métodos, o que invalida o encapsulamento.


Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

pedromuyala wrote:Mais uma pergunta: E as DAO's, seram chamadas por métodos no modelo controle ou pelo bean no modelo?


Resposta rápida:
DAOs são parte do modelo. Simples.


Resposta demorada:
DAOs são parte do modelo, mas, preferencialmente, é melhor eles serem invocados por algum objeto de serviço, que encapsula uma lógica de negócio. Os métodos do objeto de serviço são chamados pelo controle.
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team