[RESOLVIDO] Como um interage com outro?

está vendo no que dar tanta explicação!
confusão na explicação!!

[quote=Lavieri][quote=ingridfarabulini][quote=Lavieri]
o source é quem gerou o evento… por exemplo… ao clicar no botão de uma janela swing, o source é normalmente quem gerou o evento, no caso o botão… ou a janela…

a partirdai, vc vai ter acesso aos campos Texto do Swing, ou os campos podem estar diretamente bindados a uma entity, e vc pega a entity diretamente… depende de como vc faz a janela…

o fato é… no evneto disparado… vc recebe quem o disparou, a paritir disso vc pega os dados que estão neste objeto… se for uma janela com os forms, vc a paritr da janela e dos forms, vc achaa os valores, e coloca elas dentro de um bean, e manda ele pra lógica tratar corretamente…[/quote]

Vamos ver se entendi: Quando eu clico no botão, o objeto Event (source) gerado para o ActionListener vai ser, por exemplo, o objeto JanelaAgenda? É isso?
Obrigada! :-o[/quote]

vai ter um source, de onde o evento foi disparado… esse source acho que é o botão, e não a janela… porem no botão tem como vc pegar a janela onde ele esta contido… e assim conseguir achar os dados que vc quer…[/quote]

Desculpa, mas não consigo visualizar essa situação. Àlias, não vou estar acoplando demais a visão ao controlador? Obrigada.

[quote=ingridfarabulini]

Desculpa, mas não consigo visualizar essa situação. Àlias, não vou estar acoplando demais a visão ao controlador? Obrigada.[/quote]

vai

mas um controlador é acoplado a view e a lógica de modelo…

ele é o intermedio, então ele tem q conhecer os 2… o objetivo dele, é transformar a view em algo que a lógica entenda…

o objetivo é tirar da lógica a responsabilidade disso… e tirar da view a responsabilidade de saber o que a lógica quer…

o Controlador que fica no meio, é quem conversa com os 2 … e por isso ele entende os 2

Edit.: na view vc pode ate linkar seus campos a aos benas, e assim que xega mais mastigadinho no controlador

De tanto explicação…
CONFUSÃO NA EXPLICAÇÃO !

[quote=Lavieri]
o que vc pode ter é um construtor, para poder passar os dados todos de um vez, e ja ter uma pessoa completa, por exemplo

public class Pessoa { public Pessoa(String nome, String sobrenome, Telefone tel, Email mail) { this.nome = nome; this.sobrenome= sobrenome; this.tel = tel; //etc etc etc } }

quem vai realmente cadastar uma pessoa, é o DAO ou algo do genero, ele vai receber o objeto Pessoa, e guardar esse objeto dentro de um banco de dados…

depois quando vc precisar resgatar esse objeto, vc pede para o DAO, e ele fica responsável por pegar esse objeto devolta do lugar onde ele guardou…

Uma pessoa Não cadastra ela mesma…

os métodos save, delete, update entre outros, não são inerentes da pessoa, e sim de outro objeto…[/quote]

Sim, entendi. Mas quem chama a DAO é o controller? Ou o Bean?

ahh e lembrando… é por isso, que eu falei, que no controlador vc deve ter o minimo possivel de lógica nele. e ele deve passar isso pra alguma lógica responsável…

pois a lógica tem q ser mantida… ou seja… o processo desencadeado após receber o bean, em um cadastro, deve ser separado, em um local adequado…

se um dia (não que isso aconteça facilmente) trocar a view pra outra coisa… vc remove a view… escreve um controlado novo pra view nova, e envia o bean pra lógica… e a lógica fica preservada…

Hmm
tive uma idéia melhor…
Porque você não crie apenas uma classe chamada pessoa, com variáveis Nome, Endereço, Telefone
E depois faz os get’s e set’s como o pedroroxd e o UMC falou?

normalmente funciona assim …

VIEW -> CONTROLLER -> LOGICA (onde tem os processos) -> CAMADA DE PERSISTENCIA (o que pode ser um DAO).

a lógica e a camada de persistencia que comentei aqui, fazem parte do MODELO

portanto… MVC (Modelo Visão e Controle).

normalmente é assim q faz

ahh e lembrando… é por isso, que eu falei, que no controlador vc deve ter o minimo possivel de lógica nele. e ele deve passar isso pra alguma lógica responsável…

pois a lógica tem q ser mantida… ou seja… o processo desencadeado após receber o bean, em um cadastro, deve ser separado, em um local adequado…

se um dia (não que isso aconteça facilmente) trocar a view pra outra coisa… vc remove a view… escreve um controlado novo pra view nova, e envia o bean pra lógica… e a lógica fica preservada…

[/quote]

Uhmm acho que estou entendo. Então quer dizer que o bean não faz parte do modelo?
Vamos ver, olha só:

