Prévia do material em texto
Este módulo refere-se à utilização do Padrão MVC (Model View Controller) nas aplicações.
Originalmente o Model-View-Controller foi criado como um padrão de projeto arquitetural desenvolvido para o ambiente de desenvolvimento Smalltalk, mas ele pode ser utilizado para qualquer aplicação interativa e em diferentes tipos de ambientes.
Model-View-Controller (MVC) é um padrão de arquitetura de software que tem como objetivo separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control). A idéia é permitir que uma mesma lógica de negócios
possa ser acessada e visualizada através de várias interfaces.
Na arquitetura MVC, a lógica de negócios (chamada aqui de Modelo) não sabe de quantas nem quais interfaces com o usuário estão exibindo seu estado.
Alterações feitas na interface não afetarão a manipulação dos dados, e estes poderão ser reorganizados sem alterar a interface do usuário. O model-view-controller resolve este problema por meio da separação das tarefas de acesso aos dados e lógica do
negócio da apresentação e interação com o usuário, introduzindo um componente entre os dois: o Controller.
Podemos descrever este padrão da seguinte forma:
Model - A representação "domínio" especifica da informação em que a aplicação opera.
- Por exemplo, aluno, professor e turma fazem parte do domínio de um sistema acadêmico.
- E comum haver confusão pensando que Model é um outro nome para a camada de domínio.
- Lógica de domínio adiciona sentido a dados crus como, por exemplo calcular se hoje e aniversario do usuário, calcular o total de impostos e fretes sobre um determinado carrinho de compras.
- Muitas aplicações usam um mecanismo de armazenamento persistente como, por exemplo, um banco de dados para armazenar os dados fornecidos pelo usuário.
- MVC não cita especificamente a camada para acesso aos dados, porque subentende-se que estes métodos estariam encapsulados pelo Model.
View - "Renderiza" o model em uma forma especifica para a interação, geralmente uma interface de usuário.
Controller - Processa e responde a eventos, geralmente ações do usuário, e pode invocar alterações no Model quando estas se fizerem necessárias.
De maneira prática aplicamos o MVC dividindo a aplicação em 3 pacotes básicos: Model, view, control. Iniciamos a aplicação pela classe Aluno no pacote model:
package mvc.model;
public class Aluno {
private String nome;
private String ra;
}
A próxima etapa é a criação da classe ControladorAlunos do pacote control, que é responsável pela interligação do modelo e a interface gráfica.
package mvc.control;
import mvc.model.*;
import mvc.view.*;
public class ControladorAlunos {
private Map<String, Aluno> alunos = new HashMap<String, Aluno>();
public void inserirAluno(String ra, String nome) {
Aluno aluno = new Aluno();
aluno.setRa(ra);
aluno.setNome(nome);
alunos.put(aluno.getRa(), aluno);
JOptionPane.showMessageDialog(null, "Aluno inserido com sucesso!");
}
public void removerAluno(String ra) {
if (alunos.containsKey(ra)) {
alunos.remove(ra);
JOptionPane.showMessageDialog(null, "Aluno removido com sucesso!");
} else {
JOptionPane.showMessageDialog(null, "Não existe aluno com esse RA!");
}
}
public Aluno pesquisarAluno(String ra) {
if (alunos.containsKey(ra)) {
return alunos.get(ra);
} else {
JOptionPane.showMessageDialog(null, "Não existe aluno com esse RA!");
return null;
}
}
}
E por fim criamos a classe FormAluno no pacote view, classe responsável pela entrada dos dados (interface gráfica):
public class FormAluno extends JFrame {
//As declarações dos componentes visuais foram suprimidos, de maneira que facilite o entendimento da aplicação.
private JButton getJButtonInserir() {
jButtonInserir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// solicita ao controlador que efetue a inclusão do aluno
controlador.inserirAluno(jTextRa.getText(), jTextNome.getText());
}
});
}
return jButtonInserir;
}
private JButton getJButtonPesquisar() {
jButtonPesquisar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) {
// solicita ao controlador que efetue a busca pelo RA
Aluno aluno = controlador.pesquisarAluno(jTextRa.getText());
// se encontrou um aluno com o RA
if (aluno != null) {
// exibe as informações na tela
jTextRa.setText(aluno.getRa());
jTextNome.setText(aluno.getNome());
}
}
});
}
return jButtonPesquisar;
}
private JButton getJButtonRemover() {
jButtonRemover.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// solicita ao controlador que efetue a exclusão do aluno pelo RA
controlador.removerAluno(jTextRa.getText());
}
});
}
return jButtonRemover;
}
public FormAluno() {
super();
initialize();
controlador = new ControladorAlunos();
}
}
Exercício 1:
A definição de que um sistema deve ser desenvolvido em três níveis é feita pelo padrão de projeto
A)
MVC (Model View Controller).
B)
MVC-Dev (Model Value Constructive Development).
C)
TMS (Time Milestones Setting).
D)
PMC (Project Main Controller).
E)
MCA (Model Classes Assignment).
O aluno respondeu e acertou. Alternativa(A)
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 2:
Os softwares podem ser desenvolvidos utilizando-se vários modelos de arquitetura. Sobre esse assunto é correto afirmar:
A)
Na arquitetura MVC, o componente Model define o comportamento da aplicação. É ele quem interpreta as ações do usuário e as mapeia para chamadas ao Controller.
B)
Model-View-Controller (MVC) é um padrão de arquitetura de software equivalente ao modelo 3-tier, que visa separar a lógica de negócio da lógica de apresentação, não permitindo, porém, o desenvolvimento, teste e
manutenção isolados de ambos.
C)
O modelo em três camadas, derivado do padrão MVC, recebe esta denominação quando um sistema cliente-servidor é desenvolvido retirando-se a camada de negócio do lado do cliente.
D)
Na arquitetura MVC, a camada de Dados ou Persistência representa os dados da aplicação e contém as regras do negócio que governam o acesso e a modificação dos dados.
E)
O modelo cliente-servidor é baseado na ideia de realizar no servidor o processamento pesado, deixando para a máquina do cliente o processamento de recursos mais leves, normalmente necessários para acessar a parte da
aplicação que se encontra em execução no servidor.
O aluno respondeu e acertou. Alternativa(E)
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 3:
Modelo MVC significa:
A)
Modo-View-Construtor.
B)
Modelo-View-Controlador.
C)
Modelo-Versão-Case.
D)
Módulo-Veri?cador-Controlador.
E)
Medida-Virtual-Concepção.
O aluno respondeue acertou. Alternativa(B)
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 4:
Os softwares podem ser desenvolvidos utilizando-se vários modelos de arquitetura. Sobre esse assunto é correto afirmar:
A)
Na arquitetura MVC, o componente Model define o comportamento da aplicação. É ele quem interpreta as ações do usuário e as mapeia para chamadas ao Controller.
B)
Model-View-Controller (MVC) é um padrão de arquitetura de software equivalente ao modelo 3-tier, que visa separar a lógica de negócio da lógica de apresentação, não permitindo, porém, o desenvolvimento, teste e
manutenção isolados de ambos.
C)
O modelo em três camadas, derivado do padrão MVC, recebe esta denominação quando um sistema cliente-servidor é desenvolvido retirando-se a camada de negócio do lado do cliente.
D)
Na arquitetura MVC, a camada de Dados ou Persistência representa os dados da aplicação e contém as regras do negócio que governam o acesso e a modificação dos dados.
E)
O modelo cliente-servidor é baseado na ideia de realizar no servidor o processamento pesado, deixando para a máquina do cliente o processamento de recursos mais leves, normalmente necessários para acessar a parte da
aplicação que se encontra em execução no servidor.
O aluno respondeu e acertou. Alternativa(E)
Comentários:
Essa disciplina não é ED ou você não o fez comentários
Exercício 5:
Considere as afirmativas abaixo sobre a arquitetura de três camadas.
I – A arquitetura de três camadas é uma outra forma de designar a arquitetura MVC.
II – Nas aplicações Web, os módulos da camada intermediária rodam usualmente em um servidor de aplicações.
III – Toda a comunicação entre a camada de apresentação e a camada de dados tem de passar pela camada intermediária.
Está correto o que se afirma:
A)
I, apenas
B)
II, apenas
C)
I e II, apenas
D)
II e III, apenas
E)
I, II e III
O aluno respondeu e acertou. Alternativa(D)
Comentários:
Essa disciplina não é ED ou você não o fez comentários