Buscar

Objetos JavaScript

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 73 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 73 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 73 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

138
Unidade IV
Unidade IV
7 ESTAÇÃO JAVASCRIPT
7.1 JavaScript
No JavaScript, os objetos são o centro do seu desenvolvimento: quase tudo é um objeto ou age 
como um, sendo assim, iremos, então, examinar a criação de objetos JavaScript.
7.1.1 Objetos JavaScript
Um objeto é nada mais do que um contêiner para uma coleção de valores nomeados, ou seja, antes 
mesmo de analisarmos qualquer código JavaScript, vamos primeiro raciocinar sobre isso, com base no 
exemplo da tabela a seguir.
Exemplo de aplicação
Tabela 5 – Alunos alocados no banco de dados
Aluno
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, que são semelhantes às partes contidas na tabela, conforme ilustrado na 
figura a seguir. Os exemplos colocados poderão ser desenvolvidos no Visual Studio Code, Microsoft 
Visual Studio, Sublime Text ou no editor de sua preferência.
139
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 118 – Exemplo de código JavaScript
Mantenha esse estudo em primeiro plano: os objetos são realmente apenas recipientes para 
propriedades, onde cada um detém um nome e um valor. Essa noção de um recipiente de propriedades 
com valores nomeados (ou seja, um objeto) é utilizada pelo JavaScript, como os blocos de construção, 
para assim expressar valores nele.
O objeto “aluno” é um valor que nós expressamos como um objeto JavaScript criando-o, dando um 
nome e, por fim, fornecendo as suas propriedades.
Até o momento, o objeto “aluno” que estamos estudando tem apenas informações estáticas, ou seja, 
como estamos lidando apenas com uma linguagem de programação, queremos programar nosso objeto 
para realmente tentar fazer alguma coisa, caso contrário, tudo o que realmente temos é um banco de 
dados semelhante ao JSON.
Para dar vida ao objeto “aluno”, precisamos adicionar um método de propriedade, ou seja, métodos 
de propriedade que possibilitem a execução de uma função. Para ser mais eficaz em nossa definição, em 
JavaScript, métodos são propriedades que contêm um objeto Function(), cuja intenção é de simplesmente 
operar no objeto em que a função está contida.
Se porventura atualizarmos a tabela aluno com um método getGenero, ficaria disponibilizada, 
conforme segue:
Tabela 6 – Método getGenero apresentado na classe aluno
Aluno
Propriedade Valor da propriedade
Idade 33
Gênero Masculino
getGenero Retornar o valor do sexo
140
Unidade IV
O método getGender é uma propriedade do objeto aluno, que é utilizado para retornar um dos 
outros valores de propriedade de aluno: o valor “masculino” armazenado na propriedade gênero. Sendo 
assim, podemos avaliar que, sem métodos, nosso objeto não faria muito, exceto armazenar propriedades 
estáticas, conforme pode ser visto a seguir.
Figura 119 – Método getGenero apresentado no JavaScript
 Saiba mais
