0% acharam este documento útil (0 voto)
13 visualizações21 páginas

5 - ASP - NET CORE MVC - TerceiroApp - Parte 1

O documento aborda a criação de uma aplicação utilizando o Visual Studio 2022, destacando a importância dos models na representação do negócio e manipulação de dados. Ele explica a estrutura de classes e objetos em C#, incluindo atributos, métodos, herança e o uso de ViewData, ViewBag e TempData para transferência de dados entre controladores e visualizações. Além disso, discute o conceito de Model Binding e a criação de views fortemente tipadas no ASP.NET Core MVC.

Enviado por

Isaque Sergio
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações21 páginas

5 - ASP - NET CORE MVC - TerceiroApp - Parte 1

O documento aborda a criação de uma aplicação utilizando o Visual Studio 2022, destacando a importância dos models na representação do negócio e manipulação de dados. Ele explica a estrutura de classes e objetos em C#, incluindo atributos, métodos, herança e o uso de ViewData, ViewBag e TempData para transferência de dados entre controladores e visualizações. Além disso, discute o conceito de Model Binding e a criação de views fortemente tipadas no ASP.NET Core MVC.

Enviado por

Isaque Sergio
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 21

Model

Até o momento só fizemos exemplos sem utilização do model. A responsabilidade dos models é
representar o negócio. Também é responsável pelo acesso e manipulação dos dados na sua
aplicação.

Criando Aplicação exemplo

Vamos criar uma aplicação para exemplificar o conteúdo deste material, projeto exemplo, após
abrir o Visual Studio 2022, clique na opção “Criar um projeto”:
Nome da aplicação

Local onde será criado

Um projeto deve sempre estar em


uma solução, mas uma solução pode
ter vários projetos, mas pode conter o
mesmo nome da aplicação.

Desmarca a configuração para HTTPS e clica em criar


O framework que é selecionado
automaticamente é a última versão
que estiver instalado na sua máquina,
mas se necessário você pode
selecionar uma outra versão.

Desmarque a opção Configurar HTTPS


Projeto criado!

Já é sabido que não é uma regra! Mas é uma boa prática testar a aplicação logo após cria-la, mesmo
que ainda não tenha incluído códigos, o motivo é para verificar se a IDE “plataforma” Visual
Studio está funcionando corretamente.
Se a IDE estiver funcionando corretamente, a aplicação irá rodar! Agora podemos iniciar os nossos
trabalhos.

Criando um model
Todos os modelos “Classes” devem ficar organizados na Models.
Para criar uma classe/ modelo, em Solution Explorer > AppTerceira> Models > Add > Class...
Você precisa clicar como botão direito sobre a model
Certifique-se de que está selecionado c# e Classe, em nome “Pessoa”:
A classe “Pessoa” é criada na pasta “Models”, com estrutura base, ou seja, vazia.

Uma classe possui uma definição de acesso, nome, atributos e métodos. Compare a entidade, tabela
lógica e a representação em diagrama de classe.

Classe: Revisão diagrama de Classe Classe: Diretoria

Atributo: - nome Atributo: -


(-) private descrição
Vamos criar uma View (-) default
(int): armazena
Clicando com o botão direito e depois adicionar exibição (int): armazena
números
inteiros
números inteiros
Exibição do Razor