  • A visão será a classe CadastraPessoaVisao (que contém os campos para cadastrar);
  • O controlador será a classe PessoaControla que escuta os eventos ocorridos no objeto criado de CadastraPessoaVisao (exemplo do clique no botão cadastrar);
  • A logica seriam as classes Pessoa, Telefone, EMail;
  • Esse mesmo controlador fica responsável em carregar os dados em um objeto da classe Pessoa (a qual carregará os demais objetos instanciados por ela, no caso Telefone, Email)

Certo?

Favor evitar cantadas baratas em cima das mulheres que frequentam o fórum. Mensagens apagadas.

Os beans fazem sim parte do modelo …

Modelo inclui, suas entidades (os beans), suas lógicas (as operações a serem realizadas em seu modelo), e também o limiar com a camada de persistencia (ou seja, lógicas de consulta, de inserção entre outras coisas)…

Uma primeira observação, apesar das entidades (esses beans que vc esta falando) serem parte do modelo, normalmente eles trafegam por todas as camadas, desde a visão, onde podem ser recebidos para exibição ou preenchimento, passando pelo controle (que os extrai da visão e joga pra lógica, ou os recebe como resultado de um lógica e envia para o lugar adequado na visão), pela lógica (que processa e realiza operação a partir dessas entidades) até a camda de persistencia (que recebe da lógica para armazenamento no banco, ou para remoção ou atualização no banco; ou puxando do banco de dados e enviado como retorno para a lógica).

A entidade (Por exemplo um objeto Pessoa) é um objeto que navega em todas as camadas, existem casos que a visão não o conhece e nesses casos o controlador tem que os converter para a visão conseguir exibir, em casos que a visão consegue trabalhar com as entidades, o controlador não precisa se dar ao trabalho disto

Vendo as responsabilidades

  • A Visão cuida de iteragir com o usuários, para tal pode ser com campos e formulário para cadastro, ou exibindo informações, entre outras coisas.

  • O Controlador tem a função de entender o que o usuário pede a visão, e conhecer as rotas do seu sitema, enviado uma requisição do usuário para a lógica correta, além de receber o resultado de uma ação pedida a lógica, e devolver para a visão correta, para que o usuário tenha o seu retorno.

  • A Lógica tem função de processaro um pedido, uma requisição do usuário, fazer os passos necessário para que o evento ocorra conforme pedido pelo usuário, para tal ele conhece que o procedimento para efetivamente fazer o pedido, para tal ele pode se comunicar com varios setores do modelo, como por exemplo, cadastrar a Pessoa no através do PessoaDao, enviar um e-mail para o administrador, informando que existe uma nova pessoa, checar se tudo ocorreu bem… alem disso uma lógica pode requerer informações, processar as informações e entregar de volta para quem pediu (no caso o controle). Essa lógica então fala com o a camada de persistencia sempre que é necessário recuperar dados armazenados ou armazenar dados.

  • A Camada de persistencia é quem cuida de guardar, remover, atualizar, ou também recuperar as entidades de um banco de dados fisico, é responsável pelas consultas e coisas do genero, ela retorna pra lógica o resultado de suas consultas, ou de suas operações.