A JSON (JavaScript object notation – notação de objetos JavaScript) 
é considerada uma formatação leve de alternância de dados. Leia 
sobre o assunto em:
INTRODUÇÃO ao JSON. In: CROCKFORD, D. How JavaScript works. 
Califórnia, EUA: Virgule-Solidus LLC, 2018. Disponível em: https://www.
json.org/json-pt.html. Acesso em: 23 set. 2020.
O objeto aluno que estamos estudando é conhecido como Object(). Criamos o objeto aluno 
utilizando um objeto em branco que nos foi apresentado denominando essa função construtora, ou 
seja, podemos pensar nas funções do construtor como um modelo para produzir objetos predefinidos. 
No caso do objeto aluno, utilizamos a função construtora Object() para produzir um objeto vazio que 
chamamos de aluno.
141
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Aluno é um objeto construído a partir do Object() construtor, então chamamos aluno de um Object(). 
O que nós 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 objetos.
Vamos considerar que o objeto aluno criado a partir da função construtora Object() não seja 
realmente distinta de um objeto string elaborado através da função construtora String():
Figura 120 – Exemplo de construtor JavaScript
Como podemos observar no exemplo anterior, myObject e myString são objetos, ou seja, ambos 
podem ter suas propriedades, herdar suas propriedades e são produzidos a partir de uma função 
construtora. A variável myString, que acopla o valor da string “foo” parece ser o mais simples possível, 
porém de forma surpreendente possui uma estrutura de objeto sob sua superfície.
142
Unidade IV
Se nós examinarmos os dois objetos produzidos, vamos perceber que eles são objetos idênticos em 
substância, porém não em tipo, ou seja, mais importante, espero que possamos começar a visualizar que 
o JavaScript utiliza objetos para expressar valores, conforme apresentado na figura.
Figura 121 – Exemplo de construtor JavaScript: pessoa
A função construtora Pessoa() definida pelo usuário pode produzir objetos Pessoa, sendo assim, 
como 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(), demonstrado 
no exemplo de código anterior, podem nos dar resultados idênticos, porém ambos podem produzir um 
objeto semelhante com as mesmas propriedades e métodos de propriedade.
143
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
7.1.2 Construtores JavaScript criam e retornam instâncias de objetos
O papel de uma função construtora é possibilitar o desenvolvimento de vários objetos que 
compartilham, por exemplo, certas qualidades e comportamentos. Basicamente, uma função 
construtora é um cortador de frutas para produzir objetos que possuem propriedades e métodos de 
propriedade padrão.
Se dissermos que um construtor nada mais é do que uma função, poderia ser respondido “você 
está correto, a menos que essa função seja chamada usando a nova palavra-chave”; por exemplo, 
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 dessa vez gostaríamos que 
acompanhasse a leitura dos comentários no exemplo de código a seguir com atenção, pois destacam o 
efeito da nova palavra-chave, conforme apresentado:
Figura 122 – Exemplo de construtor
144
Unidade IV
A construção do código anterior utiliza uma função construtora definida pelo usuário, por exemplo, 
Pessoa(), para criar o objeto aluno, e isso não é diferente do construtor Array(), que cria um objeto 
Array(), conforme apresentado a seguir:
Figura 123 – 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 dos seus itens implementados 
possa ser facilmente identificado por, pelo menos, um índice ou uma chave.
7.1.3 Os construtores de objetos JavaScript nativos
A linguagem JavaScript tem por definição nove construtores de objetos nativos (ou internos), sendo 
que eles são utilizados pelo JavaScript para desenvolver a linguagem e, por “construção”, podemos 
dizerque esses objetos são utilizados para expressar valores de objetos no código JavaScript, além de 
organizar diversos recursos da linguagem.
Sendo assim, os construtores de objetos nativos podem ser multifacetados, na medida em que 
produzem objetos, porém também são aproveitados para facilitar muitas das convenções de programação 
da linguagem, como, por exemplo, funções que são objetos criados a partir do construtor Function(), 
mas também são utilizados para gerar outros objetos quando chamados como funções de construtor 
utilizando a nova palavra-chave.
145
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Os nove construtores de objetos nativos que vêm predefinidos com JavaScript são:
•	 Number()
•	 String()
•	 Boolean()
•	 Object()
•	 Array()
•	 Function()
•	 Date()
•	 RegExp()
•	 Error()
 Saiba mais
Recomenda-se a leitura dos nove construtores de objetos nativos em:
STANDARD built-in objects. JavaScript reference. Developer.Mozilla. 
Disponível em: https://developer.mozilla.org/en-US/docs/Web/JavaScript/
Reference/Global_Objects. Acesso em: 2020.
O JavaScript é constituído basicamente a partir desses nove objetos (além de valores primários de 
cadeia, número e booleano).
7.1.4 Funções
Uma função é um contêiner de instruções de código que podem ser chamadas utilizando o operador 
parênteses (), ou seja, os parâmetros podem ser trafegados entre parênteses durante a invocação, para 
que as instruções na função possam acessar determinados valores quando esta é invocada.
No exemplo apresentado na figura a seguir, identificaremos a construção de duas versões de um 
objeto de função addNumbers, um utilizando o novo operador e outro o padrão literal mais comum. 
Ambos estão esperando dois parâmetros, ou seja, em cada caso, invocamos a função, passando 
parâmetros no operador parênteses ().
146
Unidade IV
Figura 124 – Exemplo de aplicação do addNumbers
Uma função pode ser utilizada para retornar um valor, construir um objeto ou como um mecanismo 
para simplesmente 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.
7.1.5 Parâmetros de funções
O construtor Function() utiliza-se de um número indefinido de parâmetros, porém 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 a diferença do uso do construtor Function() 
com os padrões mais comuns de instanciar um objeto de função.
Figura 125 – Exemplo de aplicação de function
147
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
As funções podem ser canceladas a qualquer instante durante a chamada, utilizando 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 126 – Exemplo de cancelamento de function
7.1.6 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 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 a funcionalidade das matrizes associativas.
148
Unidade IV
No exemplo apresentado na figura a seguir, iremos armazenar quatro sequências de caracteres no 
myArray, que poderemos acessar utilizando um índice numérico.
Figura 127 – Exemplo de aplicação de array
7.1.7 Parâmetros de matrizes
Nós poderemos 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á usado como 
um valor contido na matriz, conforme apresentado a seguir:
Figura 128 – Exemplo de aplicação de array com parâmetros
149
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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 aplicativos 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 
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
O estudo de diagramação UML, bem como diagrama de sequência, 
agregam no entendimento do conceito de aplicação MVC, pois são 
recursos que se complementam na análise e 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. E, 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 seguinte maneira:
•	 A camada de apresentação exibe elementos da interface do cliente do site e encapsula toda a 
estrutura lógica que inclui desde interação até integração de cliente e 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 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 (sejam de controle ou de 
acesso a dados ou modelo), recomendamos a utilização de classes C#, bem 
como o conhecimento em programação orientada a objetos.
150
Unidade IV
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.
Figura 129 – 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 130 – Identificação de projeto MVC no Visual Studio .NET
151
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 131 – Escolha de template dentro do Visual Studio
 Saiba mais
