Buscar

Livro Texto - Unidade IV pdf Desenvolvimento de Software para internet

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
163
Unidade IV
7 ESTAÇÃO JAVASCRIPT
7.1 JavaScript
7.1.1 Introdução ao JavaScript
A linguagem de programação JavaScript pode ser utilizada em conjunto com o HTML e o CSS na 
construção de páginas web. Trata-se de uma linguagem muito conhecida, capaz de modificar conteúdos 
HTML e estilos CSS de forma dinâmica. Com ela, podemos criar diversos conteúdos, como controles de 
mídias, gráficos e animações, que fornecem interatividade e versatilidade às nossas páginas.
Em arquivos HTML, podemos inserir trechos de código JavaScript tanto na seção <body> quanto na 
seção <head> do documento. Esses códigos devem ser inseridos dentro das marcas <script> e </script> 
e, dessa forma, são interpretados pelo navegador como trechos JavaScript.
Da mesma forma que podemos criar um arquivo de estilos CSS externo que se comunica com um 
arquivo HTML, podemos trabalhar com scripts. Arquivos externos JavaScript possuem extensão .js e 
são práticos quando várias páginas utilizam os mesmos scripts. Nos exemplos a seguir, no entanto, 
utilizaremos scripts inseridos no próprio código HTML, para facilitar nosso entendimento.
7.1.2 Relembrando conceitos de linguagens de programação
Como em outras linguagens de programação, o JavaScript trabalha com variáveis. Uma variável é 
um espaço de memória reservado para abrigar determinado dado. Para criar variáveis em JavaScript, 
podemos utilizar o comando var. Também podemos declarar constantes por meio do comando const. 
Por exemplo, na linha a seguir, declaramos uma variável. No caso, o nome da variável é nomeUsuario, 
e o valor atribuído a ela é “Ana”.
var nomeUsuario = “Ana”;
Também fazemos uso de funções. Uma função é um conjunto de instruções que executa uma tarefa 
específica, sendo que essa execução ocorre quando a função é chamada.
Para declararmos uma função em JavaScript, podemos utilizar o termo function, seguido do nome 
da função com seus parâmetros entre parênteses. Os parâmetros são variáveis que aguardam os dados 
que passamos à função quando ela é chamada. Entre chaves, escrevemos o código que compõe o 
bloco de instruções da nossa função. Por exemplo, a função a seguir, denominada somanum, retorna a 
variável soma, que abriga o resultado da soma entre os parâmetros num1 e num2.
Unidade IV
164
function somanum(num1, num2){
 var soma = num1 + num2;
 return soma;
}
Observe o código apresentado na figura a seguir.
Figura 145 – Exemplo de código JavaScript com uma função declarada
Dentro do elemento <script>, posicionamos a função somanum. Na linha 16, utilizamos o comando 
document.write(), que imprime o conteúdo em tela, para exibir o retorno da função somanum. Observe 
que chamamos a função no formato somanum(5, 11). Com isso, passamos os argumentos 5 e 11 para os 
parâmetros num1 e num2, respectivamente. Dessa forma, a variável num1 assume valor 5, e a variável 
num2 assume valor 11. O arquivo HTML, quando executado no navegador, é apresentado conforme a 
figura seguinte.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
165
Figura 146 – Resultado da execução do exemplo
Como em qualquer linguagem de programação, também podemos utilizar:
• operadores (aritméticos, lógicos, de atribuição etc.);
• estruturas de decisão (como o if);
• estruturas de repetição (como o laço for).
No entanto, quando tratamos de JavaScript, os objetos são o centro do seu desenvolvimento: quase 
tudo é um objeto ou age como um objeto. Assim, no próximo tópico, iremos examinar a criação de 
objetos em JavaScript.
7.1.3 Objetos JavaScript
No contexto do JavaScript, um objeto nada mais é do que uma coleção de propriedades. Propriedades, 
por sua vez, são associações entre nomes e valores. Antes de analisarmos qualquer código JavaScript, 
vamos raciocinar sobre isso com base na tabela do exemplo de aplicação a seguir.
Exemplo de aplicação
Tabela 2 – Alunos alocados no banco de dados
Aluno
Nome da propriedade: Valor da propriedade:
Idade: 33
Gênero: Masculino
A palavra “aluno” na tabela é apenas um rótulo para o grupo de nomes de propriedades e valores 
correspondentes que compõem exatamente o que é um aluno. JavaScript, no entanto, não fala em 
tabelas, e sim em objetos. Os exemplos poderão ser desenvolvidos no Visual Studio Code, no Microsoft 
Visual Studio, no Sublime Text ou no editor de sua preferência.
Unidade IV
166
Figura 147 – Exemplo de código JavaScript
Mantenha este estudo em primeiro plano: os objetos são apenas recipientes para propriedades, em 
que cada uma detém um nome e um valor. Podemos acessar as propriedades de um objeto utilizando a 
notação de ponto, na seguinte sintaxe:
nomeDoObjeto.nomeDaPropriedade
No nosso exemplo, aluno é um objeto JavaScript que nós criamos na linha 6, fornecendo as suas 
propriedades nas linhas 8 e 9.
Até o momento, o objeto aluno que estamos estudando tem apenas informações estáticas. Como 
estamos lidando com uma linguagem de programação, queremos programar nosso objeto para 
realmente tentar fazer alguma coisa; caso contrário, tudo o que temos seria um banco de dados 
semelhante ao JSON.
Para dar vida ao objeto aluno, precisamos adicionar um método, que possibilitará a execução de uma 
função. Em JavaScript, um método é uma propriedade de um objeto que é também uma função. Ou 
seja, um método é uma função associada a um objeto, cuja intenção é simplesmente operar no objeto 
em que a função está contida.
Utilizamos o comando document.write() anteriormente em nosso livro-texto. Vamos agora entender 
sua constituição. O próprio arquivo HTML é considerado um objeto do tipo document. Para o objeto 
document, o Javascript oferece o método write(), que possui a função de imprimir em tela. Dessa forma, 
a chamada do método pode ser feita obedecendo à sintaxe:
nomeDoObjeto.nomeDoMetodo
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
167
Portanto, para chamar o método write() do objeto document, escrevemos document.write().
O comando console.log(), visto no nosso exemplo anterior, também chama o método log() do objeto 
console. Nesse caso, são enviados dados para o console do navegador, que podem ser visualizados (se 
você está utilizando o Chrome, aperte F12 e clique em “Console” para visualizar os dados).
Vamos voltar ao exemplo da tabela anterior. Se porventura atualizarmos a tabela com um método 
getGenero, teremos o que segue.
Tabela 3 – Método getGenero apresentado na classe aluno
Aluno
Propriedade Valor da propriedade
Idade 33
Gênero Masculino
getGenero Retornar o valor do sexo
O método getGenero é uma propriedade do objeto aluno (conforme apresentado na figura a seguir), 
utilizado para retornar um dos outros valores de propriedade de aluno: o valor masculino armazenado 
na propriedade gênero. Assim, podemos avaliar que, sem métodos, nosso objeto não faria muito, exceto 
armazenar propriedades estáticas.
Figura 148 – Método getGenero apresentado no JavaScript
Unidade IV
168
 Saiba mais