Método: getNome
Criando atributo
Método: definirPeso
(+) public
(#) protected
(String): retorna string “caracteres”
(void): não retorna nada

Classe: Pessoa Física


Criando atributo
Parâmetros para criar um atributo na classe:
Tipo de dado permitido Nome do atributo/ propriedade

Tipo de acesso

Método de gravação
Método de leitura
Get & Set
As propriedades combinam aspectos de métodos e campos. Para o usuário de um objeto, uma
propriedade parece ser um campo. Acessar a propriedade requer a mesma sintaxe. Para o
implementador de uma classe, uma propriedade consiste em um ou dois blocos de código, que
representam um acessador get e/ou um acessador set. O bloco de código para o acessador get é
executado quando a propriedade é lida. O bloco de código para o acessador set é executado quando
um novo valor é atribuído à propriedade. Uma propriedade sem um acessador set é considerada
como somente leitura. Uma propriedade sem um acessador get é considerada como somente
gravação. Uma propriedade que tem os dois acessadores é leitura/gravação.

Modificadores de acesso
Os modificadores de acesso são palavras-chave usadas para especificar a acessibilidade
declarada de um membro ou de um tipo.
Modificador Funcionamento
Public O acesso não é restrito
Protected O acesso é limitado às classes ou tipos derivados da classe que a variável está
Internal O acesso é limitado ao conjunto de módulos(assembly) corrente
protected internal O acesso é limitado ao conjunto corrente ou tipos derivados da classe
recipiente
Private O acesso é limitado à classe que a variável está

Tipos de dados C#
C# é uma linguagem fortemente tipada. Todas as variáveis e constantes têm um tipo, assim como
cada expressão que é avaliada como um valor. 1

C# Type Valores possíveis de se armazenar

1
https://learn.microsoft.com/pt-br/dotnet/csharp/fundamentals/types/
https://www.juliobattisti.com.br/tutoriais/herbertgois/programandocsharp005.asp
http://www.linhadecodigo.com.br/artigo/995/serie-aprenda-csharp-tipos-de-dados-e-cts-common-type-
system.aspx
bool Verdadeiro ou Falso (Valores booleanos)
byte 0 a 255 (8 bits)
sbyte -128 a 127 (8 bits)
char Um caractere (16 bits)
decimal ±1.0 × 10−28 a ±7.9 × 1028 (128 bits)
double ±5.0 × 10−324 a ±1.7 × 10308 (64 bits)
float ±1.5 × 10−45 a ±3.4 × 1038 (32 bits)
int -2,147,483,648 a 2,147,483,647 (32 bits)
uint 0 a 4,294,967,295 (32 bits)
long –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (64 bits)
ulong 0 a 18,446,744,073,709,551,615 (64 bits)
object Qualquer tipo.
short -32,768 a 32,767 (16 bits)
ushort 0 a 65,535 (16 bits)
string Sequência de caracteres (16 bits por caractere)

Criando método
A seguir, características de um método:

Retorno
Pode não retornar nada “vazio”

Tipo de acesso Nome do método Parâmetros

O que o método deve realizar

Início e final do método

O método que tem um


retorno,
obrigatoriamente, tem
que ter o “return”
(“Lembre-se! O método que retorna uma IActionResult é chamado de IAction”)

Em alguns casos, um
método, além de receber
um parâmetro, também
pode passar!

Revisão Classes e Objetos


As classes são os tipos do C# mais fundamentais. Uma classe é uma estrutura de dados que
combina ações (métodos e outros membros da função) e estado (campos) em uma única unidade.
Uma classe fornece uma definição para instâncias da classe criadas dinamicamente, também
conhecidas como objetos. As classes dão suporte à herança e polimorfismo, mecanismos nos
quais classes derivadas podem estender e especializar classes base.2
Criando um objeto
As instâncias de uma classe compartilham o mesmo conjunto de atributos, embora sejam
diferentes quanto ao conteúdo desses atributos. Por exemplo, a classe “Pessoa" descreve os
atributos comuns a todas as instâncias da classe “Pessoa". Os objetos dessa classe podem ser
semelhantes, mas variam em dados tais como "nome" e “Tipo".

Para o nosso exemplo, vamos utilizar a IAction “Privacy” do Controller Home:

2
https://learn.microsoft.com/pt-br/dotnet/csharp/tour-of-csharp/types
Parâmetros para criar um objeto:

Tipo da Nome do objeto Instanciando


classe

Sinal de atribuição Classe Instanciada

Lembre-se! Para que a classe “Pessoa” fique visível na classe “HomeController”, deve conter a
referência.
O Visual Studio consegue visualizar e
mostrar em um pop-up os atributos e
métodos da classe/objeto.

(Para acessar os métodos ou atributos,


utiliza-se (.) ponto! )

Erro de Compilação
Se tentarmos realizar um teste neste momento, ocorrera um erro! Quanto esta janela aparecer,
você deve clicar no botão não, porque se clicar em sim a plataforma irá rodar a versão anterior,
ou seja, a última depuração realizada com sucesso.

Você deve aprender a interpretar, entender e corrigir os erros. Veja que na parte inferior do
Visual Studio existe uma janela que mostra uma lista de erros, com “código”, “descrição”,
“Projeto”, “arquivo”, “linha” e “estado”.

Na maioria das vezes a descrição apresenta uma possível solução, caso isso não ocorra, podemos
pesquisar pelo código do erro.
Veja a seguir os detalhes da atribuição de dados nas propriedades do objeto pessoa.

Tipo de retorno Nome do método


Nome do objeto
Tipo de acesso
Passagem de parâmetros
Início do método
Ponto e virgula marca o
Tipo da Classe
Classe que será
Sinal de atribuição
Instanciando uma classe
Fim do método
Aspas duplas para atribuir um dado do
tipo string, aspas simples para char.
O ponto acessa as propriedades e
métodos do objeto

Revisão Classe & Objeto


Classe
Classe é um conjunto de objetos distintos, porém com as mesmas características e
comportamentos. A classe é uma abstração de entidades existentes no mundo real.
Objeto
Objeto é uma instância ou modelo derivado de uma classe. Portanto objeto é a representação de
qualquer coisa, real ou abstrata, do mundo real que irá ser manipulado ou armazenado pelo
sistema.
O objeto sempre será uma instância ou um elemento de uma classe.

Analogia

A classe é um modelo, um planejamento, tal como a maquete de


uma casa.

O objeto seria a classe materializada, ou seja, um objeto com os


devidos atributos qualificados: uma casa rosa, térrea, com
garagem, valor venal de $ 1.000.000,00, etc.
View Tipada
Ao contrário do que acontece no código do Controller, nas Views não temos nenhum auxílio da
IDE. Isso ocorre, pois, as variáveis enviadas para a view através da ViewBag são dinâmicas, ou
seja, o uso da variável
só é verificado na execução do código e não na compilação. No ASP.NET Core MVC esse
problema é resolvido através de Views Fortemente Tipadas (Strongly Typed View). 3
Para utilizarmos uma view fortemente tipada, precisamos enviar a variável para a view de uma
forma diferente.

Passando o objeto pessoa como


parâmetro para a View Privacy

Model Binding é o processo de criar objetos .Net a partir de dados enviados pelo browser.
Mesmo sem saber, estamos usando Model Binding toda vez que implementamos actions que
recebem parâmetros.
Toda vez que uma requisição do tipo “/SeuController/SuaAction/123” é recebida, o framework
MVC precisa tratar essa requisição de forma que possa passar valores apropriados nos
parâmetros das actions.
De forma sucinta, esse tratamento inicia-se com o componente action invoker, que, como o
próprio nome diz, é o responsável por invocar action methods. Antes de chamar a action, o
action invoker verifica cada parâmetro, e encontra o model binder correspondente para cada tipo
de parâmetro.
Uma variável recebida pelo método da classe controladora é instanciada e preenchida por um
componente do ASP.NET MVC conhecido como Model Binder.
Os model binders do ASP.NET MVC são componentes que convertem os parâmetros da
requisição para objetos. Podendo ser tipos simples ou uma instância de uma classe, é o model
binder que realiza a conversão de tipos. 4

3
https://learn.microsoft.com/pt-br/aspnet/mvc/overview/views/dynamic-v-strongly-typed-views
4
https://robsoncastilho.com.br/2012/05/06/asp-net-mvc-model-binding-parte-1-defaultmodelbinder/
Vamos então utilizar o @model para acessar as informações do objeto pessoa “Referencia”:

Indica que será utilizado Indica qual o modelo que irá ser utilizado.
um modelo “Objeto” É o caminho onde encontra-se a classe/ modelo.

Para utilizar o objeto pessoa passado como parâmetro para a View privacy, usamos o @Model (o
‘M’ deve ser maiúscula), para indicar a referência é minúsculo. ~~

Objeto pessoa

Propriedade do
objeto pessoa

Vamos testar
Herança de Classe
As classes dão suporte completo à herança, uma característica fundamental da programação
orientada a objetos. Ao criar uma classe, você pode herdar de outra interface ou classe que não
está definida como selada, e outras classes podem herdar de sua classe e substituir seus métodos
virtuais.
A herança é realizada usando uma derivação, o que significa que uma classe é declarada usando
uma classe base, da qual ela herda o comportamento e os dados.
Uma classe base é especificada ao acrescentar dois pontos e o nome de classe base depois do nome
de classe derivada, veremos exemplo a seguir.
Vamos adicionar nova classe

Vamos dar o nome de Juridica


Herança

Classe a ser herdade

Agora quando criarmos um objeto instanciando a classe “Juridica”, além dos seus atributos, ela
também tem todos os atributos e métodos da classe “Pessoa”.
Vamos criar uma IAction e uma View “Juridica” para receber o objeto e mostrar seus dados:
Vamos adicionar uma View para exibir os dados da PJ

Empty
Vamos testar

Agora vamos fazer um exemplo com a classe pessoa física.


Primeiro vamos criar a classe:
Você percebeu que a atribuição dos
dados neste objeto foi diferente?

Compare a atribuição dos dois objetos:

Compare

Perceba que no objeto pessoa, em new aparece (...) três pontinhos, se passar o mouse nele uma
sugestão de simplificação é apresentada, que é exatamente como fizemos com o objeto pj! Mas a
pergunta que devemos fazer é qual e quando utilizar uma ou outra.
Para finalizar o exemplo pessoa fisica, vamos utilizar a view index.

Revisão e Herança
A herança, assim como o encapsulamento e o polimorfismo, é uma das três principais
características da programação orientada ao objeto. A herança permite que você crie classes que
reutilizam, estendem e modificam o comportamento definido em outras classes. A classe cujos
membros são herdados é chamada classe base e a classe que herda esses membros é chamada
classe derivada. Uma classe derivada pode ter apenas uma classe base direta. No entanto, a herança
é transitiva. 5
Compare e analise os modelos e classes criadas:

5
https://learn.microsoft.com/pt-br/dotnet/csharp/fundamentals/object-oriented/inheritance
https://www.youtube.com/watch?v=PoC3unO2bX8
BD – Modelo conceitual Diagrama de classes

Revisão ViewData, ViewBag e TempData


ViewData e ViewBag são usados para o mesmo propósito - para transferir dados do controlador
para a visualização. ViewData não é senão um dicionário de objetos e é acessível por string como
chave. ViewData é uma propriedade do controlador que expõe uma instância da classe
ViewDataDictionary.
ViewBag é muito semelhante ao ViewData. ViewBag é uma propriedade dinâmica (palavra-chave
dinâmica que é introduzida no .NET framework 4.0). ViewBag é capaz de definir e obter valor
dinamicamente e capaz de adicionar qualquer número de campos adicionais sem convertê-lo para
fortemente digitado. O ViewBag é apenas um wrapper em torno do ViewData.
TempData é um dicionário derivado da classe TempDataDictionary. TempData é um dado
armazenado como sessão ao vivo por um curto período. TempData mantém dados para o horário
da solicitação HTTP, o que significa que ela contém dados entre duas solicitações
consecutivas. TempData nos ajuda a transferir dados entre controladores ou entre
ações. TempData internamente usa variáveis de sessão. Observe que TempData só funciona
durante a solicitação atual e subsequente. Geralmente é usado para armazenar mensagens
únicas. Com a ajuda do método TempData.Keep (), podemos manter o valor no objeto TempData
após a conclusão da solicitação. 6
Exemplo com ViewBag.

6
https://www.eduardopires.net.br/2013/06/asp-net-mvc-viewdata-viewbag-tempdata/

Você também pode gostar