Escolar Documentos
Profissional Documentos
Cultura Documentos
FERRAMENTAS DE
DESENVOLVIMENTO WEB
AULA 4
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 1/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
CONVERSA INICIAL
facilitar o início do
nosso estudo sobre a linguagem. Vamos discutir e detalhar o uso de objetos em
entendimento da
orientação a objetos dentro do JavaScript.
dinamismo nos
documentos HTML usando uma API chamada DOM.
aplicações SPA.
TEMA 1 – OBJETOS
orientação a
objetos e como está incorporado no contexto do Javascript.
ser
manipuladas (ex.: nome, endereço, CEP, carrinhoCompra, saldo, localização),
e desenvolve algumas
calculaDistanciaEntrega(),
Lista_produtos() ). Cada sistema vai ter um conjunto de variáveis e funções
mesmo identificador
(chamado de objeto), que encapsulará as variáveis e funções que serão
usadas
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 2/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
Figura
1 – Encapsulamento de variáveis e funções
Na orientação a objetos, as
variáveis são chamadas de propriedades, e as funções são métodos.
objeto.identificador
(nome do objeto com um ponto separador) ou objeto["identificador"]
(nome do
trabalha com
protótipos na criação de objetos e, por esse motivo, somente a partir da versão
protótipos. No Quadro 1,
temos em (a) um esboço de declaração de objeto literal e em (b) uma
declaração
que pode ser testada no console do navegador.
a) b)
var objeto = { var carrinhoCompras = {
variável: valor,
pedido: [ "Cheese Burguer", "Batata Peq", "Suco
Uva"],
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 3/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
variável: valor,
entregue: false,
pago: false,
nomeFunção: function() {
código
atualiza_estoque: function() { alert("Diminui qtd"); },
},
calcula_compra: function() { alert("Soma produtos"); },
nomeFunção: function() {
atualiza_caixa: function() { alert("Soma valor no caixa"); }
código }
}
}
No
exemplo do Quadro 1 (b), o objeto carrinhoCompras, que exemplifica a
administração de um
e a
variável pago, que também tem um valor booleano para indicar se o pedido
de compras foi pago.
comprados, calcula_compra()
que faria a soma dos preços unitários dos itens selecionados para
compras e atualiza_caixa(),
que incluiria o valor vendido no saldo do caixa. Por ser apenas um
exemplo
didático de como um objeto pode ser declarado, foram definidas poucas
propriedades e
carrinhoCompras.atualiza_estoque()
ou carrinhoCompras.calcula_compra().
documento HTML, o código fica disponível para ser testado via console.
Usando o exemplo do
ou carrinhoCompras.pago
para ver o conteúdo das variáveis ou carrinhoCompras.atualiza_caixa()
para
executar a função.
Figura
2 – Documento HTML com código Javascript no VSC
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 4/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
apenas com
variáveis para o armazenamento de itens a serem utilizados pelo desenvolvedor
em
objeto notaFiscal
sem nenhum elemento. Os dois objetos criados no formato literal: no primeiro, foi
carrinhoCompras
e a criação de um elemento em notaFiscal.
a) b)
var carrinhoCompras = { carrinhoCompras.["entregue"] = true;
pago: false carrinhoCompras.pedido = ["Bolinho de carne",
"Ovo Frito", "Refrigerante"];
}
const
notaFiscal = { } notaFiscal.valor_total
= 1230.5;
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 5/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
Nos
exemplos do Quadro 2(b), temos o uso das duas formas de acesso a uma
propriedade de
ou alterar o conteúdo
de uma propriedade, mas os colchetes têm a vantagem de poder passar o
nome do
identificador durante a execução do programa.
referenciando as variáveis
de dentro do objeto e isso é feito com a palavra-chave this. Quando
usado
dentro de um objeto, o this é uma referência ao objeto onde está
sendo utilizado. Veja na Figura 3
Figura
3 – Exemplo do uso do this em objetos
correspondente. Number,
String e Boolean são objetos do Javascript que estão relacionados
aos
números, strings e tipos booleanos que foram descritos na aula
anterior. Com esses objetos foram
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 6/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
a) b)
c)
No
Quadro 3, no exemplo (c), temos uma amostra do uso das propriedades que já
estão
implementadas nos objetos associados com os tipos primitivos. No caso da string,
as propriedades
função toUpperCase().
A propriedade parseInt() do objeto Number foi utilizada para
retornar apenas a
parte inteira de um número.
criado
um modelo de objeto (a classe) e depois esse modelo é instanciado para
ser utilizado. Toda a
definição das propriedades é feita no modelo e, ao ser
instanciado, as propriedades ficam disponíveis
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 7/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
Saiba mais
Instância é um
termo usado na orientação a objetos e indica que será criada uma versão do
a) Na declaração da classe
"carrinhoCompras" ao lado, a
class carrinhoCompras { sintaxe parece mais limpa.
constructor() { Temos uma função especial
chamada constructor(), que serve
this.pedido = [
"Cheese Burguer", "Batata Peq", "Suco para inicializar a classe. Pode
conter variáveis, a execução de
Uva"]; alguma função ou pode estar vazio.
this.entregue =
false; Os métodos da classe
agora podem ser definidos
this.pago =
false; diretamente, sem a declaração de propriedade com o
uso
} dos dois pontos ( : ).
atualiza_estoque() { Para ser utilizada, a
classe precisa ser instanciada com o uso
alert("diminui qtd"); do operador new, como
visto em (b).
} No momento em que é
instanciada, a classe cria uma cópia
calcula_compra() { do modelo e associa ao
identificador "novo_carrinho".
alert("Soma produtos: "+ this.pedido); Em (b) é demonstrado o
acesso as variáveis e as funções do
} objeto "novo_carrinho"
com o resultado no console.
atualiza_caixa() {
alert("Soma valor no caixa");
}
}
b)
O
exemplo do Quadro 4, apesar de servir para comparação e facilitar o
entendimento do uso de
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 8/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
trabalhar com as
propriedades e métodos de forma dinâmica.
especial de
função para a consulta (get ) e atualização (set) das variáveis
da classe.
b)
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 9/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
Os
tipos get e set tornam o acesso às variáveis mais controlados e a
sintaxe para uso dessas
funções é semelhante ao de uma variável padrão. O
benefício é maior quando temos várias
adicional de abstração,
o desenvolvedor pode ir criando camadas mais genéricas que podem servir
para
outras situações.
Os desenvolvedores iniciantes
acabam tendo dificuldade com a abstração necessária para definir
um objeto,
assim como suas características e as ações que devem ser implementadas para esse
objeto ser utilizável dentro do programa. Isto porque, para tornar um objeto
mais genérico e
2.1 HERANÇA
desenvolvedor estaria
criando pela primeira vez, um sistema de aluguel de casas e apartamentos para
uma imobiliária pequena e, a princípio, criou os objetos casa e apartamento
para organizar as
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 10/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
futuras manutenções e
adaptações para as mesmas variáveis e funções em dois objetos poderiam
gerar
alguns problemas. E pode ser pior caso o desenvolvedor não seja o mesmo, pois
outro
a) b)
class
casa { class
apartamento {
constructor(END, QUARTOS, SUITE, WC, COZ,
constructor(END, QUARTOS, SUITE, WC, COZ, VARANDA, ELEV,
QUINTAL, VALOR) { SFEST, VALOR) {
this.endereco = END; this.endereco = END;
this.quartos = QUARTOS; this.quartos = QUARTOS;
this.suite = SUITE; this.suite = SUITE;
this.banheiro = WC; this.banheiro = WC;
this.cozinha = COZ; this.cozinha = COZ;
this.quintal = QUINTAL;
this.varanda = VARANDA;
this.valor = VALOR;
this.elevador = ELEV;
}
this.s_festas = SFEST;
this.valor = VALOR;
get consEnd() {
}
return this.endereco;
}
get consEnd() {
get consQuartos() {
return this.endereco;
return this.quartos;
}
}
get consQuartos() {
}
return this.quartos;
}
}
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 11/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
antecipado ao
desenvolver o sistema. O desenvolvedor avalia antecipadamente quais
características
de um
objeto mais genérico chamado imovel, que será utilizado pelos objetos casa
e apartamento.
a)
class
imovel {
constructor(END, QUARTOS, SUITE, WC, COZ, VALOR) {
this.endereco = END;
this.quartos = QUARTOS;
this.suite = SUITE;
this.banheiro = WC;
this.cozinha = COZ;
this.valor = VALOR;
}
get consEnd() {
return this.endereco;
}
get consQuartos() {
return this.quartos;
}
}
b) c)
class
casa extends imovel { class
apartamento extends imovel {
constructor(END, QUARTOS, SUITE, WC, COZ,
constructor(END, QUARTOS, SUITE, WC, COZ, VARANDA, ELEV,
QUINTAL, VALOR) { SFEST, VALOR) {
super( END, QUARTOS, SUITE, WC,
COZ, VALOR );
super( END, QUARTOS, SUITE, WC,
COZ, VALOR );
this.quintal = QUINTAL;
} this.varanda = VARANDA;
this.elevador = ELEV;
get consQuintal() { this.s_festas = SFEST;
return this.quintal; }
}
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 12/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
}
get consElevador() {
return this.elevador;
}
}
e apartamento.
Em (b) o objeto casa adiciona tudo que está no objeto imovel,
usando o extends
imovel na sua definição. O construtor de casa
recebe todos os parâmetros necessários e repassa para
o construtor de imovel
os parâmetros deste, usando a função padrão super( ). Em seguida, é
definida
apartamento,
que adiciona mais três propriedades além das existentes em imovel.
carregados via
documento HTML.
Figura
4 – Uso das classes casa e apartamento com herança
objeto casa
e os parâmetros de preenchimento de todas as variáveis. Logo em seguida, ao
digitar
"primeira_casa" no console, são exibidas todas
propriedades: as que foram herdadas de imovel e a
propriedade quintal,
mostrando que todas agora fazem parte do objeto casa.
2.2 MÓDULOS
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 13/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
Durante o desenvolvimento de
sistemas mais complexos ou com mais desenvolvedores, algumas
funções ou objetos
que são criados para serem utilizados em várias partes do sistema sugerem o uso
de algum mecanismo para trazer essa funcionalidade para dentro do seu código.
class
carrinhoCompras { <html>
constructor(PEDIDO, ENTREGUE, PAGO) { <head><title>Objetos</title>
this.pedido = PEDIDO; </head>
this.entregue = ENTREGUE; <body>
this.pago = PAGO; <script
type='module'>
} import { carrinhoCompras } from './mod-carrinho.js';
get consultaPedido() {
return this.pedido; let
nova_compra = new carrinhoCompras(
["Pastel", "Suco"], false,
} true );
set confirmaPagto(CONFIRMA) { let
primeiroItem = nova_compra.consultaPedido[0];
this.pago = CONFIRMA;
} console.log(
primeiroItem );
get confirmaPagto() {
return this.pago; </script>
} </body>
atualiza_estoque() { alert("diminui qtd"); } </html>
calcula_compra() { alert("Soma produtos: "+
this.pedido); }
atualiza_caixa()
{ alert("Soma valor no caixa"); }
}
export { carrinhoCompras } ;
completo que vai utilizar a classe exportada em (a) está listado em (b)
e mostra o atributo
type=’module’ da tag <script>,
que indica que será utilizada uma importação. Na primeira linha do
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 14/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
código
Javascript, temos a declaração da importação, definindo que será feita a
importação de
O desenvolvimento de sistemas
conectados em rede muitas vezes exige que seja possível
transferir informações
entre os sistemas, permitindo que o processamento seja distribuído, como
quanto o receptor
consigam restaurar o significado original. No desenvolvimento de sistemas web,
que o Javascript
utiliza para criar os objetos literais chamada JSON (Javascript Object
Notation ou
a) b) c)
' { '{ '{
"endereco": "Rua dos "caixa": 1, "cep":
"80020-020",
alfeneiros", "data":
"11/05/2020", "pedidos": [
"logradouro": "Avenida Luiz
"quartos": 2, { Xavier",
"suite":
0, "pedido": [
"Cheese Burguer", "Batata Peq", "Suco
"complemento": "",
"banheiro": 1, Uva"], "bairro":
"Centro",
"cozinha": 1, "entregue":
false,
"localidade": "Curitiba",
"valor":
950, "pago": false "uf":
"PR",
"quintal": 50.2 }, "ibge":
"4106902",
} ' { "gia":
"",
"pedido": [
"Pastel", "Cerveja"], "ddd":
"41",
"entregue":
false, "siafi":
"7535"
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 15/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
No
Quadro 9, foram listados 3 exemplos de JSON (indicados com a, b e c), e que
estão
detalhados abaixo:
array
de objetos da “carrinhoCompras”. Um exemplo de objetos dentro de objetos;
c. Neste
último exemplo, temos o retorno no formato JSON de uma consulta gratuita CEP
que
Saiba mais
Resultado
da consulta:
para
poder ser acessada e trabalhada. Essa estrutura apenas pode conter variáveis,
mesmo que tenha
como valor outros objetos literais, portanto não é permitida
a inclusão de funções, e o uso de aspas
movimento
de mouse, teclado), o desenvolvedor poderá interagir com o usuário do
navegador de
diferentes maneiras.
a) b)
<html>
<head>
</head>
<body>
<script>
var cor = "yellow"
function troca_cor() {
if (cor == "yellow") {
cor = "green"; c)
} else {
cor = "yellow";
}
document.body.style.background = cor;
}
</script>
<button type="button" onclick="troca_cor()"
> Troca a Cor</button>
</body>
</html>
No
Quadro 10, em (a) temos o HTML com o JavaScript listado
dentro da tag "<script>". No
ao
ser clicado ( onclick ), executa a função que usa o DOM para acessar o
CSS e alterar a cor de fundo
do
Javascript utilizada para trocar a cor de fundo: document.body.style.background.
Figura
5 – Modelo de dados do DOM
normalmente referenciados
como “pais” e “filhos”, conforme são identificados elementos e atributos
que
estão aninhados dentro de outros elementos.
a) b)
<div>
<h1> TITULO
</h1>
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 18/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
<div>
<table>
<tr>
<td> </td></tr>
</table>
<p> texto
comum </p>
</div>
</div>
respectivo objetivo:
identificação informado;
CSS informado;
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 19/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
a) b)
<html>
<head>
</head>
<body>
<script>
document.body.style.background = "yellow";
var tab = 5;
document.write("<h1>Tabuada
do "+tab+"</h1>");
for( let num = 0; num < 10; num++) {
document.write( tab+" x
"+ num+" = <b>"+ tab*num +"</b>
<br>");
}
</script>
</body>
</html>
criar novos
elementos no documento. Essa criação pode estar condicionada a um evento,
algum dado
dinâmico ou a lógica do algoritmo JavaScript carregado no navegador.
<body>
<script>
let texto = prompt("Digite o texto
para o titulo!");
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 20/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
let obj_titulo = document.createElement("h1");
let obj_conteudo = document.createTextNode( texto );
obj_titulo.appendChild(obj_conteudo);
document.body.appendChild(obj_titulo);
</script>
</body>
“appendChild( )”.
A mesma sequência é feita no final do código anexando o objeto do <h1>
com seu
conteúdo como filhos do elemento <body>.
exemplo desse
tipo de ação é visto no Quadro 14, que cria um atributo de um evento de clique
do
mouse em um texto de parágrafo comum.
<body>
<script>
function clica_texto() {
var liga_click = document.getElementById("texto_comum");
var att_click = document.createAttribute("onclick");
att_click.value = "liga_alerta()";
liga_click.setAttributeNode(att_click);
}
function
liga_alerta() {
alert( "Texto agora tem evento!!!");
}
</script>
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 21/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
<button onclick="clica_texto()"> Liga clique do texto
</button>
<br>
<p
id="texto_comum"> Texto Comum!!</p>
</body>
Este
novo atributo só é criado após clicar no botão Liga clique do texto,
mostrado na Figura 6.
</p>”.
FINALIZANDO
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 22/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
herança e
importação de objetos, a abordagem foi reforçar a análise dos códigos para a
eventual
explicado e
exemplificado nesta aula.
com os
elementos HTML e CSS das aulas anteriores. Com o DOM o JavaScript pôde promover
uma
maior capacidade de automação das informações a serem apresentadas e criar
uma base para o
desenvolvimento de aplicações SPA.
REFERÊNCIAS
BROWN, E. Learning
JavaScript: add sparkle and life to your web pages. Sebastopol, CA: O'Reilly
Media, Inc., 2016.
MODELO de
Objeto de Documento (DOM). MDN Web Docs, S.d. Disponível em:
<https://developer.mozilla.org/pt-BR/docs/DOM/Referencia_do_DOM>. Acesso
em: 27 mar. 2021.
VIACEP.
Consulta JSON. Viacep, S.d. Disponível em: <https://viacep.com.br/ws/80020020/json/>.
Acesso em: 27 mar. 2021.
WORKING
with JSON. Trabalhando com JSON. MDN Web Docs, S.d. Disponível em
<https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON>. Acesso em: 27 mar.
2021.
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 23/24
10/09/2021 16:13 UNINTER - FERRAMENTAS DE DESENVOLVIMENTO WEB
https://conteudosdigitais.uninter.com/libraries/newrota/?c=/gradNova/2021/analiseDesenvSistemas/ferramentasDesenvWeb/a4 24/24