Recomenda-se a leitura do livro-texto de Programação Orientada a 
Objetos II, pois esse capítulo trata sobre back-end, que usaremos como 
linguagem base C#.
Aconselha-se 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 verificação da última versão do Microsoft Visual Studio, 
consultar o link:
DOWNLOADS. Visual Studio. Microsoft. 2020. Disponível em: https://
visualstudio.microsoft.com/pt-br/downloads/. Acesso em: 24 set. 2020.
Atualmente, mais de 80% dos projetos são desenvolvidos utilizando a arquitetura MVC, por conta 
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 extremaimportância para o desenvolvimento de qualquer 
aplicação atualmente.
152
Unidade IV
 Observação
O estudo de diagramas UML é essencial; por exemplo, diagrama de caso 
de uso e diagrama de sequência, classe e atividade, que serã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, porém 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 finalidade foi construir um mecanismo capaz de 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ário 
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 que é código 
HTML do código C# ou VB.NET, por exemplo.
Todo esse universo garante um código eficaz e limpo, facilitando não só a sua escrita 
inicial, mas deixando fácil a manutenção posterior nessas páginas aspx.
Outra característica muito importante do Razor é a sua facilidade de aprendizagem. 
Como ele, 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 estará com conhecimento 
a escrever páginas aspx com o novo template.
Provavelmente 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, ele faz utilização de 
sua própria linguagem C#/VB, o que torna sua aderência ainda mais efetiva e eficaz.
153
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Considerando também que 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 Razor em qualquer editor de texto, até mesmo no Notepad, caso 
seja necessário utilizar essa ferramenta para tal desenvolvimento.
Levando-se em consideração ainda que, 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). 
Pensando, claro, que 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-se com testes unitários. Com o Razor é possível criar testes unitários para 
verificação das Views do aplicativo 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 que é necessária fazer ao criar 
as Views de um aplicativo web. A View Engine default do ASP.NET sempre irá funcionar e 
proporcionar 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. 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 num 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 
154
Unidade IV
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 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.
Como ilustrado no quadro a seguir, usando o URI correto e o verbo correto, temosas operações Crud 
(criar, ler, atualizar, excluir) prontas para serem usadas.
155
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Quadro 11 – Verbos e significados HTTP
Verbo URI Description
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 Atualize parcialmente.
Options /post/42 Recupere a operação disponível no recurso.
Head /post/42 Retorne apenas o cabeçalho HTTP.
Como mostrado, usando o URI correto e o verbo correto, temos as operações Crud (criar, ler, atualizar, 
excluir) prontas para serem usadas.
Depois que uma solicitação é emitida para o servidor, este 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 
deve ser usado semanticamente para informar o cliente do resultado.
A operação get é 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, é uma prática recomendada 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. Tem que 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.
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.
156
Unidade IV
7.5 Exemplo de API Web
Então um aplicativo Web ASP.NET MVC 4 é criado e, na segunda etapa, escolhe-se o modelo de API 
Web. 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.
Aqui está: a estrutura da solução como aparece após a criação do projeto, conforma 
apresentado a seguir.
Figura 132 – A estrutura do projeto da API Web
As coisas mais importantes a serem observadas são:
•	 As pastas controladores, modelos e exibições são obtidas do ASP.NET MVC. Como veremos 
mais adiante, a API Web usa o mesmo padrão MVC, portanto teremos 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 visualizações, existem pastas imagens, scripts e conteúdo. Elas não são 
usadas com frequência, pois uma API geralmente é usada 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 
ajustar o comportamento da API. Essa pasta também possui algumas configurações para a 
parte do ASP.NET MVC.
157
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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, abrindo a pasta controllers e dando uma olhada na classe 
ValuesController, conforme apresentado nas figuras a seguir.
Figura 133 – Controller: API Web
Figura 134 – Continuação do controller: API Web
158
Unidade IV
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.
Dentro dessa 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 API Web 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 API Web usam um sistema de roteamento. 
A configuração das rotas está em um arquivo chamado WebApiConfig.cs na pasta App_Start. Aqui está 
o conteúdo desse arquivo, conforme apresentado:
Figura 135 – WebApiConfig.cs
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 é integralmente 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.
159
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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 API Web para ver como ele funciona.
Uma vez executado, ele abre um servidor web local para uma porta específica. E em seguida, 
construiremos uma API Web, 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 próximo.
Figura 136 – Criando um projeto API Web
160
Unidade IV
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 137 – Criando um projeto API Web
Escolhe-se o template API Web e aciona-se o botão “Criar”:
Figura 138 – Criando um projeto API Web
161
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
A seguir, é possível visualizar um Solution Explorer (gerenciador de soluções), com as pastas 
“Controllers” (controle) e “Models” (modelo):
Figura 139 – Estruturando um projeto API Web
Nesta etapa, criaremos as classes:
•	 AlunoController.cs na pasta Controllers.
•	 Aluno.cs, AlunoRepositorio.cs e IAlunoRepositorio.cs na pasta Models.
Nas figuras a seguir, demonstra-se como criar uma classe dentro da pasta Models, clicando 
com o botão direito e selecionando a opção “Adicionar”, depois Classe, e nomeando-a, no 
exemplo, Aluno.cs.
162
Unidade IV
Este passo deve ser seguido sempre que for solicitada a criação de uma classe na pasta 
Models, Controller etc.
Figura 140 – Adicionando uma classeFigura 141 – Adicionando uma classe
163
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Conforme indicado nas figuras a seguir, desenvolve-se dentro da classe AlunoController os 
seguintes métodos:
•	 GetAllAlunos: responsável por apresentar todos os dados dos alunos cadastrados.
•	 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 aluno.
•	 GetPutAluno: responsável por atualizar os dados do aluno.
•	 DeleteAluno: responsável por excluir o registro do aluno.
Figura 142 – Implementando a classe AlunoControllers
164
Unidade IV
Figura 143 – Continuação da implementação da classe AlunoControllers
Figura 144 – Continuação da implementação da classe AlunoControllers
165
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Então cria-se 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 145 – Implementando a classe Aluno
Assim, inicia-se a implementação na classe AlunoRepositorio, que irá herdar a interface 
IAlunoRepositorio, em que serão desenvolvidos os métodos:
•	 GetAll: retorna todos os dados de alunos.
•	 Get: retorna o dado de 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.
166
Unidade IV
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 146 – Implementando a classe AlunoRepositorio
Figura 147 – Continuação da implementação da classe AlunoRepositorio
167
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 148 – Continuação da implementação da classe AlunoRepositorio
Inicia-se a implementação na classe IAlunoRepositorio com os métodos GetAll, Get, Add, 
Remove e Update:
Figura 149 – Implementação da classe IAlunoRepositorio
168
Unidade IV
Localiza-se no Solution Explorer o arquivo WebApiConfig (dentro da pasta App_Start):
Figura 150 – Implementação da classe WebApiConfig
169
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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 151 – 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 por um 
aluno específico.
Figura 152 – Executando o projeto API Web
170
Unidade IV
Figura 153 – Executando o projeto API Web
Figura 154 – Executando o projeto API Web
Nesse exemplo, utilizou-se um código do repositório definido pela classe AlunoRepositorio, 
para implementar a API Web 2, expondo os seguintes serviços:
•	 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 imagens apresentadas a seguir são concebidas por meio de desenvolvimento MVC. Na sequência, 
iremos exercitar de maneira prática como podemos desenvolver um projeto WebForms, com alguns 
conceitos de HTML, CSS e JavaScript para o fron-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 neste capítulo foi SQL Server, porém existem 
diversos outros no mercado, como: SQL Lite, Mongo DB etc.
171
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Caso opte por utilizar o seu banco de preferência, altere o endereçamento da linha – connectionString, 
conforme ilustrado a seguir.
Figura 155 – Endereçamento do banco de dados
 Lembrete
