Você está na página 1de 92

Prof.

Jnior
Disciplina: Programao WEB
E-mail: joseavanijr@infouniron.com
Apresentao do Modelo MVC
Conceito
O MVC pode ser entendido como uma diviso de tarefas em um
aplicativo.
MVC significa: Model, View e Controller;
Cada uma das 3 camadas tem sua funo.
Justificativa
Com o desenvolvimento e evoluo dos programas e,
consequentemente, da forma de se fazer os programas,
novas abordagens tiveram que ser pensadas para facilitar a
programao e garantir que os softwares, depois de
prontos, fossem mais facilmente manutenveis. A partir
disso surgiu o conceito de dividir tarefas, de garantir com
que cada camada da aplicao tenha seu prprio escopo
e definio e que a comunicao entre todas elas se d de
maneira eficiente e controlada.
Fazendo uma analogia
Exemplo:
ANTIGAMENTE
Exemplo:
HOJE
Flexibilidade
Uma vez divida a aplicao cada camada torna-se
independente, porm, serve de complemento da outra.
Por se tornar independente, podemos aproveit-las,
inclusive, em outras aplicaes. (REUSABILIDADE)
Exemplo:
Um usurio solicita uma aplicao para desktop.
Aps algum tempo ele deseja utilizar seu sistema pela
WEB inclusive disponibilizando em plataforma WAP.
Soluo:
Haver a necessidade de desenvolver 3 interfaces
diferentes para cada usurio, um para cada tipo. J as
outras duas camadas, no necessariamente teriam que ser
modificadas, tornando assim uma aplicao
potencialmente reutilizvel.
A ideia principal do padro MVC isolar a aplicao em
camadas distintas, basicamente, a camada de acesso a
dados, a camada de apresentao, e a camada de negcios,
que respectivamente so o Modelo, o Vista e o
Controlador.
Nosso Padro
Atualmente o modelo preferido para persistir dados em
aplicaes de banco de dados relacional.
DAO (Data Access Object) um padro para persistncia de
dados que permite separar regras de negcio das regras de
acesso a banco de dados. Numa aplicao que utilize a
arquitetura MVC, todas as funcionalidades de bancos de dados,
tais como obter as conexes, mapear objetos para tipos de
dados SQL ou executar comandos SQL, devem ser feitas por
classes de DAO.
Lembrando que no modelo DAO voc ter que criar uma classe
para cada tabela com suas propriedades.
Modelo
MODEL
BO
Business Object
DAO
Date Access
Objetc
Viso
Banco de
Dados
Camada MODEL
Todas as declaraes das classes referentes ao negcio,
juntamente com seus tributos e propriedades;
Classes referentes s tabelas do banco de dados. Dessa
forma d condies para criar os objetos que sero
persistidos.
Camada BO
Todas as regras de negcio.
a camada que d permisso para a aplicao acessar o
banco.
Nenhum acesso pode chegar ao banco de dados sem
passar por essa camada.
Camada de mo-dupla, leva e busca as informaes do
banco de dados;
Camada DAO
Responsvel por todo e qualquer acesso ao banco de
dados.
O CRUD feito por essa camada;
Possui a string de conexo;
Estrutura da Aplicao com
MVC
Namespace
Uma biblioteca de classes organizada hierarquicamente em uma
estrutura conhecida como namespace. Ao desenvolver um componente
de software reusvel, este precisa ser estruturado em um namespace
para que possa ser usado a partir de um outro programa externo.
Namespace
Quando uma aplicao organizada logicamente usando namespaces,
este deve possuir pelo menos uma classe que implemente o mtodo
Main( ), para aplicaes console, ou WinMain( ), para aplicaes
Windows. Por sua vez, uma biblioteca de classes implementada
usando namespaces, mas nenhuma das suas classes membros
implementa o mtodo Main( ) ou WinMain( ), e elas so usadas para
implementar cdigo reutilizvel.
Namespace
Namespaces so a forma lgica de organizar o cdigo-fonte em.NET.
Toda a biblioteca de classes da .NET est estruturada em uma
hierarquia de namespaces que tem como base o namespace System,
onde se encontram as classes bsicas da .NET. Fisicamente, os
namespaces so armazenados em assemblies, que, por sua vez, so
armazenados no sistema de arquivos como DLLs (bibliotecas de
ligao dinmica) ou como arquivos executveis (.exe) que
correspondem a aplicaes propriamente ditas no ambiente .NET.
Namespace
Para usar um namespace a partir de uma aplicao ou de uma
biblioteca, usamos a clusula using seguida do nome do namespace.
A incluso de um namespace atravs de using til para evitar ter que
digitar o nome completo do namespace para referenciar qualquer um
dos seus membros.
Namespace
Quando criamos um novo projeto, o VS.NET automaticamente gera
um novo namespace com o nome do projeto. Um namespace dentro de
uma aplicao ou biblioteca pode estar distribudo em diversos
arquivos. Mas isso ocorre no nvel de projeto, porque na hora
compilao todas as partes que compem o namespace sero
compiladas em um nico assembly.
Formas de MVC
Aplicando MVC
Podemos dividir a aplicao em:
1) pastas;
2) Projetos.
Aplicando MVC - Pastas
Em um mesmo projeto, podemos criar pastas que representem cada
uma das camadas e em cada pasta armazenas as classes referentes
essa camada.
Aplicando MVC - Projetos
Quando dividimos em projetos, podemos dividir de duas formas
distintas:
1) Em 2 projetos;
2) Em 4 projetos.
Aplicando MVC - Projetos
2 projetos;
Quando dividimos em dois projetos, nos acabamos colocando
todas as nossas classes em uma biblioteca de classe(projeto 1) deixando
no outro projeto somente o que representa a interface do sistema.
Aplicando MVC - Projetos
4 projetos;
Quando dividimos em quatro projetos, nos colocamos cada
camada em um projeto separado, e ento teremos a Camada de
apresentao, a DAO, a BO e a MODEL.
Usando um projeto no outro.
Aplicando MVC - Projetos
2 projetos;
Devemos adicionar as referncias entre os projetos e utilizar a
clausula using onde for necessrio usar.
4 projetos;
Devemos adicionar as referncias entre os projetos que podem ser
utilizados e utilizar a clausula using.
Exemplo
Atividade
Criao da camada de
apresentao
Modelando a minha MasterPage
O recurso de Master Pages, sem nenhuma dvida uma facilidade
que todo desenvolvedor sonhava em ter nos projetos. Com uma
Master Page voc consegue desenvolver uma pgina padro que ser
utilizada em todo o site, ou seja, como se fosse uma pgina default
contendo menus, cabealhos e rodaps.
Modelando a minha MasterPage
Qualquer outra pgina criada, pode herdar a Master Page, o qual
voc poder apenas utilizar a rea que no seja a da Master Page.
Como isto feito em tempo de execuo, voc adotar qualque tipo
de manuteno na pgina, e em tempo de execuo que o .NET
monta as duas pginas em apenas uma.
Modelando a minha MasterPage
A grande vantagem nisto que voc no ter que dar manuteno
em diversas pginas ou User Controls, uma vez criada ou alterada a
Master Page, todas as mudanas so enxergadas imediatamente nas
demais pginas que a utilizam.
Modelando a minha MasterPage
Quando crio uma masterPage posso adicionar vrios controles a ela,
porm, todos eles ficaro bloqueados para as outras pginas .aspx
que herdam dela.
Para que possamos editar essa pgina, deveremos adicionar um
controle que permita isso que o ContentPlaceHolder.
O contentPlaceHolder cria uma rea editvel que permite que
possamos adicionar valores dentro dele a partir de qualquer outra
pgina que herde da masterPage.
Manipular construtor
Construtores
Cada classe em C# fornecida com um construtor padro
gratuito, que pode ser redefinido se for necessrio. Ele tem o mesmo
nome da classe.
Por definio, um construtor padro nunca aceita argumentos.
Construtores
Alm de alocar o novo objeto na memria, o construtor padro
garante que todos os dados de campos configurados, sejam criados na
memria quando ele for executado.
Se no estiver satisfeito com estas atribuies padro, o
programador pode redefinir o construtor padro de acordo com suas
necessidades.
Construtores
Quando criamos uma classe e ela no apresenta
seu construtor, isso quer dizer que usaremos o
construtor padro.
Construtores
Caso queiramos que um objeto, ao ser criado, j
nasa com todos os seus atributos preenchidos, basta
que criar um mtodo construtor que receba todos
esses valores.
Representao dos
relacionamentos
Relacionamentos
Os relacionamentos podem ser representados de vrias formas.
A mais simples a herana que apenas necessita que
coloquemos dois pontos(:) aps o nome da classe que est herdando e
em seguida o nome da classe herdada.
Os outros relacionamentos (agregao / composio), so
representados atravs da criao de um objeto parte na classe que
representa o todo.
Relacionamentos
Herana
Agregao / Composio
Relacionamentos
O exemplo anterior mostramos os relacionamentos de agregao
e composio, porm eles no esto representados completamente.
Relacionamentos
Quando falamos de COMPOSIO, afirmamos que um objeto
parte s existira se o objeto todo existir. Dessa forma teremos que
utilizar o mtodo construtor para nos ajudar a garantir isso.
Relacionamentos
Se um objeto PARTE s pode existir se o objeto TODO existir,
podemos garantir isso passando o objeto TODO como parmetro do
construtor do objeto PARTE.
Relacionamentos
Representao das
multiplicidades
(Criao das listas)
Multiplicidades
As multiplicidades em um diagrama de classe, representam a
quantidade de relacionamentos que podem ocorrer entre os objetos
de duas classes.
Multiplicidades
Para garantir que isso acontea realmente, temos que
representar essas condies no cdigo.
Para representar a multiplicidade no cdigo, devemos criar uma
lista onde temos uma multiplicidade que representa mais de um* e um
objeto onde temos uma multiplicidade que representa um.
*Quando necessrio
Multiplicidades
Voltando a nosso exemplo anterior, onde um pedido pode conter
mais de um item e um item pertence a apenas um emprstimo,
teramos o seguinte cdigo:
Relacionamentos
Relacionamentos
Criao do soluo da montadora
Criao da camada de NEGCIO
Criao do MODELO baseado no
diagrama UML
class MODEL
Pessoa
- cpf: stri ng
- nome: stri ng
property
+ _Cpf() : stri ng
+ _Nome() : stri ng
Cliente
- ci dade: stri ng
- dataNasci mento: DateTi me
- endereco: stri ng
- numero: stri ng
- orgaoExpedi dor: stri ng
- rg: stri ng
- UF: stri ng
property
+ _DataNasci mento() : DateTi me
+ _Endereco() : stri ng
Montador
- sal ari o: deci mal
property
+ _Sal ari o() : deci mal
Veiculo
- categori a: stri ng
- marca: stri ng
- model o: stri ng
property
+ _Categori a() : stri ng
+ _Marca() : stri ng
+ _Model o() : stri ng
Peca
- dataFabri cacao: DateTi me
- numeroSeri e: stri ng
property
+ _DataFabri cacao() : DateTi me
+ _NumeroSeri e() : stri ng
Fornecedor
- endereco: stri ng
property
+ _Endereco() : stri ng
PecaDoVeiculo
- desconto: deci mal
property
+ _Desconto() : deci mal
enumerati o...
Sexo
Usuario
- i d: i nt
- l ogi n: stri ng
- nome: stri ng
- senha: stri ng
1
0..*
1
0..*
1
0..*
1 *
1..* 1
Enum
Enum
O enum usado para declarar uma enumerao, um tipo distinto que
consiste em um conjunto de constantes nomeadas denominada lista de
enumerador.
Enum
Em programao, uma enumerao um tipo de dado abstrato,
cujos valores so atribudos a exatamente um nico elemento de um
conjunto finito de identificadores escolhidos pelo programador.
Esse tipo geralmente usado para variveis categricas (uma lista
de opes), que no possuem uma ordem numrica definida.
Enum
Em tempo de execuo, um tipo de dado enumerado geralmente
implementado usado-se inteiros. Entretanto, comparando-se a usar
somente inteiros, os tipos enumerados tornam o cdigo fonte mais bem
documentado que atravs do uso explcito de "nmeros mgicos".
Exemplo
Apresentao da camada DAO
BD
.cs
DAO
Criar o banco utilizando script
Conexo com o banco
Criao da camada DAO
Camada BO
BO
Imagine como voc faria para testar se um cliente est preenchido
com os dados obrigatrios antes de envi-lo para o banco.
BO
Se voc pensou em scripts nos formulrios, est parcialmente
correto.
O javascript roda no cliente e por isso depende da mquina do
usurio para funcionar.
Mas se o usurio desabilitar o javascript, todas as suas validaes
no seriam feitas.
BO
Ento a verificao deveria est no servidor Tambm.
Para est no servidor, ela deveria ficar em algum lugar que rode no
servidor. Ento deve est em nossas classes.
BO
Para separar essas regras de negcio, criada a BO (Bussiness
Object Objeto de negcio).
Nessa camada verificaremos todas as regras que devem ser
verificadas para um objeto poder chegar ao banco de dados.
BO
Analisando um projeto de vendas, onde um cliente pode efetuar
uma compra e que essa compra s dever ser feita se ele selecionar
algum item.
Dessa forma, a BO no poder permitir que o objeto compra
chegue ao banco se ele no estiver acompanhado de pelo menos um
objeto de item.
BO
Poderamos ainda verificar se o objeto cliente est sendo
informado, pois, tambm, no poder existir uma compra se no tiver
um cliente.
Essas so regras do negcio e que tm que ser verificadas para d
consistncia s informaes do banco de dados.
Criao da camada BO
Camada de Apresentao
Criao da camada Apresentao
Expresses Lambda
Expresses Lambda
As expresses lambda foram includas na plataforma
.NET para dar suporte a consultas LINQ onde as
clusulas Where so assim compiladas
como expresses lambdas.
so funes ou rotinas, sem nome, que calculam e
retornam um valor nico;
Sintaxe das Expresses Lambda
A sintaxe de uma expresso lambda lembra a de uma
funo padro. As diferenas so as seguintes:
Sintaxe das Expresses Lambda
Uma expresso lambda no tem um nome.
Expresses lambda no podem ter modificadores,
como Overloads ou Overrides.
Expresses lambda no usam uma clusula As para
designar o tipo de retorno da funo. Em vez disso, o
tipo inferido do valor que o corpo da expresso
lambda avalia. Por exemplo, se o corpo da expresso
lamba for Where cli.City = "Brazil", seu tipo de
retorno Boolean.
Sintaxe das Expresses Lambda
O corpo da funo deve ser uma expresso, no uma
instruo. O corpo pode consistir de uma chamada para
um procedimento de funo, mas no uma chamada para
um procedimento sub.
Nas expresses lambadas no existe uma
instruo Return. O valor retornado pela funo o valor
da expresso no corpo da funo.
Nas expresses lambdas no existe um instruo End
Function.
Sintaxe das Expresses Lambda
Ou todos os parmetros devem ter tipos de dados
especificados ou todos devem ser inferidos.
Parmetros opcionais e ParamArray no so
permitidos.
Parmetros genricos no so permitidos.
Sintaxe das Expresses Lambda
Ou todos os parmetros devem ter tipos de dados
especificados ou todos devem ser inferidos.
Parmetros opcionais e ParamArray no so
permitidos.
Parmetros genricos no so permitidos.