Lição 8: JavaScript e Conceitos
de Orientação a Objetos
de Orientação a Objetos
Olá, aluno(a)! Nesta aula, você dará os primeiros passos na linguagem de programação JavaScript, que é uma das mais faladas na internet e com o maior número de vagas de trabalho disponíveis no cenário de desenvolvimento, seja para aplicações Web, sites, seja, principalmente, para desenvolvimento de aplicativo móveis. Essa linguagem, a princípio, está disponível para utilização através do seu navegador Web. Segundo Flanagan (2013), o nome “JavaScript” é um pouco enganoso, a não ser pela semelhança sintática superficial, pois o JavaScript é completamente diferente da linguagem de programação Java.
Você, também, será apresentado(a), nesta aula, a alguns conceitos do paradigma de Programação Orientada a Objetos, conhecida pela sigla POO, que, segundo Felix (2016), facilita a relação da máquina com o mundo real, porque qualquer coisa que pertença ao mundo físico pode ter um representante na esfera digital: uma pessoa, um emprego ou um objeto. Esses exemplos são o que chamamos de objetos na Programação Orientada a Objetos (POO).
Em resumo, ao final desta aula, você terá dado os primeiros passos dentro da linguagem JavaScript, seguindo os conceitos básicos da POO, mais precisamente, terá visto uma breve introdução seguida dos conceitos de interface e herança.
Considere que você está começando no mundo da programação de aplicativos para dispositivos móveis e descobre que existem duas grandes plataformas: Android e iOS. Cada uma delas possui um ambiente de desenvolvimento específico. Durante o seu caminho, você listará todos os requisitos de conhecimento que terá que possuir para concluir sua tarefa de se transformar em um(a) grande desenvolvedor(a) e descobre que terá que aprender Java, Kotlin, Android Studio, basicamente, para desenvolver para Android e terá que comprar um Macbook ou um iMac para aprender Objective-C, Swift e Xcode. E agora? Quanto isso me custará? Quanto tempo levarei?
Estudando mais um pouco, você descobre que já existe uma forma de desenvolver aplicativos de uma só vez e, depois, "empacotá-los" para cada uma das plataformas citadas há pouco. Essa forma é chamada de desenvolvimento híbrido, no qual, por meio de três tecnologias, o HTML5, CSS3 e a linguagem de programação JavaScript, com o auxílio do framework React-Native — uma biblioteca JavaScript criada pelo Facebook, que é usada para desenvolver aplicativos para os sistemas Android e iOS de forma nativa —, você cria o código do aplicativo uma vez só e, ao final, gera os “executáveis” para instalação nas duas plataformas.
Assim, a solução do problema apresentado passa, inicialmente, pelo conhecimento da linguagem de programação JavaScript, que é uma linguagem muito utilizada no front-end e multiparadigma, além de outras características que auxiliam em seu “empacotamento” juntamente com a linguagem de marcação e a linguagem de estilização de aplicativos conforme a sua necessidade para Android e para iOS, conseguindo, ao conhecer somente um ambiente de desenvolvimento, abranger praticamente todo o mercado de dispositivos móveis mundial. E, para uma melhor organização do código e, principalmente, a sua reutilização, você terá o auxílio do paradigma de Programação Orientada a Objetos.
Nesta aula, apresentarei um case fictício, mas que poderia ser — e, em muitos casos, é — real na vida da profissão de desenvolvedor. Contarei a história da desenvolvedora Maria, que se descobriu na profissão de desenvolvedora de aplicativos móveis e, logo de cara, nos primeiros livros, cursos e aulas, percebeu que, para ganhar tempo na nova profissão, deveria optar pelo desenvolvimento híbrido, pois conseguiria, com HTML5, CSS3, JavaScript e React-Native, construir aplicativos que poderiam estar disponíveis para as duas grandes plataformas do mercado: Android e iOS.
Outro ponto que fez Maria optar pelo desenvolvimento híbrido foi a questão de que, se, no futuro, ela precisasse desenvolver algo para a Web, ela estaria totalmente apta, uma vez que, com as tecnologias mencionadas no parágrafo anterior, substituindo somente o React-Native pelo React, ela conseguiria criar sites e/ou sistemas, agregando, assim, mais valor aos seus serviços.
Com seu notebook que, inclusive, utiliza para seus estudos, Maria instalou todo o ambiente de desenvolvimento, iniciou seus estudos e, em breve, estará com seus projetos no Github — repositório no qual os desenvolvedores armazenam seus códigos de forma pública, como portfólio, ou de forma privada, para armazenamento dos projetos.
*Quer conhecer o Github? Então, clique aqui.
Agora que você compreende a necessidade de aprender a linguagem JavaScript e os conceitos básicos de orientação a objetos, chegou a hora de começar. Apresentarei uma breve introdução sobre a linguagem, os seus tipos e a sintaxe básica, além dos conceitos básicos da orientação a objetos, incluindo os conceitos de interface e herança.
JavaScript é considerada por alguns desenvolvedores como a linguagem de programação da Web. Isso porque todos os navegadores modernos, como desktop/notebook, consoles, tablets e smartphones, possuem interpretadores JavaScript. Além disso, segundo Flanagan (2013), a linguagem JavaScript é a mais onipresente da história e, repetidas vezes, é mencionada nesta disciplina como parte de uma tríade de tecnologias que todos os desenvolvedores Web e de aplicativos móveis híbridos devem conhecer: HTML5, CSS3 e JavaScript. Essa tríade, por sua vez, tem como função especificar o comportamento das páginas e/ou do aplicativo.
Como já dito em aulas anteriores, podemos ter acesso ao JavaScript, através dos próprios navegadores, pelas ferramentas de desenvolvedor deles — na maioria deles, é só teclar F12 e selecionar a opção Console. Você terá, à sua disposição, somente uma seta apontada para a direita (>) e poderá clicar com o mouse logo à sua direita. Na sequência, digite o seguinte comando: console.log(‘Olá mundo’) e verá o resultado escrito logo na sequência no próprio console.
Você conhecerá, agora, como os comandos JavaScript são escritos, o que chamamos de sintaxe da linguagem. Você já se deparou com um comando no parágrafo anterior, o console.log, que serve para exibir um texto, como você fez, ou exibir o conteúdo de uma variável, que é um espaço de memória reservado para armazenar informações. A instrução mais básica que podemos ter em uma linguagem de programação são os comentários do código, que são utilizados para dar informações sobre o código na sequência. Na Figura 1, podemos conhecer a estrutura básica de comentários em JavaScript:
Bem, agora que você já sabe escrever comentários em JavaScript, eu o(a) apresentarei às variáveis, conceito já explicado no parágrafo anterior. Elas podem ser declaradas de três formas, conforme Figura 2:
Para se atribuir um valor a uma variável, devemos utilizar o sinal =. Por exemplo, ao atribuir o valor 10 à variável nota, teríamos: var nota = 10;.
Muito bem! Agora, você sabe que é por meio das variáveis que se armazenam valores temporários dentro de um aplicativo. Entretanto, já parou para pensar quais tipos de informações podemos armazenar utilizando JavaScript? Não se preocupe, você as conhecerá agora!
Números: utilizado apenas um tipo de NUmber para inteiros e reais.
Strings: strings são textos que podem estar entre aspas (“) ou apóstrofos (').
Valores booleanos: variáveis booleanas só aceitam true (verdadeiro) ou false (falso).
null: é um valor especial que significa que a variável não tem nenhum valor.
undefined: uma variável declarada, mas não definida com valores.
Coloquei, de forma separado, dois outros tipos de armazenamento de dados devido à sua importância dentro do desenvolvimento que utiliza a linguagem de programação JavaScript. São eles:
Uma expressão é como uma frase em JavaScript, que pode ser analisada e avaliada para retornar um valor. Pode-se realizar operações aritméticas de comparação e de relação por meio dos operadores, como verá a seguir:
O Paradigma de Orientação a Objetos utiliza, em sua essência, os conceitos de classes e objetos, pois, quando se programa em uma linguagem orientada a objetos, você tenta trazer ou resolver um problema do mundo real para o/no computador ou dispositivo móvel.
Segundo Barnes e Kolling (2004, p. 3), “as partes das quais o modelo é construído são os objetos que aparecem no domínio do problema. Esses objetos devem ser representados no modelo de computador que estiver sendo criado”. Contudo, esses objetos devem ser categorizados, e uma classe, de forma abstrata, descreve os objetivos de uma maneira particular.
Gosto muito de uma analogia que é a seguinte: os objetos são como os bolos que as mães preparam em casa, e as classes são as receitas para esses bolos, ou seja, uma classe gera vários objetos, da mesma forma que, com uma mesma receita, pode-se fazer vários bolos.
O que, entretanto, deve-se ter em uma classe? Bem, as classes definem as propriedades, também chamadas de atributos que aquele objeto deverá ter, e seus métodos, que são os comportamentos que aquele objeto deverá executar.
O Paradigma da Orientação a Objetos traz, em seu conceito, quatro pilares essenciais para que você tenha vantagem em detrimento de outra abordagem e para que ele funcione plenamente. São eles:
É uma das características mais importantes do paradigma. Neste pilar, trabalha-se com representações do mundo real, ou seja, a partir de um objeto real do nosso dia a dia, você tem que imaginar como esse objeto se comportará dentro de sua aplicação. Por isso, o nome “Paradigma Orientado a Objetos”.
O objetivo deste pilar é restringir a visibilidade, assim, a característica é de segurança, pois é onde se escondem propriedades dos objetos para trazer transparência ao programador. Você sabe que tem a propriedade ou o método, mas não precisa saber como ele faz, somente o que ele faz.
A reutilização de código é essencial para um bom código orientado a objetos, e isso está muito ligado a este conceito de herança. Imagine um filho herdando características de um pai, pois bem: você codifica a classe Pai, e a classe Filho herda as propriedades e os métodos do Pai, que são semelhantes, ou seja, você reutiliza tudo o que foi codificado na classe Pai para a classe Filho, e as propriedades e os métodos que somente o Pai tem podem ser codificadas somente na classe Filho.
Segundo Felix (p. 23, 2016), “a herança é uma maneira de reutilizar o código. Nela, uma nova classe é criada, absorvendo os membros de uma classe já existente, que são aprimorados com novas ou melhores capacidades”. Ou seja, você consegue ser mais produtivo(a), uma vez que aquelas classes possuem uma relação, digamos, familiar, por isso, compartilham atributos e métodos, mas que, de alguma forma, podem ser especializados para cada ocasião.
Outra ferramenta fantástica do paradigma é o polimorfismo, em que podemos criar métodos dentro de uma classe que reagem ou funcionam de forma diferente dependendo do objeto que é executado. Novamente, a reutilização de código traz um entendimento e uma ligação maior com o mundo real para os comportamentos da aplicação.
As definições apresentadas constituem os quatros pilares da Orientação a Objetos. Seguindo esses pilares, você conseguirá escrever um código orientado a objetos sucinto, flexível e com qualidade!
Nas linguagens de Programação Orientadas a Objetos, você pode utilizar um recurso chamado de interface — que não é o que conhecemos como interface do usuário, e, sim, a especificação de um nome ou de um conjunto de métodos que não define uma implementação para os métodos ligados a ela (BARNES; KOLLING, 2004). Resumindo: uma interface é um arquivo específico que, diferente de uma classe, não possui atributos ou propriedades, somente o cabeçalho dos métodos. Isso tudo porque a implementação, ou o que esse método deve fazer, será codificada somente na classe que implementa essa interface. Torna, assim, a relação entre a classe e a interface em um contrato que diz minimamente o que essa classe deverá fazer.
Diferente das aulas anteriores, hoje, você, literalmente, colocará a mão na massa neste item, pois criará sua primeira classe em JavaScript e a executará em seu navegador favorito. Vá até seu navegador, pressione a tecla F12, selecione a aba Console e digite o código presente na Figura 3. Você, também, pode abrir seu editor de textos favorito, digitar o código, selecioná-lo e copiá-lo para a ferramenta de desenvolvedor do seu navegador:
Depois que você digitou o código, copiou e colou na ferramenta de desenvolvedor do seu navegador na aba Console ou, simplesmente, digitou o código diretamente no navegador, você deverá digitar o seguinte comando: classe.dizer() e teclar Enter. Você deverá ter a seguinte resposta: Olá mundo Jose Maria da cidade de Curitiba. Agora, você poderá “brincar” com o código digitado, substituindo o nome e/ou a cidade, bem como criando propriedades novas e alterando o que será exibido no console.log do método dizer.
BARNES, D. J.; KOLLING, M. Programação Orientada a Objetos com Java. São Paulo: Pearson Prentice Hall, 2004.
FELIX, R. Programação Orientada a Objetos. São Paulo: Pearson Education do Brasil, 2016.
FLANAGAN, D. JavaScript: o guia definitivo. 6. ed. Porto Alegre: Bookman, 2013.