A JavaScript Object Notation (JSON), notação de objetos JavaScript, é 
considerada uma formatação leve de alternância de dados. Leia sobre o 
assunto na indicação a seguir.
Disponível em: https://bit.ly/3LX9Oql. Acesso em: 10 maio 2022.
Utilizamos a função construtora Object() para produzir um objeto vazio que chamamos de aluno. 
Podemos pensar nas funções construtoras como um modelo para produzir objetos predefinidos. Dessa 
forma, as funções construtoras servem de molde para a criação de novos objetos no JavaScript.
Aluno é um objeto construído a partir do construtor Object(). Então, chamamos aluno de Object(). 
O que realmente precisamos definir de maneira clara é que, além da criação de um Object() simples 
como aluno, a maioria dos valores expressos em JavaScript são também objetos.
Vamos considerar que o objeto aluno criado a partir da função construtora Object() não seja 
realmente distinto de um objeto string criado a partir da função construtora String().
Figura 149 – Exemplo de construtor JavaScript
Como podemos observar no exemplo anterior, myObjecte myString são objetos. Dessa forma, 
ambos podem ter suas propriedades, herdá-las, e são produzidos a partir de uma função construtora. 
A variável myString, que acopla o valor da string foo, parece ser a mais simples possível, porém de 
forma surpreendente possui uma estrutura de objeto sob sua superfície. O resultado da execução, no 
console do navegador, pode ser visto na figura a seguir.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
169
Figura 150 – Console do navegador após execução do exemplo de construtor JavaScript
Se examinarmos os dois objetos produzidos, vamos perceber que eles são objetos idênticos em 
substância, mas não em tipo. O mais importante é que possamos visualizar que o JavaScript utiliza 
objetos para expressar valores, conforme apresentado na figura a seguir.
Figura 151 – Exemplo de construtor JavaScript: pessoa
Unidade IV
170
A função construtora Pessoa() definida pelo usuário pode produzir objetos pessoa. Logo, a função 
construtora String() nativa pode produzir objetos string. O construtor Pessoa() não é inferior e não é 
mais ou menos maleável do que o construtor String() nativo ou qualquer um dos construtores nativos 
utilizados no JavaScript.
É importante observar que a função construtora Object() e o novo construtor Pessoa(), mostrados no 
exemplo de código anterior, podem nos dar resultados idênticos, mas ambos podem produzir um objeto 
semelhante, com as mesmas propriedades e os mesmos métodos de propriedade.
7.1.4 Construtores JavaScript criam e retornam instâncias de objetos
Conforme já abordado, o papel de uma função construtora é possibilitar o desenvolvimento de vários 
objetos que compartilham, por exemplo, certas qualidades e certos comportamentos. Basicamente, 
uma função construtora é um “cortador de frutas” para produzir objetos que possuem propriedades e 
métodos de propriedade padronizados.
Afirmar que um construtor nada mais é do que uma função é correto, a menos que essa função seja 
chamada usando a nova palavra-chave, como a nova String (foo). Quando isso tende a acontecer, uma 
função assume uma atribuição especial, e o JavaScript a trata como especial, definindo, assim, o valor 
desse elemento para a função no novo objeto que está sendo construído.
Além desse comportamento especial, a função retornará o objeto recém-criado por padrão, em 
vez do valor false. O novo objeto retornado da função pode ser considerado uma instância da função 
construtora que a constrói.
Por exemplo, podemos considerar o construtor Pessoa() novamente, mas, desta vez, gostaríamos que 
acompanhasse a leitura dos comentários no exemplo de código com atenção, pois destacam o efeito da 
nova palavra-chave, conforme apresentado a seguir.
Figura 152 – Exemplo de construtor
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
171
A construção do código anterior utiliza uma função construtora definida pelo usuário, por exemplo, 
Pessoa(), para criar o objeto aluno. Isso não é diferente do construtor Array(), que cria um objeto Array(), 
conforme apresentado a seguir.
Figura 153 – Exemplo de código com Array
Em JavaScript, a maioria dos valores envolve objetos que foram criados, ou instanciados, a partir de 
uma função construtora. Um objeto retornado de um construtor é denominado de instância.
 Observação
Array, em tecnologia, pode ser definido como um arranjo de uma 
estrutura de dados capaz de proporcionar o armazenamento de uma coleção 
de elementos de tal maneira que cada um possa ser facilmente identificado 
por pelo menos um índice ou uma chave.
7.1.4.1 Os construtores de objetos JavaScript nativos
A linguagem JavaScript tem por definição nove construtores de objetos nativos (ou internos), sendo 
que esses objetos são utilizados pelo JavaScript para desenvolver a linguagem. Por construção, podemos 
dizer que esses objetos são utilizados para expressar valores de objetos no código JavaScript, além de 
organizar diversos recursos da linguagem.
Logo, os construtores de objetos nativos podem ser multifacetados, na medida em que produzem 
objetos, mas também são aproveitados para facilitar muitas das convenções de programação da 
linguagem, como funções que são objetos criados a partir do construtor Function(). Também são 
utilizados para gerar outros objetos quando chamados como funções de construtor utilizando a 
nova palavra-chave.
Unidade IV
172
Os nove construtores de objetos nativos que vêm predefinidos com JavaScript são os que seguem.
• Number()
• String()
• Boolean()
• Object()
• Array()
• Function()
• Date()
• RegExp()
• Error()
 Saiba mais
Recomendamos a leitura dos nove construtores de objetos nativos 
indicada a seguir.
STANDARD built-in objects. JavaScript Reference. Mozilla, 2022. 
Disponível em: https://mzl.la/3M5xY1Q. Acesso em: 10 maio 2022.
O JavaScript é constituído basicamente a partir desses nove tipos de objetos, além de valores 
primários de cadeia, número e booleano.
7.1.5 Funções a partir do construtor Function()
Já abordamos que uma função é um contêiner de instruções de código que podem ser chamadas 
utilizando o operador parênteses (). Logo, os argumentos podem ser trafegados entre parênteses 
durante a invocação, para que as instruções na função possam acessar determinados valores quando 
ela é invocada.
No exemplo apresentado na figura a seguir, identificaremos a construção de duas versões de um 
objeto de função addNumbers, uma utilizando o construtor Function() e outra utilizando o padrão 
literal mais comum. Ambas estão esperando dois parâmetros, ou seja, em cada caso invocamos a função 
passando parâmetros no operador parênteses ().
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
173
Figura 154 – Exemplo de aplicação do addNumbers
Uma função pode ser utilizada para retornar um valor, construir um objeto ou ser um mecanismo 
destinado simplesmente a executar o código. Ou seja, o JavaScript tem uma utilidade para funções, mas, 
na sua maneira mais básica, uma função é simplesmente um escopo exclusivo de instruções executáveis.
O construtor Function() utiliza-se de um número indefinido de parâmetros, mas o último parâmetro 
esperado pelo construtor Function() é uma sequência que contém instruções que compõem o corpo 
da função. Quaisquer parâmetros trafegados para o construtor antes do último estarão disponíveis 
para a função que está sendo criada, ou seja, também é possível enviar vários parâmetros como uma 
sequência separada por vírgula.
No exemplo apresentado na figura a seguir, estudaremos o uso do construtor Function() com os 
padrões mais comuns de instanciar um objeto de função.
Figura 155 – Exemplo de aplicação de function
Unidade IV
174
As funções podem ser canceladas a qualquer instante durante a chamada, utilizando-se, para isso, a 
palavra-chave return com ou sem um valor. No exemplo apresentado na figura a seguir, identificaremos 
o cancelamento da função de adição se os parâmetros forem indefinidos ou não forem um número.
Figura 156 – Exemplo de cancelamento de function
7.1.6 Aplicações do método getElementById()
O JavaScript possui muitas funcionalidades. Entre as funcionalidades mais interessantes, 
temos o método getElementById(), que nos possibilita modificar elementos HTML a partir de seus 
identificadores. Esse método é muito funcional quando utilizado em eventos de clique de elementos, 
como botões. Acompanhe o exemplo da figura a seguir.
Figura 157 – Exemplo de utilização do método getElementById()
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
175
No exemplo, temos um título <h2>, para o qual foi designado o ID th2, no corpo do documento 
HTML. Esse elemento será modificado a partir dos cliques nos dois botões criados. Nos botões, vemos a 
propriedade onclick, que recebe o valor designado entre aspas. Vamos examinar o valor do primeiro botão.
document.getElementById(“th2”).innerHTML = “Olá!”
O termo “document” refere-se ao objeto, que, no caso, é o próprio documento HTML. O método 
getElementById(“th2”) procura o elemento existente no objeto que possui o ID igual a th2.Depois, 
temos a propriedade innerHTML, que acessa o conteúdo interno de um elemento. Logo, o que fazemos 
com esse comando é modificar para “Olá” o conteúdo interno do elemento que possui o ID th2. Essa 
ação ocorrerá quando o botão for acionado pelo usuário. Ao executar o arquivo no navegador, vemos 
o que é apresentado a seguir.
Figura 158 – Resultado da execução do exemplo utilizando o método getElementById()
Ao clicar no botão “Clique para Olá”, o texto do título <h2> é modificado para “Olá!”. Ao clicar no 
botão “Clique para Oi”, o texto é modificado para “Oi!”.
No exemplo a seguir, vamos modificar o estilo CSS adotado em um parágrafo. Avalie o código 
apresentado na figura.
Figura 159 – Exemplo de utilização do método getElementById() para mudança de estilo
Unidade IV
176
Perceba que, no elemento <p>, temos um estilo CSS inline, que ajusta a cor do conteúdo do parágrafo 
para azul. O ID desse elemento é parag. O papel dos botões, no caso, é justamente modificar o valor 
da propriedade style do elemento cujo ID é igual a parag. Logo, aqui, não modificamos o conteúdo em 
si, como fizemos no exemplo anterior, mas sim o estilo do conteúdo do elemento. Ao executarmos o 
arquivo, vemos a tela a seguir.
Figura 160 – Resultado da execução do exemplo de mudança de estilo
Ao clicar no botão “Clique para verde”, o texto do parágrafo passa a ser exibido em verde. Ao clicar 
no botão “Clique para vermelho”, o texto passa a ser exibido em vermelho.
No exemplo seguinte, utilizamos funções criadas por meio do construtor Function(). As funções 
devem ser descritas dentro da tag <script>. Acompanhe a seguir.
Figura 161 – Exemplo de utilização do método getElementById() dentro de funções
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
177
No caso, também modificamos o estilo, mas escolhemos mexer na cor de fundo do elemento <div>, 
que se encontra no corpo do documento HTML. Ao clicar em um botão, chamamos a função designada 
na propriedade onclick. Ao executar o arquivo, vemos a tela seguinte.
Figura 162 – Resultado da execução do exemplo com funções
Ao clicar no botão “Clique para azul”, a cor de fundo do elemento <div> é modificada para azul. Ao 
clicar no botão “Clique para verde”, a cor de fundo é modificada para verde, conforme demonstrado a 
seguir. No caso, a cor do conteúdo (a cor do texto “Divisão div”) mantém-se inalterada.
Figura 163 – Resultado após clicar no botão “Clique para verde”
7.1.7 Array
Um array (matriz) é uma lista ordenada de valores, normalmente criada com a finalidade de 
percorrer valores indexados, iniciando com o índice zero. O que precisamos saber é que um array em 
posição de objeto possui uma definição de nomes e de propriedades associada a valores em ordem não 
numérica também.
Essencialmente, as matrizes utilizam números como uma chave de pesquisa, enquanto os objetos têm 
nomes de propriedades definidas pelo usuário. O JavaScript não possui matrizes associativas verdadeiras, 
mas os objetos podem ser utilizados para obter essa funcionalidade de matrizes associativas.
No exemplo apresentado na figura a seguir, iremos armazenar quatro sequências de caracteres no 
myArray, que poderemos acessar utilizando um índice numérico.
Unidade IV
178
Figura 164 – Exemplo de aplicação de array
Podemos passar os valores de uma instância de matriz para o construtor como parâmetros separados 
por vírgula. O construtor Array() pode levar aproximadamente até 4.294.967.295 parâmetros.
No entanto, se apenas um parâmetro for enviado ao construtor Array() e esse valor for um número 
inteiro, ele será utilizado para realizar a configuração do comprimento da matriz e não será utilizado 
como um valor contido na matriz, conforme apresentado a seguir.
Figura 165 – Exemplo de aplicação de array com parâmetros
7.2 Uso de roteamento de soluções MVC
O MVC (model → view → controller) pode ser considerado um pattern de arquitetura para o 
desenvolvimento de aplicações web. Ele pode estabelecer a segregação de três camadas, model, view e 
controller, sendo que se pode considerar que a camada model corresponde a dados e regras determinadas 
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
179
para a manipulação de todos os itens. Todas as estruturas são manipuladas inicialmente por controllers, 
servindo como base para a implementação e apresentação de dados pela camada view.
 Observação