  • As Entidades (ou os beans como vc esta chamando) são na verdade a informação, que esta sendo passada entre as camadas, elas podem ou não conter alguns processos, e ter algumas lógicas internas, mas normalmente são só isso, um punhado de informação, que tranzita entre as camadas… são informações enviadas pelo usuário, ou atualizadas pelo usuário, ou apagadas, ou coisas do tipo… essa é a função principal destas entidades servir de informação…

Espero que tenha entendido, e desculpa a demora na resposta, é que dei uma saida, e só voltei agora…

Olá Lavieri, eu entendi sim.

As entidades caminham por todas as camadas levando os dados necessários para processamento em outras camadas.

Vou tentar mostrar isso:

  • Eu abro a janela de cadastro da minha agenda; (um objeto de CadAgenda)
  • Nela preencho os dados da pessoa que vou cadastrar; (os JTextField’s)
  • Clico no botão cadastrar; (o JButton)
  • Nesse momento, o ActionListener do JButton (que está dentro do objeto CadAgenda) cria um objeto de Pessoa (entidade) e através dos set’s passa os dados dos JTextField para o objeto criado;
  • Por fim o ActionListener chama um método do Controle ( control.cadastrar(Pessoa p) ) passando o objeto de Pessoa para ele;
  • Encerra-se o ciclo da visão por hora…

Até aqui tudo certo?
Obrigada :smiley: Desculpa se estiver entendendo errado… :oops:

Ahhhh
mankdaaaaaa
HUAhuUAHuha
eu tava bebado =X

Ahhhh
mankdaaaaaa
HUAhuUAHuha
eu tava bebado =X[/quote]

rs… ainda bem que sou compromissado… mensagem privada para olhar o tópico e com foto do sexo oposto, já logo pensei… vai chover reply… rs…

Ahhhh
mankdaaaaaa
HUAhuUAHuha
eu tava bebado =X[/quote]

rs… ainda bem que sou compromissado… mensagem privada para olhar o tópico e com foto do sexo oposto, já logo pensei… vai chover reply… rs…[/quote]

É moço e pelo que parece está difícil alguém conseguir entender a minha pergunta aí de cima para responder… :frowning:
Estou vendo outros tópicos também… mas até agora não consigo visualizar direito como fazer essa agenda…
Obrigada por ter atendido ao meu MP e fico feliz que tenha respondido aqui, como citei não gosto de usar MP porque a resposta fica restrita e desfavorece os demais usuários do fórum. Parabéns moço! :smiley: Fico no aguardo por mais respostas, quem souber… ficarei grata! :wink:

Olá moça, tudo bem com você?
Muito obrigado mesmo por ter entrado em contato comigo pela mensagem privada. Fiquei muito feliz de receber sua mensagem hoje!

Olha só li sua dificuldade e já passei por isso no ano passado, álias até hoje tenho minhas dúvidas também sobre arquitetura…kkk.
Precisei ficar ausente do fórum até quase final de Janeiro… mas me inspirou a voltar!
Mas veja este tópico aqui do GUJ mesmo que criei no ano passado, acredito eu que irá ajudá-la e muito a sanar sua dúvida!!! Link
Olha para você, exclusivamente, vou até montar uma imagem com a última explicação que foi dada pelo Sergio Taborda que na minha opinião foi a que mais convenceu…
Vou colocar a imagem lá no tópico… também sou adepto ao que disse na mp de evitar fechar a informação a todos… ela deve transcorrer livremente, sem dúvida, para todos os companheiros Gujeiros.

Leia com calma cada detalhe lá do tópico, não se afobe em fazer uma nova pergunta, ok?
Tudo de bom para você, conheço Canasvieiras já passei uma férias aí no litoral de Santa Catarina.
Mais uma vez obrigado por me procurar, sempre que precisar, ok?

mais ou meno assim

[code]public class AgendaUI { //esse é o seu controle principal
private JFrame janela;
private JPanel painelPrincipal;
//os campos de onde vc quer pegar dados.

public void montaTela() {
	montaJanela();
	montaPainelPrincipal();
	montaTitulo();
	montaFormulario()
	montaBotaoCadastrar();
	montaBotaoSair();
	mostraJanela();
}

private void montaJanela() {
	janela = new JFrame("Agenda v0.1");
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private void montaTitulo() {
	JLabel titulo = new JLabel("Agenda Cadastramento");
	titulo.setFont(new Font("Verdana", Font.BOLD, 25));
	titulo.setForeground(new Color(55, 52, 100));
	titulo.setHorizontalAlignment(SwingConstants.CENTER);
	painelPrincipal.add(titulo);
}

private void montaFormulario() {
	//aqui vc coloca o formulario dentro do painelPrincipal
	//e guarda referencia para conseguir pegar os dados dos campos.
}

private void montaBotaoCadastrar() {
	JButton botacaoCadastrar = new JButton("Cadastrar");
	botacaoCarregar.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent arg0) {
			//pega os campos do formulário, e coloca dentro do bean Pessoa
			new LogicaDaAgenda().cadastrar(pessoa); //aqui vc delega para lógica cadastrar
			//operacoes para apagar os dados do formulário
		}
	});
	painelPrincipal.add(botacaoCadastrar );
}

private void montaBotaoSair() {
	JButton botaoSair = new JButton("Sair");
	botaoSair.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	});
	painelPrincipal.add(botaoSair);
}