No JavaScript, os objetos são o centro do seu desenvolvimento: quase 
tudo é um objeto ou age como um.
8 ACESSANDO DADOS COM MS ADO.NET
Existem atualmente diversas maneiras de conexão com o banco de dados: Oracle, SQL, Access, entre 
outros, porém, 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 conseguir assimilar os conceitos vistos sobre bancos de 
dados para que este conteúdo possa ser absorvido de maneira clara e objetiva.
A seguir, iremos dar sequência nas figuras que exemplificam como elaborar a aplicação em três 
camadas. A figura a seguir demonstra a inclusão dos registros nome, e-mail e idade:
Figura 156 – Exemplo de aplicação em três camadas: página Default.aspx
172
Unidade IV
Para iniciar a criação desse projeto, deve-se criar um projeto Asp.NET Web Forms no Visual Studio 2019:
Figura 157 – Criando projeto Web Forms
Como ilustrado, inicia-se a criação do projeto Web Forms acionando o botão “Criar um projeto”:
Figura 158 – Criando projeto Web Forms: ASP.NET WebForms
Então seleciona-se 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, aciona-se o botão “Próximo”:
173
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 159 – Criando projeto Web Forms: atribuindo o nome do Projeto
Preenche-se o nome do projeto (TresCamadasAdoNet) e aciona-se o botão “Criar”:
Figura 160 – Criando projeto Web Forms: selecionando Web Forms
174
Unidade IV
Em seguida, deve-se escolher o Web Forms e acionar o botão “Criar”:
Figura 161 – Criando projeto Web Forms: selecionando Web Forms
175
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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.
Figura 162 – Layout sugerido para a página Default.aspx
Figura 163 – Continuação do layout sugerido para a página Default.aspx
176
Unidade IV
Figura 164 – Continuação do layout sugerido para a página Default.aspx
Em seguida a essas etapas, adiciona-se o projeto BLL (business logic layer – camada de regra de negócio).
Para adicionar um projeto, deve-se 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 165 – Adicionar um novo projeto
177
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Localiza-se a biblioteca de classe (.NET Framework) e certifica-se de que a linguagem definida é C#. 
Após realizar a seleção, aciona-se o botão próximo.
Figura 166 – Adicionando biblioteca de classes
Escreve-se o nome do projeto BLL e aciona-se o botão “Criar”:
Figura 167 – Nomeando a biblioteca como BLL
178
Unidade IV
Figura 168 – Camada BLL criada com a classe Class1
Em seguida, deve-se escrever o nome do projeto BLL e novamente acionar o botão “Criar”:
Figura 169 – Camada BLL criada com a classe Class1
179
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Deve-se renomear a classe para “Negócios”. Para realizar essa ação, clica-se com o botão direito do 
mouse sobre a Class1 e seleciona-se a opção renomear.
Figura 170 – Renomeando Class1 para Negócios
A figura a seguir, ilustra o momento em que terminamos de renomear a classe, então o Visual 
Studio “pergunta” se gostaríamos de assumir o novo nome para classe. Nesse instante, deve-se 
acionar o botão “Sim”.
Figura 171 – Classe Negócios
180
Unidade IV
Na figura a seguir, é apresentado o nome classeNegócios:
Figura 172 – Incluindo summary
Para acionar o summary, basta digitar acima do nome da classe ///:
Figura 173 – Desenvolvimento da classe BLL
181
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Nas figuras a seguir, pode-se 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.
Figura 174 – Desenvolvimento da classe BLL
Figura 175 – Continuação do desenvolvimento efetuado na classe BLL (classe Negócio)
182
Unidade IV
Figura 176 – Continuação do desenvolvimento efetuado na classe BLL (classe Negócio)
Figura 177 – Camada DAL com a classe Acesso a Dados
183
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
A seguir, é apresentado 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, e a classe 
será renomeada para AcessoDados:
Figura 178 – Classe AcessoDados dentro da camada DAL
Nas figuras a seguir, pode-se ver a criação dos métodos insert (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 179 – Desenvolvimento efetuado na classe DAL
184
Unidade IV
Figura 180 – Continuação do desenvolvimento efetuado na classe DAL
Na figura anterior, linha 20, pode-se observar a chave de conexão [“EADUNIPSqlServer”], que será 
utilizada para alocar o endereço do banco de dados SQL.
185
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 181 – Continuação do desenvolvimento efetuado na classe DAL
Figura 182 – Continuação do desenvolvimento efetuado na classe DAL
186
Unidade IV
Figura 183 – Continuação do desenvolvimento efetuado na classe DAL
Figura 184 – Realizar referência na camada BLL
187
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Conforme pode ser visto nas figuras a seguir, clica-se com o botão direito do mouse sobre a 
pasta de referências e aciona-se a opção “Adicionar Referência”, em seguida, deve-se selecionar 
Projetos>>DAL e OK.
Figura 185 – Realizar referência na camada BLL da camada DAL
188
Unidade IV
Figura 186 – Realizar referência na camada TresCamadasAdoNet
189
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 187 – Realizar referência na camada BLL na camada TresCamadasAdoNet
190
Unidade IV
Figura 188 – Referência da camada BLL na camada TresCamadasAdoNet
Conforme demonstrado na figura a seguir, deve-se ir à página Default.aspx e efetuar um duplo 
clique no botão “Submeter”. Nesse instante, será criado o btnSubmit_Click. Nessa classe, tem-se que 
atribuir o nome da camada BLL utilizando a palavra using, e na sequência digitar 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 
191
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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 AcessoDados.
Com as informações digitadas na tela de nome, idade e e-mail, o método insert contido na classe 
AcessoDados irá gravar os dados no banco de dados.
Figura 189 – Evento bntSubmit_Click
 Observação
Classe BLL é a camada de negócio, e 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.
192
Unidade IV
Por fim, deve-se acessar o arquivo web.config e alocar o endereçamento do banco de dados, para 
que ele seja localizado dentro da aplicação quando solicitado através da chave [“EADUNIPSqlServer”].
Figura 190 – Arquivo web.config
Figura 191 – ConnectionString
 Lembrete
Criar o banco 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.
193
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
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:
Figura 192 – Tela de download do SQLiteStudio
Figura 193 – Download realizado em formato .zip do SQLStudio
194
Unidade IV
Após a extração do arquivo gerado e mencionado na figura anterior, será gerada a pasta SQLiteStudio, 
conforme apresentado a seguir:
Figura 194 – Pasta do SQLiteStudio
Após acessar a pasta SQLiteStudio, localizar o arquivo SQLiteStudio e acessá-lo conforme 
apresentado a seguir:
Figura 195 – Executável do SQLiteStudio
195
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 196 – SQLiteStudio
Para criar o banco de dados de estudo, precisa clicar em Database → Add a database, conforme 
apresentado a seguir:
Figura 197 – Adicionar banco de dados no SQLiteStudio
196
Unidade IV
Figura 198 – Criar banco de dados no SQLiteStudio
Agora é necessário nomear o banco de dados, conforme apresentado a seguir:
Figura 199 – Criar banco de dados unidade4 no SQLiteStudio
197
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Após adicionar o nome do banco de dados (unidade4) precisa clicar no botão Test Connection, para 
verificar a estabilidade da conexão local, conforme apresentado a seguir:
Figura 200 – Test connection no SQLiteStudio
Após o teste de conexão ter sinalizado com sucesso, clicar no botão OK. Nesse momento, o banco 
de dados está pronto e já é possível criar uma tabela clicando com o botão direito em cima do nome do 
banco de dados (unidade4) → Create a table, conforme apresentado a seguir:
Figura 201 – Criar tabela aluno no SQLiteStudio
198
Unidade IV
Após nomear a tabela, é preciso adicionar os campos necessários para a construção da tabela. 
Clicando duas vezes no espaço vazio da aba Structure será apresentado o que segue na figura:
Figura 202 – Acionar coluna na tabela aluno no SQLiteStudio
Figura 203 – Acionar coluna na tabela aluno no SQLiteStudio
199
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 204 – Acionar coluna na tabela aluno no SQLiteStudio
Para efetivar a construção da tabela, precisa clicar no botão verde Commit structure changes, 
conforme apresentado a seguir:
Figura 205 – Botão Commit structure changes
200
Unidade IV
A seguir, a figura apresenta a mensagem de sucesso. Após essa tela, clicar no botão OK.
Figura 206 – Efetivação da criação da tabela aluno
Figura 207 – Tabela aluno criada
201
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Figura 208 – Tabela aluno criada e armazenada na pasta do SQLiteStudio
Figura 209 – Exemplo de ConnectionString do SQLiteStudio
202
Unidade IV
 Resumo
Nesta unidade, vimos como podemos combinar e integrar técnicas de 
desenvolvimento web, tais como o JavaScript, que, de fato, enriquece todo 
o processo do aplicativo web, principalmente tratando de suas funções e 
métodos, disponibilizando, assim, praticidade e facilidades no front-end na 
atuação de desenvolvimento de software para internet.
Vimos também conceitos de conexão com banco de dados, utilizando 
como base a linguagem C#. Trabalhando com desenvolvimento de aplicativos 
web, utilizamos 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 toda a construção de arquitetura web e sua 
execução, lembrando da preocupação atual em desenvolver com qualidade, 
agilidade e principalmente com a intenção de visualização de página em 
qualquer dispositivo conectado à internet.
 Exercícios
Questão 1. (AOCP 2019) 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:
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.
Resposta correta: alternativa A.
Análise das alternativas
A) Alternativa correta.
Justificativa: todas as palavras da alternativa são palavras reservadas para linguagem Java.
203
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
B) Alternativa incorreta.
Justificativa: as palavras function e real não são palavras reservadas.
C) Alternativa incorreta.
Justificativa: yield é 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 palavras reservadas.
E) Alternativa incorreta.
Justificativa: as palavras var e def não são palavras reservadas.
Questão 2. (Cespe 2019) Assinale a opção que apresenta corretamente a saída gerada pelo código 
Java precedente.
Figura 210 
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.
204
Unidade IV
Análise da questão
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)
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
205
REFERÊNCIAS
Textuais
APRESENTANDO o Bootstrap. GetBootstrap. Disponível em: http://twitter.github.com/bootstrap/index.
html. Acesso em: 25 set. 2020.
BISQUE. Colors Commutercreative. Disponível em: http://www.colors.commutercreative.com. Acesso 
em: 22 set. 2020.
BRASIL. Presidência da República. Casa Civil. Subchefia para Assuntos Jurídicos. 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: http://
www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm. Acesso em: 17 set. 2020.
COYIER, C. Named colors and hex equivalentes. CSS-Tricks, janeiro de 2012. Disponível em: https://css-
tricks.com/snippets/css/named-colors-and-hex-equivalents/. Acesso em: 22 set. 2020.
DOWNLOADS. Visual Studio. Microsoft. 2020. Disponível em: https://visualstudio.microsoft.com/pt-br/
downloads/. Acesso em: 24 set. 2020.
DURÃES, R. Desenvolvendo para web usando o Visual Studio 2008. Rio de Janeiro: Brasport, 2011.
FAÇA mais com o novo Chrome. Google. Disponível em: https://www.google.pt/intl/pt-PT/chrome/. 
Acesso em: 21 set. 2020.
FONT Squirrel. Webfont Generator. Disponível em: https://www.fontsquirrel.com/tools/webfont-
generator. Acesso em: 22 set. 2020.
FORMULÁRIOS HTML. w3schools. 2020. Disponível em: https://www.w3schools.com/html/html_forms.
asp. Acesso em: 21 set. 2020.
GETBOOTSTRAP. Introdução. Disponível em: https://getbootstrap.com/docs/4.4/getting-started/
introduction/. Acesso em: 22 set. 2020.
GROFFE, R. J. ASP.NET MVC: desenvolvendo soluções para web. DevMedia, Rio de Janeiro, 2011. 
Disponível em: http://www.devmedia.com.br/asp-net-mvc-desenvolvendo-solucoes-para-web-revista-
net-magazine-91/22878. Acesso em: 15 set. 2020.
GT acessibilidade. W3C. 2011. Disponível em: https://www.w3c.br/GT/GrupoAcessibilidade. Acesso 
em: 15 set. 2020.
INTRODUÇÃO ao JSON. In: CROCKFORD, D. How JavaScript works. Califórnia, EUA: Virgule-Solidus LLC, 
2018. Disponível em: https://www.json.org/json-pt.html. Acesso em: 23 set. 2020.
206
ISHIDA, R. Servindo HTML & XHTML. Internacionalização. Traduzido por Maurício Samy Silva. W3C. 
2016. Disponível em: https://www.w3.org/International/articles/serving-xhtml/index.pt-br. Acesso 
em: 21 set. 2020.
JANONES, R. de S. Qualidade de software: uma questão de eficiência. DevMedia, Rio de Janeiro, 
2010. Disponível em: http://www.devmedia.com.br/qualidade-de-software-uma-questao-de-
eficiencia/17803. Acesso em: 15 set. 2020.
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: http://www.tecmundo.com.br/infografico/9847-a-historia-da-internet-pre-
decada-de-60-ate-anos-80-infografico-.htm. Acesso em: 15 set. 2020.
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: Erica, 2010.
MATERIALIZE. Materializecss. Disponível em: https://materializecss.com/. Acesso em: 22 set. 2020.
ROBERT, M. C. Código limpo. São Paulo: Alta Books, 2020.
SENDIN, R. Artigo.net Magazine 65. ASP.NET: WebForms X MVC. Comparando as duas formas de 
desenvolver aplicações ASP.NET com WebForms e MVC. DevMedia. Rio de Janeiro, 2009. Disponível 
em: http://www.devmedia.com.br/artigo-net-magazine-65-asp-net-webforms-x-mvc/13896. Acesso 
em: 25 set. 2020.
SERVIÇO de validação de marcação. Validator. W3C. 2013. Disponível em: http://validator.w3.org/. 
Acesso em: 21 set. 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://www.w3.org/International/
articles/serving-xhtml/index.pt-br. Acesso em: 25 set. 2020.
SOBRE O W3C. W3C. 2011. Disponível em: https://www.w3c.br/Sobre/. Acesso em: 15 set. 2020.
STANDARD built-in objects. JavaScript reference. Developer.Mozilla. Disponível em: https://developer.
mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects. Acesso em: 23 set. 2020.
USE as ferramentas de desenvolvedor do Google Chrome para verificar tags. Ajuda do Campaign 
Manager. Support Google. 2020. Disponível em: https://support.google.com/dcm/answer/2828688?hl=pt-
BR. Acesso em: 21 set. 2020.
207
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://www.w3c.br/Noticias/
NovoRoteiroParaFuturoDasPublicacoes. Acesso em: 24 set. 2020.
Sites
http://www.colors.commutercreative.com
http://www.microsoft.com/pt-br
https://code.visualstudio.com
https://github.com/
https://www.dafont.com/pt/
https://www.iso.org/home.html
https://www.lgpdbrasil.com.br
https://www.sqlite.org/index.html
https://www.sublimetext.com
Exercícios
Unidade II – Questão 1: CENTRO DE SELEÇÃO E DE PROMOÇÃO DE EVENTOS (CESPE). Tribunal de Justiça 
do Pará (TJ-PA) 2020: Analista Judiciário. Questão 46. Disponível em: https://arquivos.qconcursos.
com/prova/arquivo_prova/67268/cespe-2020-tj-pa-analista-judiciario-programador-prova.pdf?_
ga=2.35186337.1627829085.1601481671-441665092.1601481671. Acesso em: 30 set. 2020.
Unidade II – Questão 2: FUNDAÇÃO CARLOS CHAGAS (FCC). Técnico Judiciário – Área Apoio Especializado 
Especialidade Informática 2019: Concurso Público. Questão 56. Disponível em: https://arquivos.
qconcursos.com/prova/arquivo_prova/66072/fcc-2019-trf-3-regiao-tecnico-judiciario-informatica-
prova.pdf?_ga=2.26914621.1627829085.1601481671-441665092.1601481671. Acesso em: 30 set. 2020.
Unidade III – Questão 1: CENTRO DE SELEÇÃO E DE PROMOÇÃO DE EVENTOS (CESPE). Tribunal 
de Justiça do Pará (TJ-PA) 2020: Analista Judiciário. Questão 47. Disponível em: https://arquivos.
qconcursos.com/prova/arquivo_prova/67268/cespe-2020-tj-pa-analista-judiciario-programador-prova.
pdf?_ga=2.35186337.1627829085.1601481671-441665092.1601481671. Acesso em: 30 set. 2020.
Unidade III – Questão 2: AOCP. Prefeitura de Juiz de Fora 2016: Programador. Questão 30. Disponível 
em: https://arquivos.qconcursos.com/prova/arquivo_prova/66099/aocp-2016-prefeitura-de-juiz-de-
fora-mg-programador-prova.pdf?_ga=2.68717329.1627829085.1601481671-441665092.1601481671. 
Acesso em: 30 set. 2020.
Unidade IV – Questão 1: AOCP. Empresa Municipal de Informática (EMPREL) 2019: Analista de 
Sistemas. Questão 32. Disponível em: https://questoes.grancursosonline.com.br/prova/emprel-pe-
2019-aocp-2-analista-de-sistemas/1178180. Acesso em: 30 set. 2020.
208
Unidade IV – Questão 2: CENTRO DE SELEÇÃO E DE PROMOÇÃO DE EVENTOS (CESPE). Tribunal de 
Justiça do Pará (TJ-PA) 2019: Analista Judiciário. Questão 44. Disponívelem: https://cdn.cebraspe.org.
br/concursos/tj_pa_19_servidor/arquivos/MATRIZ_507_TJPA013_PAG_4.PDF. Acesso em: 30 set. 2020.
Informações:
www.sepi.unip.br ou 0800 010 9000

Continue navegando