Os estudos de diagramação UML e de diagrama de sequência agregam 
elementos para o entendimento do conceito de aplicação MVC, pois são 
recursos que se complementam na análise e no desenvolvimento de 
aplicações em camadas web.
A camada controller tem for finalidade tratar todas as requisições, sendo, assim, efetuada por meio 
de métodos declarados na mesma classe controller. Por fim, a camada view tem o objetivo de centralizar 
todas as ações e apresentá-las dentro da página .aspx.
Pode-se entender todo o fluxo da maneira exposta a seguir.
• A camada de apresentação apresenta elementos da interface do cliente do site e encapsula 
toda a estrutura lógica, o que inclui desde a interação até a integração de cliente e as regras 
de negócio.
• A camada de controle, também conhecida como camada de negócio, retorna ao cliente o resultado 
de toda a regra de negócio encapsulada na classe (C#).
• A camada de acesso a dados detém todos os métodos e todas as conexões inseridas, que retornam 
para a camada de negócio toda a execução efetuada em banco de dados, feita em classe (C#).
 Observação
Para o desenvolvimento de todas as classes (de controle ou de acesso 
a dados ou modelo), recomendamos a utilização de classes C# e o uso de 
conhecimentos relativos à programação orientada a objetos.
A arquitetura de três camadas também pode ser estudada como uma solicitação enviada ao servidor, 
na qual a interface com o cliente efetua processos de regras de negócio a fim de armazenar dados que 
são desenvolvidos e armazenados de maneira independente, ou até mesmo em plataformas separadas, 
conforme apresentado a seguir.
Unidade IV
180
Figura 166 – Exemplo de aplicação MVC
Após a seleção do template (figura anterior), será criado o projeto utilizando a arquitetura ASP.NET MVC, 
apresentado nas figuras a seguir.
Figura 167 – Identificação de projeto MVC no Visual Studio .NET
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
181
Figura 168 – Escolha de template dentro do Visual Studio
 Saiba mais
Recomendamos a leitura do seguinte livro-texto, especialmente o 
tópico que trata de back-end, que usaremos como linguagem base C#.
MARINHO, S. L. Programação Orientada a Objetos II. São Paulo: 
Editora Sol, 2020.
Sugerimos também a instalação da última versão do Visual Studio, 
para que o exemplo apresentado em Web Forms possa ser executado com 
sucesso. Para a verificação da última versão do Microsoft Visual Studio, 
consulte o link indicado a seguir.
DOWNLOADS. Visual Studio. Microsoft, 2022. Disponível em: 
https://bit.ly/38kvez5. Acesso em: 10 maio 2022.
Atualmente, a maioria dos projetos é desenvolvida utilizando a arquitetura MVC, em virtude da 
segregação de código e, principalmente, do paralelismo que é feito com a parte de análise do projeto.
O conceito de MVC vem ao encontro de alguns diagramas da UML (tais como o diagrama de caso de 
uso, sequência e classe), que são de extrema importância para o desenvolvimento de qualquer aplicação.
Unidade IV
182
 Observação
No contexto aqui analisado, o estudo de diagramas UML é essencial. Por 
exemplo, os conceitos de diagrama de caso de uso, diagrama de sequência, 
classe e atividade são a base de todo o desenvolvimento web efetuado 
neste livro-texto.
7.3 Razor
O Razor agrega uma série de características importantes que possibilitam, por intermédio de um 
objetivo natural, a construção de páginas com a estrutura de ASP.NET MVC. No entanto, essa ideia 
nasceu a partir da versão 3.
Uma das características importantes construídas no Razor é que ele foi desenvolvido para ser 
expressivo, compacto e ágil. A intenção foi construir um mecanismo capazde reduzir ao máximo o 
número de caracteres necessários para a codificação de uma página aspx.
O View Engine Default do ASP.NET (aspx) é conhecido por possuir uma sintaxe muito 
próxima à do HTML, com abertura e fechamento de tags em páginas aspx. No Razor, não 
conseguimos identificar esse item, reduzindo, portanto, a quantidade de texto necessária 
para a codificação de itens contidos em controle, ou parte da página aspx.
Tratando exclusivamente da redução significativa de caracteres, do ponto de vista do 
programador da página aspx, todo o processo passa a ficar muito mais eficaz, o que significa 
que se perde menos tempo na codificação das páginas aspx. Ao contrário da maioria dos 
View Engines, com o Razor não é necessário ficar desenvolvendo abertura e fechamento 
dos blocos de código. O parser do Razor é inteligente e capaz de separar o código HTML do 
código C# ou VB.NET, por exemplo.
Todo esse universo garante um código eficaz e limpo, não só facilitando a sua escrita 
inicial, mas também deixando fácil a manutenção posterior nessas páginas aspx.
Outra característica muito importante do Razor é a sua facilidade de aprendizagem. 
Podemos considerar como um dos pontos a sua composição de HTML e C# (ou vb.net). 
Qualquer programador .NET com conhecimento básico em HTML conseguirá com grande 
facilidade capturar a estrutura do Razor e, em pouco tempo, terá conhecimento para 
escrever páginas aspx com o novo template.
Outro ponto importante do Razor é o fato de ele não ser uma nova linguagem, ou seja, 
ao contrário de todos os View Engines existentes, o Razor utiliza sua própria linguagem 
C#/VB, o que torna sua aderência ainda mais efetiva e eficaz.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
183
O Razor não depende exclusivamente de nenhuma ferramenta para ser escrito, ou seja, 
não dependeria também do Visual Studio. É possível desenvolver páginas com o Razor 
em qualquer editor de texto, até mesmo no Notepad, caso seja necessário utilizar essa 
ferramenta para tal desenvolvimento. 
Ao escolher utilizar o Razor no Visual Studio, o programador consegue ganhar todos 
os recursos de intellisense e statement completion (recurso que completa palavras do 
código que podem ser automaticamente identificadas). Com esses recursos, o processo de 
desenvolvimento de páginas se torna ainda mais rápido e eficiente.
Outro ponto interessante do Razor é que ele é totalmente amigável para efetuar 
testes, trabalhando com testes unitários. Com o Razor, é possível criar testes unitários para 
verificação das views da aplicação web, sem que haja necessidade de conhecer o controller 
que renderiza a view e vice-versa.
Mesmo assim, ele passa a ser apenas mais uma escolha a se fazer ao criar as views de 
uma aplicação web. O View Engine Default do ASP.NET sempre irá funcionar e ser uma 
grande opção.
Adaptado de: Sendin (2009).
7.4 Rest
Podemos definir representational state transfer (Rest) como um estilo de arquitetura que se assenta 
em uma série de princípios. A ascensão do Rest nos últimos anos está ligada ao design da API que a 
maioria dos aplicativos da web oferece para estender suas funcionalidades. Mesmo que não esteja 
vinculado ao HTTP, ele geralmente está associado aos aplicativos da web. O HTTP se encaixa bem com 
os seus princípios.
Os princípios do Rest são: interface uniforme, sem estado, armazenável em cache, cliente-servidor, 
sistema em camadas e código sob demanda.
Essa é uma breve introdução à arquitetura Rest. O que precisamos entender é o princípio básico 
e uma imagem geral do aplicativo. A ideia do Rest sobre HTTP é usar a funcionalidade do protocolo o 
máximo possível, para que não tenhamos que reinventar a roda.
Um recurso pode ser uma postagem em um blog, um cliente, um documento e, em geral, qualquer 
coisa que desejamos expor. Um recurso tem um identificador, como um registro em um banco de 
dados tem uma chave primária. Da mesma maneira, um recurso possui um URI que identifica o próprio 
recurso, que não é uma representação do recurso que pode assumir diferentes formatos. É apenas um 
identificador que podemos usar para acessar o recurso.
Podemos solicitar o recurso com o URI, e o que obtemos é uma representação desse recurso solicitado 
em um formato específico. O formato é negociado entre o cliente e o servidor e pode ser qualquer 
Unidade IV
184
coisa, desde os XML e JSON mais usados até HTML, PNG, CSV ou outros formatos binários. Com a 
representação do recurso, o cliente pode manipular o estado e operar com o recurso usando o servidor, 
se tiver os direitos para fazê-lo.
O servidor nunca deve armazenar informações sobre os clientes. Isso significa que, quando uma 
solicitação chega ao servidor, o servidor carrega o recurso do armazenamento (geralmente um banco 
de dados) e envia de volta a representação ao cliente. Esse é o estado do recurso. Se um segundo 
depois o estado no armazenamento for alterado devido a uma nova solicitação que chega, o cliente 
não deve saber.
Sem estado também significa que o servidor nunca deve usar sessões ou outros mecanismos para 
armazenar informações do cliente, e todas as solicitações não estão correlacionadas com solicitações 
passadas ou futuras.
O servidor pode estender a funcionalidade do cliente passando o código executável. Por exemplo, um 
servidor pode enviar JavaScript ao cliente para que ele possa executar algum tipo de operação nos dados.
Se lermos cuidadosamente esses princípios, notamos que o foco principal é a escalabilidade. O 
fato de o servidor não armazenar informações do cliente permite economizar memória. O sistema 
em camadas nos permite usar servidores de cache como um balanceador de carga para obter 
escalabilidade. Adicionar novos servidores e seguir os princípios cliente-servidor nos permite alterar 
a implementação (por exemplo, passando de um banco de dados SQL para o armazenamento NoSQL) 
sem o conhecimento do cliente.
Mas como obtemos isso e como funciona? No documento original que descreve o Rest, Roy Fielding 
não vincula a arquitetura Rest ao HTTP, mas, como afirmado anteriormente, o HTTP parece perfeito para 
criar uma API Rest, já que a maioria das coisas nesse estado já está construída no próprio protocolo 
(cache, por exemplo).
A web em si é Rest: temos o URL, que é o identificador da página que precisamos, digitamos o 
URL no navegador para obter uma representação no formato HTML e usamos um link para transferir o 
estado para outra página.
Um aspecto do Rest que contrasta com Soap (RPC) é que a operação no recurso é baseada no verbo 
HTTP usado em combinação com o URI.
O HTTP tem a noção de verbos. Estamos acostumados a get e post, pois o navegador gerencia 
esses dois verbos, mas outros são especificados na especificação HTTP (RFC 2616), que pode ser usada 
para outras operações. A lista completa de verbos é: options, get, head, post, put, patch, delete, 
trace e connect.
Eles podem ser usados com seu significado semântico. Portanto, quando precisamos ler um recurso, 
podemos usar o método get, e, quando precisamos excluir um recurso, podemos usar um delete, e 
assim por diante.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
185
Como ilustrado no quadro a seguir, usando o URI correto e o verbo correto, temos as operações Crud 
(criar, ler, atualizar, excluir) prontas para serem usadas.
Quadro 13 – Verbos e significados HTTP
Verbo URI Descrição
Get /posts Obtenha a lista de postagens
Get /posts/42 Obtenha uma única postagem (com o ID 42)
Delete /posts/42 Exclua a publicação 42
Post /posts Crie uma postagem
Put /posts/42 Atualize a postagem
Patch /post/42 Faça uma atualização parcial
Options /post/42 Recupere a operação disponível no recurso
Head /post/42 Retorne apenas o cabeçalho HTTP
Depois que uma solicitação é emitida para o servidor, ele a analisa e cria a resposta para retornar 
os dados ou resultados ao cliente. Cada resposta é representada com um estado e um status HTTP, que 
devem ser usados semanticamente para informar o cliente do resultado.
A operaçãoget é usada para ler um recurso. O URI especifica o recurso que estamos lendo, e podemos 
usar o cabeçalho accept para solicitar um formato específico.
Quando o post é usado para criar um recurso, os dados do recurso são enviados ao servidor como 
parte do corpo da solicitação. O servidor responde com o status “201 created” se tudo correr bem. 
Quando um novo recurso é criado, é recomendado usar o cabeçalho location na resposta para especificar 
o URI do recurso recém-criado.
O put é usado para modificar o recurso. O URI especifica o recurso que queremos modificar e o corpo 
contém os novos valores de recurso. O código de status HTTP da resposta deve ser “200 OK” ou “204 sem 
conteúdo” se a resposta não contiver o recurso modificado. Não é necessário retornar o URI do próprio 
recurso no cabeçalho location, porque o cliente já o conhece. 
O put deve ser idempotente, o que significa que o resultado de uma solicitação bem-sucedida é 
independente do número de vezes que é executada. Deve ser possível fazer duas chamadas iguais para 
o servidor, e este não deve retornar erros; a segunda chamada simplesmente refaz a atualização, mesmo 
que não altere o recurso.
O delete é usado para excluir o recurso. O resultado pode ser “200 OK” ou “204 sem conteúdo” se a 
resposta não contiver um corpo. Pode ser “404 não encontrado” se o URI não estiver correto e o recurso 
não puder ser encontrado.
Unidade IV
186
7.5 Exemplo de web API
Dado que um aplicativo web ASP.NET MVC 4 foi criado, na segunda etapa, escolhe-se o modelo de 
web API. Uma vez criado, o projeto é quase idêntico a um projeto clássico do ASP.NET MVC e, na verdade, 
mantém muitos conceitos desse tipo de projeto.
Na figura a seguir, temos a estrutura da solução visualizada após a criação do projeto.
Figura 169 – Estrutura do projeto da API da web
Os itens mais importantes a serem observados são mostrados a seguir.
• As pastas controladores, modelos e exibições são obtidas do ASP.NET MVC. Como veremos mais 
adiante, a web API usa o mesmo padrão MVC; portanto, temos controladores e modelos. Também 
existe uma pasta Views, mas não é muito útil em um contexto de API, mesmo que possamos 
retornar uma visualização ao nosso chamador.
• Além da pasta de visualizações, existem pastas de imagens, scripts e conteúdo. Elas não são 
usadas com frequência, pois uma API geralmente é utilizada para retornar dados, não uma 
interface do usuário.
• A pasta App_Start é usada para configurar a API. Ela contém vários configuradores para 
configurar o comportamento da API. Essa pasta também apresenta algumas configurações 
para a parte do ASP.NET MVC.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
187
Como você pode observar com esse modelo de projeto, podemos criar aplicativos ASP.NET MVC e 
aplicativos API, já que os dois têm muito em comum.
Vamos aprofundar um pouco o conteúdo abrindo a pasta Controllers e dando uma olhada na classe 
ValuesController, conforme apresentado nas figuras a seguir.
Figura 170 – Controller: web API
Unidade IV
188
Figura 171 – Continuação do controller: web API
Após o uso e o namespace, encontramos uma declaração de classe. A classe ValuesController 
herda de ApiController. Ela não é relativa à classe base do controlador usada no ASP.NET MVC, embora 
tenha muitas semelhanças. Ela serve como uma classe base para todos os recursos que decidimos 
expor por meio da API.
Nessa classe, encontramos todos os verbos padrão para manipular o recurso value: get, post, put e 
delete. O nome dos métodos aqui é importante, pois o tempo de execução da web API do ASP.NET usa 
convenções para encontrar a ação a ser chamada em uma solicitação HTTP. Portanto, o método get 
é utilizado para obter uma coleção de valores e um único valor, considerando seu ID. O método put é 
utilizado para inserir e modificar o recurso de valor (value), enquanto o método delete é utilizado para 
excluir um recurso com o ID.
Como podemos observar, os cinco métodos são as ações chamadas contra uma solicitação HTTP get, 
post, put ou delete.
Como um aplicativo web ASP.NET MVC, os projetos de web API usam um sistema de roteamento. 
A configuração das rotas está em um arquivo chamado WebApiConfig.cs na pasta App_Start. Veja o 
conteúdo desse arquivo apresentado a seguir.
Figura 172 – WebApiConfig.cs
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
189
Essa classe possui um método que é chamado a partir da classe WebApiApplication no global.asax. 
Esse método registra as rotas necessárias pelo aplicativo. Por padrão, o ValuesController definido antes 
responde ao URI/API/Values, como podemos ver no código anterior. Observe que essas rotas, apesar de 
muito semelhantes às rotas do ASP.NET MVC, são uma pilha completamente diferente. Nesse caso, o 
tipo de rota é IHttpRoute e a implementação está contida no assembly System.Web.Http, portanto é 
completamente novo e não está vinculado ao System.Web.
Mesmo se forem diferentes, eles são implementados quase da mesma maneira: cada rota possui um 
nome e um modelo que são “tokenizados” para corresponder aos padrões de entrada.
Até agora, vimos o controlador values, que tem o dever de gerenciar o recurso Values e um sistema 
de roteamento simples para rotear a solicitação para o controlador correspondente. Vamos, então, 
simular a execução do aplicativo web API para ver como ele funciona.
Uma vez executado, ele abrirá um servidor web local para uma porta específica. Em seguida, 
construiremos um web API, para tratar o retorno de informações dos alunos, tais como nome, RA e 
idade em formato JSON.
Exemplo de aplicação
Este exemplo será desenvolvido de maneira sequencial em suas figuras, utilizando-se o Visual Studio 
2019. Na figura a seguir, observa-se a seleção do template aplicativo Web ASP.NET (.NET Framework). 
Deve-se atentar à linguagem que será utilizada no back-end, que será o C#. Após validar as informações, 
acionar o botão seguinte.
Define-se o nome do projeto na caixa “Nome do projeto” e em qual local do computador será 
armazenado o exemplo. Após o preenchimento dos campos, acionar o botão “Criar”.
Figura 173 – Criando um projeto web API
Unidade IV
190
Escolhe-se o template web API e aciona-se o botão “Criar”.
Figura 174 – Criando um projeto web API
A seguir, é possível visualizar um Solution Explorer (gerenciador de soluções), com as pastas 
Controllers e Models.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
191
Figura 175 – Estruturando um projeto web API
Nesta etapa, criamos as classes indicadas a seguir.
• AlunoController.cs na pasta Controllers.
• Aluno.cs, AlunoRepositorio.cs e IAlunoRepositorio.cs na pasta Models.
Nas figuras a seguir, mostramos como criar uma classe dentro da pasta Models, clicando com o 
botão direito e selecionando a opção “Adicionar” e, depois, “Classe” (nomeando-a, no exemplo, Aluno.cs).
Este passo deve ser seguido sempre que for solicitada a criação de uma classe na pasta Models, 
Controller etc.
Unidade IV
192
Figura 176 – Adicionando uma classe
Figura 177 – Adicionando uma classe
Conforme indicado nas figuras adiante, desenvolve-se dentro da classe AlunoController os métodos 
a seguir.
• GetAllAlunos: responsável por apresentar todos os dados dos alunos cadastrados.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
193
• GetAluno: responsável por apresentar o registro de um aluno específico que foi solicitado 
através do seu RA.
• GetAlunosPorIdade: responsável por apresentar o registro de um aluno específico que foi 
solicitado através da sua idade.
• GetPostAluno: responsável por adicionar um registro de um aluno.
• GetPutAluno: responsável por atualizar os dados do aluno.
• DeleteAluno: responsável por excluir o registro do aluno.
Figura 178 – Implementando a classe AlunoControllers
Figura 179 – Continuação da implementação da classe AlunoControllers
Unidade IV
194
Figura 180 – Continuação da implementação da classe AlunoControllers
Então, criamos a classe Aluno, com os atributos nome, RA e idade. A tipagem dos atributos (string 
nome,int RA, int idade) tem relação com a tabela criada que recebeu os dados com as tipagens corretas.
Figura 181 – Implementando a classe Aluno
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
195
Assim, inicia-se a implementação da classe AlunoRepositorio, que irá herdar a interface 
IAlunoRepositorio, em que serão desenvolvidos os métodos a seguir.
• GetAll: retorna todos os dados de alunos.
• Get: retorna o dado do aluno através do filtro RA.
• Add: adiciona o registro do aluno (nome, RA e idade).
• Remove: exclui o registro do aluno.
• Update: atualiza o registro do aluno.
Na classe AlunoRepositorio, deve-se informar os dados de alunos cadastrados (Salatiel, Dorgival, 
Doralice e Doracy) e seus respectivos dados de RA (registro acadêmico) e idade.
Figura 182 – Implementando a classe AlunoRepositorio
Unidade IV
196
Figura 183 – Continuação da implementação da classe AlunoRepositorio
Figura 184 – Continuação da implementação da classe AlunoRepositorio
Inicia-se a implementação da classe IAlunoRepositorio com os métodos getall, get, add, remove 
e update.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
197
Figura 185 – Implementação da classe IAlunoRepositorio
Localiza-se no Solution Explorer o arquivo WebApiConfig (dentro da pasta App_Start).
Figura 186 – Implementação da classe WebApiConfig
Unidade IV
198
Inicia-se, então, a implementação do código, que será responsável por proporcionar a inicialização 
da API, e configura-se a rota, conforme já mencionado.
Figura 187 – Implementação da classe WebApiConfig
Neste momento, deve-se clicar no botão “IIS Express” para iniciar a API. Nas figuras a seguir, pode-se 
observar o funcionamento de uma consulta de todos os alunos e uma consulta de um aluno específico.
Figura 188 – Executando o projeto web API
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
199
Figura 189 – Executando o projeto web API
Figura 190 – Executando o projeto web API
No exemplo anterior, utilizamos um código do repositório definido pela classe AlunoRepositorio 
para implementar a web API 2, expondo os serviços a seguir.
• GetAllAlunos: retorna todos os alunos.
• GetAluno: retorna um aluno.
• GetAlunosPorIdade: retorna os alunos por idade.
• PostAluno: inclui um novo aluno.
• PutAluno: altera um aluno.
• DeleteAluno: exclui um aluno.
7.6 Desenvolvimento de aplicações MVC
As figuras apresentadas aqui são concebidas por meio de desenvolvimento MVC. Na sequência, iremos 
entender de maneira prática como podemos desenvolver um projeto WebForms, com alguns conceitos 
de HTML, CSS e JavaScript para o front-end e a linguagem de programação orientada a objetos C# para 
o desenvolvimento do back-end.
Vale ressaltar também que o banco de dados aplicado nesta unidade foi o SQL Server, mas existem 
diversos outros no mercado, como SQL Lite, Mongo DB etc.
Caso optemos por utilizar o seu banco de preferência, alteramos o endereçamento da linha 
connectionString, conforme ilustrado a seguir.
Unidade IV
200
Figura 191 – Endereçamento do banco de dados
 Lembrete
No JavaScript, os objetos são o centro de seu desenvolvimento: quase 
tudo é um objeto ou age como um objeto.
8 ACESSANDO DADOS COM MS ADO.NET
Existem diversas maneiras de conexão com o banco de dados, como Oracle, SQL, Access, entre outros. 
No entanto, para que a conexão seja efetuada de maneira amigável, neste livro-texto teremos como 
base a construção de conexão utilizando a linguagem C#, que será utilizada como ponto entre a 
view (aspx) e a codificação de itens de conexão (C#).
 Observação
É importante assimilar os conceitos estudados sobre banco de dados 
para que este conteúdo seja absorvido de maneira clara e objetiva.
Iremos dar sequência às figuras que exemplificam como elaborar a aplicação em três camadas. A 
figura a seguir mostra a inclusão dos registros nome, e-mail e idade.
Figura 192 – Exemplo de aplicação em três camadas: página Default.aspx
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
201
Para iniciar a criação desse projeto, devemos criar um projeto Asp.NET Web Forms no Visual 
Studio 2019.
Figura 193 – Criando um projeto Web Forms
Como ilustrado, iniciamos a criação do projeto Web Forms acionando o botão “Criar um projeto”.
Figura 194 – Criando um projeto Web Forms: ASP.NET WebForms
Unidade IV
202
Selecionamos o Aplicativo Web ASP.NET(.NET Framework). Utilizar a caixa de busca para digitar o 
nome do template facilita a sua localização. Após efetuar essa seleção, acionamos o botão “Próximo”.
Figura 195 – Criando um projeto Web Forms: atribuindo o nome do projeto
Preenchemos o nome do projeto (TresCamadasAdoNet) e acionamos o botão “Criar”.
Figura 196 – Criando um projeto Web Forms: selecionando Web Forms
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
203
Em seguida, devemos escolher o Web Forms e acionar o botão “Criar”.
Figura 197 – Criando um projeto Web Forms: selecionando Web Forms
Na figura a seguir, será apresentada a estrutura criada para o projeto Web Forms Três Camadas 
ADO.NET. Deve-se clicar da página Default.aspx e desenvolver o layout proposto nas próximas figuras. 
Essa tela será responsável por alocar os campos nome, idade e e-mail, e o botão “Submeter” terá a 
função de enviar os registros preenchidos para o banco de dados.
Unidade IV
204
Figura 198 – Layout sugerido para a página Default.aspx
Figura 199 – Continuação do layout sugerido para a página Default.aspx
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
205
Figura 200 – Continuação do layout sugerido para a página Default.aspx
Após essas etapas, adicionamos o projeto BLL (business logic layer – camada de regra de negócio).
Para adicionar um projeto, devemos selecionar o nome da solução Três Camadas ADO.NET, acionar o 
botão direito do mouse e selecionar “Adicionar”, depois “Novo Projeto”.
Figura 201 – Adicionar um novo projeto
Localizamos a biblioteca de classe (.NET Framework). Devemos nos certificar de que a linguagem 
definida é C#. Após realizar a seleção, acionamos o botão seguinte.
Unidade IV
206
Figura 202 – Adicionando a biblioteca de classes
Escrevemos o nome do projeto BLL e acionamos o botão “Criar”.
Figura 203 – Nomeando a biblioteca como BLL
Figura 204 – Camada BLL criada com a classe Class1
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
207
Em seguida, devemos escrever o nome do projeto BLL e, novamente, acionar o botão “Criar”.
Figura 205 – Camada BLL criada com a classe Class1
Devemos renomear a classe para Negócios. Para realizar essa ação, clicamos com o botão direito do 
mouse sobre a Class1 e selecionamos a opção “Renomear”.
Figura 206 – Renomeando a Class1 para Negócios
Unidade IV
208
A figura a seguir ilustra o momento que terminamos de renomear a classe. Então, o Visual Studio 
pergunta se gostaríamos de assumir o novo nome para a classe. Agora, devemos acionar o botão “Sim”.
Figura 207 – Classe Negócios
Na figura a seguir, apresentamos o nome classe Negócios.
Figura 208 – Incluindo summary
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
209
Para acionar o summary, basta digitarmos acima do nome da classe ///.
Figura 209 – Desenvolvimento da classe BLL
Nas figuras a seguir, podemos observar o desenvolvimento dos métodos insert, update, load e delete, 
que terão responsabilidade de filtrar a regra de negócio e conservar a persistência no banco de dados.
Unidade IV
210
Figura 210 – Desenvolvimento da classe BLL
Figura 211 – Continuação do desenvolvimento efetuado na classe BLL (classe Negócio)
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
211
Figura 212 – Continuação do desenvolvimento efetuado na classe BLL (classe Negócio)
Figura 213 – Camada DAL com a classe Acesso a Dados
A seguir, apresentamos o projeto DAL, do inglês, data access layer (camada de acesso a dados). Esse 
projeto será adicionado da mesma maneira que a camada BLL foi adicionada anteriormente. A classe 
será renomeada para AcessoDados.
Unidade IV
212
Figura 214 – Classe AcessoDados dentro da camada DAL
Nas figuras a seguir, podemos ver a criação dos métodosinsert (que será utilizado na aplicação), 
update, load e delete. Eles serão utilizados para realizar a persistência no banco de dados SQL.
Figura 215 – Desenvolvimento efetuado na classe DAL
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
213
Figura 216 – Continuação do desenvolvimento efetuado na classe DAL
Na figura anterior, linha 20, podemos observar a chave de conexão [“EADUNIPSqlServer”], que será 
utilizada para alocar o endereço do banco de dados SQL.
Unidade IV
214
Figura 217 – Continuação do desenvolvimento efetuado na classe DAL
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
215
Figura 218 – Continuação do desenvolvimento efetuado na classe DAL
Unidade IV
216
Figura 219 – Continuação do desenvolvimento efetuado na classe DAL
Figura 220 – Realizando a referência na camada BLL
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
217
Conforme pode ser visto nas figuras a seguir, clicamos com o botão direito do mouse sobre a 
pasta de referências e acionamos a opção “Adicionar Referência”. Em seguida, devemos selecionar 
“Projetos” >> “DAL” e “OK”.
Figura 221 – Realizando a referência na camada BLL da camada DAL
Figura 222 – Realizando a referência na camada TresCamadasAdoNet
Unidade IV
218
Figura 223 – Realizando a referência na camada BLL da camada TresCamadasAdoNet
Figura 224 – Referência da camada BLL na camada TresCamadasAdoNet
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
219
Conforme mostrado na figura a seguir, devemos ir à página Default.aspx e efetuar um duplo clique no 
botão “Submeter”. Será criado o btnSubmit_Click. Nessa classe, devemos atribuir o nome da camada BLL 
utilizando a palavra using. Na sequência, digitamos o trecho do código que se encontra na figura a 
seguir. Esse código realiza a instância do objeto pBLL para que seja possível acessar o método insert, 
que está localizado na classe Negócios e que, por sua vez, dará acesso ao método insert, localizado na 
classe Acessadados.
Com as informações digitadas na tela (nome, idade e e-mail), o método insert contido na classe 
Acessadados irá gravar os dados na base de dados.
Figura 225 – Evento bntSubmit_Click
 Observação
Classe BLL é a camada de negócio. Classe DAL é a camada de dados. 
O exemplo tratado nesta unidade tem por finalidade realizar a junção do 
front-end (tela) com o back-end (linguagem de programação C#) utilizando 
um projeto Web Forms.
Unidade IV
220
Po
r 
fim
, d
ev
e-
se
 a
ce
ss
ar
 o
 a
rq
ui
vo
 w
eb
.co
nfi
g 
e 
al
oc
ar
 o
 e
nd
er
eç
am
en
to
 d
o 
ba
nc
o 
de
 d
ad
os
, p
ar
a 
qu
e 
el
e 
se
ja
 lo
ca
liz
ad
o 
de
nt
ro
 d
a 
ap
lic
aç
ão
 
qu
an
do
 so
lic
ita
do
 p
el
a 
ch
av
e 
[“E
AD
UN
IP
Sq
lS
er
ve
r”
].
Fi
gu
ra
 2
26
 –
 A
rq
ui
vo
 w
eb
.co
nfi
g
Fi
gu
ra
 2
27
 –
 C
on
ne
ct
io
nS
tr
in
g
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
221
 Lembrete
Criar a base de dados EADUNIP e a tabela com os atributos código, 
nome, idade e e-mail é necessário para que a aplicação funcione. O banco 
de dados utilizado para esse exemplo é o SQL Server.
8.1 Instalar/configurar o banco de dados SQLite
Para instalar e configurar o banco de dados SQLite, é necessário acessar o link, conforme apresentado 
na figura a seguir. Após realizar o download, iniciar a instalação no seu computador, conforme 
descrito a seguir.
Figura 228 – Tela de download do SQLiteStudio
Figura 229 – Download realizado em formato .zip do SQLStudio
Após a extração do arquivo gerado e mencionado na figura anterior, será gerada a pasta 
SQLiteStudio, conforme apresentado a seguir.
Unidade IV
222
Figura 230 – Pasta do SQLiteStudio
Após acessar a pasta SQLiteStudio, localizar o arquivo SQLiteStudio e acessá-lo conforme 
apresentado a seguir.
Figura 231 – Executável do SQLiteStudio
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
223
Figura 232 – SQLiteStudio
Para criar a base de dados de estudo, precisamos clicar em “Database” → “Add a database”, conforme 
apresentado a seguir.
Figura 233 – Adicionando database no SQLiteStudio
Unidade IV
224
Figura 234 – Criando database no SQLiteStudio
Agora, é necessário nomear a base de dados, conforme apresentado a seguir.
Figura 235 – Criando database unidade4 no SQLiteStudio
Após adicionar o nome da base de dados (unidade4), precisamos clicar no botão “Test connection” 
para verificar a estabilidade da conexão local, conforme apresentado a seguir.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
225
Figura 236 – Test connection no SQLiteStudio
Após o teste de conexão ter finalizado com sucesso, clicamos no botão “OK”. Neste momento, a base 
de dados está pronta e já é possível criar uma tabela clicando com o botão direito em cima do nome da 
base de dados (unidade4) → “Create a table”, conforme apresentado a seguir.
Figura 237 – Criando tabela aluno no SQLiteStudio
Unidade IV
226
Após nomear a tabela, precisamos adicionar os campos necessários para a construção da tabela. 
Clicando duas vezes no espaço vazio da aba “Structure”, temos o que está apresentado na figura.
Figura 238 – Acionando coluna na tabela aluno no SQLiteStudio
Figura 239 – Acionando coluna na tabela aluno no SQLiteStudio
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
227
Figura 240 – Acionando coluna na tabela aluno no SQLiteStudio
Para efetivar a construção da tabela, precisamos clicar no botão verde “Commit structure changes”, 
conforme apresentado a seguir.
Figura 241 – Botão “Commit structure changes”
Em seguida, aparece a mensagem de sucesso. Após essa tela, clicamos no botão “OK”.
Unidade IV
228
Figura 242 – Efetivação da criação da tabela aluno
Figura 243 – Tabela aluno criada
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
229
Figura 244 – Tabela aluno criada e armazenada na pasta do SQLiteStudio
Figura 245 – Exemplo de ConnectionString do SQLiteStudio
Para fixar o que estudamos, vamos resolver os exercícios do exemplo de aplicação a seguir.
Exemplo de aplicação
Exemplo 1
Sabendo que, nas linguagens de programação, existem diferentes palavras reservadas, é correto 
afirmar que são apenas palavras reservadas em linguagem de programação Java (INSTITUTO AOCP 2019):
Unidade IV
230
A) Strictfp, private, byte, transient.
B) Function, void, real, procedure.
C) Protected, finally, if, yield.
D) Public, void, del, elif.
E) Void, var, int, def.
Resolução
A) Alternativa correta.
Justificativa: todas as palavras da alternativa são reservadas para a linguagem Java.
B) Alternativa incorreta.
Justificativa: as palavras “function” e “real” não são reservadas.
C) Alternativa incorreta.
Justificativa: “yield” é o nome de uma função da classe thread, mas pode ser usada livremente.
D) Alternativa incorreta.
Justificativa: as palavras “del” e “elif” não são reservadas.
E) Alternativa incorreta.
Justificativa: as palavras “var” e “def” não são palavras reservadas.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
231
Exemplo 2
Assinale a opção que apresenta corretamente a saída gerada pelo código Java precedente 
(Cespe 2019).
Figura 246 
A) 36.
B) 1 2 3 4 5 6.
C) 1 2 3 4 5.
D) 0 1 2 3 4 5.
E) 0 1 2 3 4 5 6.
Resposta correta: alternativa D.
Resolução
Vejamos o que ocorre em cada uma das rodadas do código do enunciado.
1ª rodada
i = 0 0 × 0 = 0 (menor que 36)
2ª rodada
i = 1 1 × 1= 1 (menor que 36)
3ª rodada
i = 2 2 × 2 = 4 (menor que 36)
Unidade IV
232
4ª rodada
i = 3 3 × 3 = 9 (menor que 36)
5ª rodada
i = 5 5 × 5 = 25 (menor que 36)
6ª rodada
i = 6 6 × 6 = 36 (igual a 36)
Resposta: 0 1 2 3 4 5
 Resumo
Na unidade IV, vimos como podemos combinar e integrar técnicas de 
desenvolvimento web, como o JavaScript, as quais, de fato, enriquecem 
todo o processo da aplicação web, principalmente quando se trata de suas 
funções e seus métodos, o que gera praticidade e facilidades no front-end 
na atuação do desenvolvimento de software para internet.
Vimos também conceitos de conexão com banco de dados, utilizando 
como base a linguagem C#. Trabalhando com o desenvolvimentode 
aplicações web, empregamos recursos da linguagem C# para efetuar a 
codificação de banco de dados, bem como toda a lógica de botões inseridos 
nas páginas aspx.
Finalmente, ressaltamos tópicos relativos à construção de arquitetura 
web e sua execução, com ênfase na preocupação atual em realizar 
desenvolvimentos com qualidade e agilidade, para que seja possível a 
visualização da página em qualquer dispositivo conectado à internet.
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
233
 Exercícios
Questão 1. (FCC 2019) Considere o fragmento de código a seguir, retirado do corpo de uma página 
web que utiliza JavaScript.
<body>
<img id=”evento” src=”grupo1.gif” onclick=”trocar()”>
<script>
function trocar() {
}
</script>
</body>
Para que, ao clicar na imagem grupo1.gif, ela seja substituída pela imagem grupo2.gif, no interior da 
função trocar deverá ser incluído o comando:
A) # ( ‘$evento ‘) .src ( ‘grupo2.gif ‘) ;
B) document.getElementById(“evento”).src = “grupo2.gif” ;
C) $ ( ‘. evento ‘) . attr ( ‘src ‘, ‘grupo2.gif ‘) ;
D) document.img.src = “grupo2.gif” ; 
E) document.getElementById(“evento”).change = “grupo2.gif” ; 
Resposta correta: alternativa B.
Análise da questão
Em JavaScript, o método getElementById() nos possibilita modificar elementos HTML a partir de 
seus identificadores. A propriedade src desse método é capaz de ajustar o valor do atributo src de uma 
imagem. O atributo src é responsável por especificar a URL da imagem. Portanto, o comando
document.getElementById(“evento”).src = “grupo2.gif”;
procura, dentro do objeto document (que, no caso, é o próprio documento HTML), o elemento cujo id 
é igual a “evento”, e modifica o valor do seu atributo src para “grupo2.gif”. Essa ação ocorrerá mediante 
um evento de clique na imagem original, que será responsável por invocar a função trocar().
Unidade IV
234
Questão 2. (Iades 2018, adaptada) A sigla do padrão de projeto MVC vem do inglês model-view-controller. 
A respeito do MVC, avalie as afirmativas a seguir.
I – A camada model é responsável pela exibição de dados na tela.
II – A camada view é responsável pelas regras de negócio.
III – A comunicação entre as interfaces e as regras de negócio é responsabilidade da camada controller.
É correto o que se afirma em:
A) I, apenas.
B) III, apenas.
C) I e II, apenas.
D) II e III, apenas.
E) I, II e III.
Resposta correta: alternativa B.
Análise das afirmativas
I – Afirmativa incorreta. 
Justificativa: o MVC é um padrão de arquitetura de software focado na separação de conceitos em 
três camadas interconectadas. Pode ser considerado um padrão de arquitetura para o desenvolvimento de 
aplicações web. A camada model, responsável pela modelagem da aplicação, gerencia o comportamento 
dos dados por meio de regras de negócios, lógicas e funções. Dessa forma, essa camada modela o 
problema que se pretende resolver com a aplicação.
II – Afirmativa incorreta. 
Justificativa: a camada view, de visualização, é responsável pela exibição dos dados oriundos do 
model. Portanto, é utilizada para apresentar informações para o usuário, utilizando combinações de 
gráficos e textos.
III – Afirmativa correta. 
Justificativa: a camada controller tem foco na interação do usuário, sendo responsável pela 
mediação entre as interfaces com o usuário e as regras de negócio. Ela interpreta as ações recebidas 
pelos periféricos de entrada (como teclado ou mouse), vindas do usuário, e mapeia essas ações, que são 
enviadas para o model ou para o view.
235
REFERÊNCIAS
Textuais
BRASIL. Lei n. 13.709, de 14 de agosto de 2018. Lei Geral de Proteção de Dados Pessoais (LGPD). 
Brasília, 2018. Disponível em: https://bityli.com/AmfFN. Acesso em: 11 maio 2022.
COYIER, C. Named colors and hex equivalents. CSS-Tricks, jan. 2012. Disponível em: https://bit.ly/3L1KDSe. 
Acesso em: 10 maio 2022.
DEVMEDIA. Artigo .net Magazine 65 - ASP.NET: WebForms X MVC. Rio de Janeiro, 2009. Disponível em: 
https://bityli.com/Uayuhz. Acesso em: 11 maio 2022.
DEVMEDIA. ASP.NET MVC: desenvolvendo soluções para web. Rio de Janeiro, 2011. Disponível em: 
https://bityli.com/WmwjAO. Acesso em: 11 maio 2022.
DEVMEDIA. Qualidade de software: uma questão de eficiência. Rio de Janeiro, 2010. Disponível em: 
https://bityli.com/EIwnDC. Acesso em: 11 maio 2022.
DEVMEDIA. Utilizando os custom data attributes da HTML5. 2013. Disponível em: 
https://bit.ly/3FvCOTE. Acesso em: 10 maio 2022.
DOWNLOADS. Visual Studio. Microsoft, 2022. Disponível em: https://bit.ly/38kvez5. 
Acesso em: 10 maio 2022.
DURÃES, R. Desenvolvendo para web usando o Visual Studio 2008. Rio de Janeiro: Brasport, 2011. 
FONT SQUIRREL. Webfont Generator. 2022. Disponível em: https://bit.ly/3M5sZhB. 
Acesso em: 10 maio 2022.
GETBOOTSTRAP. Introduction. [s.d.]. Disponível em: https://bit.ly/3FxyS4J. Acesso em: 10 maio 2022.
GOEL, A. HTML vs HTML5 vs XHTML: differences you should know. Hackr.io, jan. 2021. Disponível em: 
https://bityli.com/nfanQW. Acesso em: 11 maio 2022.
ISHIDA, R. Servindo HTML & XHTML. Tradução: Maurício Samy Silva. W3C, 2016. Disponível em: 
https://bit.ly/3LJpj57. Acesso em: 5 maio 2022.
KLEINA, N. A história da internet: pré-década de 60 até anos 80 [infográfico]. Tecmundo, Curitiba, 29 
abr. 2011. Disponível em: https://bityli.com/JgSgYW. Acesso em: 11 maio 2022.
LOTAR, A. Programando com ASP.NET MVC. São Paulo: Novatec, 2011.
MANZANO, J. A. N.; TOLEDO, S. A. Guia de orientação e desenvolvimento de sites: HTML, XHTML, CSS e 
JavaScript/JScript. 2. ed. São Paulo: Érica, 2010.
236
MARINHO, S. L. Programação Orientada a Objetos II. São Paulo: Editora Sol, 2020.
ROBERT, M. C. Código limpo. São Paulo: Alta Books, 2020.
SILVA, M. S. CSS grid layout: criando layouts CSS profissionais. São Paulo: Novatec, 2019.
SILVA, M. S. HTML5: a linguagem de marcação que revolucionou a web. São Paulo: Novatec, 2019.
SILVA, M. S. Servindo HTML & XHTML. W3, fev. 2016. Disponível em: https://bityli.com/RfzcMr. 
Acesso em: 11 maio 2022.
STANDARD built-in objects. JavaScript Reference. Mozilla, 2022. Disponível em: 
https://mzl.la/3M5xY1Q. Acesso em: 10 maio 2022.
TERUEL, E. C. HTML5: guia prático. São Paulo: Érica, 2014.
USE as ferramentas para desenvolvedores do Google Chrome para verificar tags. Ajuda do Campaign 
Manager 360. Suport Google, 2020. Disponível em: https://bit.ly/3N5yehG. Acesso em: 10 maio 2022.
W3C PRESS RELEASES. Novo roteiro para o futuro das publicações está em andamento: W3C e IDPF 
estão agora oficialmente unificados. W3C, fev. 2017. Disponível em: https://bityli.com/yDprk. 
Acesso em: 11 maio 2022.
W3C. GT acessibilidade. 2011a. Disponível em: https://bit.ly/3LvqVzs. Acesso em: 28 abr. 2022.
W3C. Markup Validation Service. 2013. Disponível em: http://validator.w3.org/. Acesso 
em: 5 maio 2022.
W3C. Sobre o W3C. 2011b. Disponível em: https://bit.ly/36WuzTT. Acesso em: 28 abr. 2022.
W3SCHOOLS. CSS Pseudo-elements. 2022a. Disponível em: https://bit.ly/3L5C3Sm. Acesso 
em: 10 maio 2022.
W3SCHOOLS. CSS Tutorial. 2022b. Disponível em: https://bityli.com/duIhAb. Acesso em: 11 maio 2022.
W3SCHOOLS. HTML <input> type Attribute. 2022c. Disponível em: https://bit.ly/38SpUTt. 
Acesso em: 5 maio 2022.
W3SCHOOLS. HTML Forms. 2022d. Disponível em: https://bit.ly/3NbDJvl. Acesso em: 5 maio 2022.
W3SCHOOLS. HTML Tutorial. 2022e. Disponível em: https://bityli.com/onbPQU. Acesso em: 5 maio 2022.
W3SCHOOLS. JavaScript Tutorial. 2022f. Disponível em: https://bityli.com/XPTXll. Acesso em: 5 maio 2022.
237
238
239
240
Informações:
www.sepi.unip.br ou 0800 010 9000

Outros materiais