private void mostraJanela() {
	janela.pack();
	janela.setSize(600, 600);
	janela.setVisible(true);
}

}[/code]

é + ou - assim

[quote=Lavieri]mais ou meno assim

[code]public class AgendaUI { //esse é o seu controle principal
private JFrame janela;
private JPanel painelPrincipal;
//os campos de onde vc quer pegar dados.

public void montaTela() {
	montaJanela();
	montaPainelPrincipal();
	montaTitulo();
	montaFormulario()
	montaBotaoCadastrar();
	montaBotaoSair();
	mostraJanela();
}

private void montaJanela() {
	janela = new JFrame("Agenda v0.1");
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private void montaTitulo() {
	JLabel titulo = new JLabel("Agenda Cadastramento");
	titulo.setFont(new Font("Verdana", Font.BOLD, 25));
	titulo.setForeground(new Color(55, 52, 100));
	titulo.setHorizontalAlignment(SwingConstants.CENTER);
	painelPrincipal.add(titulo);
}

private void montaFormulario() {
	//aqui vc coloca o formulario dentro do painelPrincipal
	//e guarda referencia para conseguir pegar os dados dos campos.
}

private void montaBotaoCadastrar() {
	JButton botacaoCadastrar = new JButton("Cadastrar");
	botacaoCarregar.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent arg0) {
			//pega os campos do formulário, e coloca dentro do bean Pessoa
			new LogicaDaAgenda().cadastrar(pessoa); //aqui vc delega para lógica cadastrar
			//operacoes para apagar os dados do formulário
		}
	});
	painelPrincipal.add(botacaoCadastrar );
}

private void montaBotaoSair() {
	JButton botaoSair = new JButton("Sair");
	botaoSair.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	});
	painelPrincipal.add(botaoSair);
}

private void mostraJanela() {
	janela.pack();
	janela.setSize(600, 600);
	janela.setVisible(true);
}

}[/code]

é + ou - assim[/quote]

Olá Lavieri…
Entendi sim… nesse caso então o ActionListener faz o papel de chamar a lógica da aplicação certo?
Esse código que me mostrou seria da apresentação??
Obrigada por não desistir! :smiley:

é um controlador que monta chama uma visão… e é responsável por sua comunicação com as camadas de baixo…

pra exibir essa janela é facil

public static void main(String[] args) { new AgendaUI().mostraJanela(); }

os componenetes, que são JFrame e eoutros podem ser Objetos personalizados com as telas pra pre montadas…

e sendo objetos montados, fica mais separado a visão da lógica, pq ai é melhor do que montar a tela no controlador

Entendi sim!
É acredito que sanou uma das minhas dúvidas principais!
Obrigada mais uma vez por toda sua atenção! :smiley:
Tenho mais umas dúvidas mas um colega acima indicou um tópico que achei interessante e como já está caminhada a conversa vou postar lá para não ficar duplicando tópicos!
Mais uma vez obrigada mesmo, beijo. :wink: