5 - ASP - NET CORE MVC - TerceiroApp - Parte 1
5 - ASP - NET CORE MVC - TerceiroApp - Parte 1
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.
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
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.
Método: getNome
Criando atributo
Método: definirPeso
(+) public
(#) protected
(String): retorna string “caracteres”
(void): não retorna nada
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
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”
Em alguns casos, um
método, além de receber
um parâmetro, também
pode passar!
2
https://learn.microsoft.com/pt-br/dotnet/csharp/tour-of-csharp/types
Parâmetros para criar um objeto:
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.
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.
Analogia
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
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
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
6
https://www.eduardopires.net.br/2013/06/asp-net-mvc-viewdata-viewbag-tempdata/