Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem Java: conceitos essenciais de desenvolvimento para dispositivos móveis APRESENTAÇÃO Para o desenvolvimento de aplicativos Android é utilizada a linguagem de programação Java que, não por acaso, é uma das linguagens de programação mais utilizada no mundo. De certa forma foi uma escolha lógica para a plataforma Android, levando em conta que Java é uma linguagem de programação poderosa, gratuita, com o código-fonte aberto e milhões de desenvolvedores já conhecem a linguagem. A linguagem Java é orientada a objetos e conta com uma ampla biblioteca de classes, que ajuda o desenvolvedor a construir aplicações poderosas em menor tempo, visto que fornece recursos prontos para o desenvolvedor configurá-las e utilizá-las da forma que achar adequado. Nesta Unidade de Aprendizagem, você vai conhecer a linguagem Java, seu conceito de classes e seus principais tipos de dados. Também irá estudar o conceito de orientação a objetos em Java, analisando vários recursos disponíveis na linguagem, visando a desenvolver uma visão sólida da linguagem Java aplicada ao desenvolvimento de aplicativos Android. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Descrever as características da linguagem Java: classes e tipos de dados.• Identificar os principais conceitos de programação orientada a objetos com Java.• Operacionalizar a utilização do Java como linguagem-base para o desenvolvimento de aplicações Android. • DESAFIO A linguagem Java possui como uma de suas características mais marcantes a orientação a objetos, o que fornece recursos como a herança, o polimorfismo e o encapsulamento. Em conjunto, essas características tornam a linguagem Java muito atrativa e poderosa, no sentido de construir aplicações complexas com conjuntos de códigos não tão complexos assim. Com base nisso, imagine a seguinte a situação: INFOGRÁFICO Recursos em um dispositivo móvel atualmente podem não ser extremamente limitados como no passado. Porém, o seu uso consciente é recomendável por vários motivos. Um exemplo é o consumo de bateria que, normalmente, é um recurso crítico do dispositivo móvel. Logo, alto processamento e grandes quantidades de memoria RAM em uso consomem quantidades substanciais de bateria do dispositivo, limitando o seu tempo útil sem a necessidade de recarregar a bateria. Confira, no Infográfico, mais informações sobre como minimizar o uso de processamento e memória RAM consumidos por seu aplicativo Android, utilizando de forma consciente os tipos de dados disponíveis no Java. CONTEÚDO DO LIVRO Existem diversas linguagens de programação disponíveis no mercado, cada uma com suas características e funcionalidades. Dentre todas as possibilidades, o Android selecionou o Java como a linguagem indicada para o desenvolvimento de seus aplicativos. É possível elencar diversos motivos para isso. Antes mesmo do Android existir, o Java já era uma das linguagens de programação mais utilizadas no mundo e já tinha versões destinadas às mais diversas áreas, inclusive dispositivos móveis. Logo, a escolha do Java para o Android foi um ponto chave para a plataforma, uma vez que já era uma linguagem madura, utilizada na área em que o Android iria atuar e tinha as características de uma linguagem de programação moderna, possibilitando, por exemplo, a orientação a objetos. Java já tinha uma ampla quantidade de bibliotecas, fornecendo recursos e funcionalidades para o desenvolvedor criar aplicações complexas em um curto espaço de tempo. No capítulo Linguagem Java: conceitos iniciais, da obra Desenvolvimento para dispositivos móveis, você vai conhecer as características da linguagem de programação Java, identificando as funcionalidades de suas classes e os seus diversos tipos de dados disponíveis para utilização. Também irá compreender, por meio de exemplos práticos, o conceito de linguagem de programação orientada a objetos, bem como as funcionalidades que tais características disponibilizam ao desenvolvedor. Verá ainda as funções presentes na linguagem para realização de operações, tomada de decisão e diversos outros recursos imprescindíveis para o desenvolvimento de um aplicativo Android. Boa Leitura. DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS Diego Bittencourt de Oliveira Linguagem Java: conceitos essenciais Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Descrever as características da linguagem Java, como suas classes e tipos de dados. � Identificar os principais conceitos de programação orientada a objetos com Java. � Operacionalizar a utilização do Java como linguagem base para o desenvolvimento de aplicações Android. Introdução Neste capítulo você conhecerá a linguagem de programação Java, que é a linguagem de programação nativa da plataforma Android. Por ser muito popular, esta linguagem foi a escolha mais adequada como lin- guagem de programação padrão da plataforma. Isso se deve ao fato de existirem muitos desenvolvedores experientes nesta linguagem. Assim, a plataforma já inicia com milhões de desenvolvedores especializados em sua linguagem de programação base. O Java também é uma linguagem de programação potente, sendo totalmente orientada a objetos, além de possuir uma enorme biblioteca de classes muito sólida e atualizada de forma regular. No decorrer deste capítulo, conheceremos melhor as características das classes Java, bem como os tipos de dados que a linguagem de programação disponibiliza para o seu desenvolvedor. Veremos, também, os conceitos de programação orientada a objetos com Java e aprenderemos, ainda, a utilizar Java como linguagem padrão para o desenvolvimento de aplicações para Android. Linguagem Java: classes e tipos de dados Segundo Deitel, Deitel e Deitel (2015), a linguagem Java para aplicativos Android é semelhante e, ao mesmo tempo, muito diferente de outras aplicações desenvolvidas nesta linguagem. Um desenvolvedor com experiência em Java terá facilidade em desenvolver aplicativos para Android, mas compreenderá a diferença mencionada. Já um desenvolvedor com pouca experiência nesta linguagem deve buscar se familiarizar. Como já mencionado, Java é uma linguagem de programação orientada a objetos, ou seja, baseada na modelagem de objetos e na comunicação que estes possuem entre si. Em uma situação de analogia a um objeto real, pode-se definir o objeto caneca, algumas de suas propriedades seriam a cor, a capacidade máxima e a quantidade de café que possui. Em uma linguagem orientada a objetos, podemos definir objetos canecas e acessar suas propriedades. Poderíamos também enviar mensagens para os objetos, questionando- -os sobre a quantidade de café existente em cada caneca. Assim, é possível observar que é possível criar e manipular qualquer objeto, fazendo com que estes realizem diversas funções em um aplicativo. Em uma situação mais cotidiana da plataforma Android, temos o objeto câmera, que representa a câmera física do dispositivo. Por meio deste objeto, podemos manipular a câmera para que tire uma foto com base nas propriedades que definimos e nos métodos que chamamos para configurá-la. Antes de criarmos uma classe que represente um objeto, temos de estudar os tipos de dados disponíveis, uma vez que a programação é basicamente um trabalho com dados. Segundo Goodrich e Tamassia (2013), Java possui basicamente dois grupos de tipos de dados: � tipos primitivos — correspondem a dados mais simples ou escalares; � tipos por referência — correspondem a tipos de dados representados por classes, ou seja, todos os outros tipos de dados não primitivos. Na Figura 1, podemos observar os tipos primitivos de dados existentes na linguagem Java, bem como os limites de valores que estes tipos podem armazenar. Por exemplo, uma variável do tipo byte não pode armazenar o valor 400, visto que esta só armazena dados até 127 positivo. LinguagemJava: conceitos essenciais2 Figura 1. Tipos primitivos de dados. Fonte: Schützer e Massago (2008, documento on-line). Os tipos por referência são classes, conforme já citamos e, por convenção de nomenclatura, as classes em Java são nomeadas com a primeira letra do nome em maiúsculo. Por exemplo, Goodrich e Tamassia (2013) relatam que String é um dos tipos de dados por referência mais comuns da linguagem Java, sendo que a String é basicamente uma lista de elementos char. Ou seja, podemos armazenar a frase “Android é uma boa plataforma” em uma variável do tipo String, em que cada uma das letras seria um char. 3Linguagem Java: conceitos essenciais Na linguagem Java você pode inserir frases e comentários junto ao código do seu aplicativo, sem que estas informações realizem qualquer interferência no fluxo do programa. Abaixo temos um exemplo: //Este é um comentário de uma linha O texto após as // não é interpretado pelo compilador do Java, ou seja, serve para que os desenvolvedores escrevam informações pertinentes no código, seja para identificar o que um determinado trecho de código faz ou outra informação qualquer. Também podemos criar comentários de várias linhas em Java. Neste caso, o comentário é realizado utilizando um bloco, conforme exemplo abaixo (o comentário inicia com /* e é finalizado com */): /* Início do comentário, Segunda linha do comentário e o Final do comentário */ Uma variável é basicamente um recipiente que possui um determinado tipo, sendo que este define o tipo de dado que a variável irá armazenar. Isso se deve ao fato de a linguagem Java ser estaticamente “tipada”, ou seja, devemos informar ao Java o tipo da variável que estamos definindo. Abaixo temos um exemplo: String Cliente = "Alberto Ribeiro"; No exemplo acima, criamos uma variável do tipo String, cujo nome é Cliente. Ainda podemos identificar o operador de atribuição = (veremos adiante outros operadores, sendo o operador de atribuição = um dos mais básicos da linguagem Java) e o valor que está sendo atribuído Alberto Ribeiro, no final temos o identificador do final do comando ;. Ou seja, na variável Cliente temos o texto indicado, sendo o valor armazenado na variável que criamos. Linguagem Java: conceitos essenciais4 O conceito básico de uma classe é apresentado abaixo, em que temos uma classe Pessoa com um atributo do tipo String chamado nome e um construtor (void Pessoa(String nome)) que inicializa o atributo nome com o valor, passado no construtor: class Pessoa { String nome; Pessoa(String nome) { this.nome = nome; } } Observe, no exemplo acima, a declaração this. Quando utilizamos essa declaração, estamos informando que o atributo utilizado está declarado na classe. Logo, this.nome pertence à classe e nome se refere ao parâmetro passado ao construtor. Abaixo, podemos observar um modelo conceitual de classes, [class|abstract|interface] [Nome da Classe] { [Construtor] [Atributos ou Variáveis] [Métodos] } em que: � [class|abstract|interface] — refere-se ao tipo, que pode ser class, ou seja, uma classe do tipo class, ou uma interface, sendo que este define uma espécie de padrão ou interface padrão que uma classe deve implementar. Ainda possuímos a abstract class, que é uma classe abstrata, sendo que esta pode conter métodos implementados e não implementados (os conceitos de interface e classe abstrata serão desenvolvidos no decorrer deste capitulo); � [Nome da Classe] — deve ser único no pacote atual e seguir as mesmas regras de nomenclatura dos métodos; 5Linguagem Java: conceitos essenciais � [Construtor] — um método que é chamado por padrão ao utilizar (instanciar) uma classe, sendo que este método pode inicializar os atributos da classe ou simplesmente não conter implementação alguma. Deve possuir o mesmo nome da classe e sua existência é obrigatória, mesmo que não contenha implementação, no caso de se tratar de uma interface que não possui nenhum construtor; � [Métodos] — segue o padrão já mencionado anteriormente para métodos, com a diferença de que, em interfaces, não temos a imple- mentação do método, apenas sua definição. Os exemplos ficariam void Calcula ();, float ValorPI(); e float Total (int Qtd, flota Preco); e a classe que implementar essa interface deve também realizar a implementação destes métodos. As classes em Java, além das variáveis e dos atributos, possuem ainda métodos, sendo que os métodos podem realizar diversos comandos. A estrutura de um método pode ser observada abaixo: [retorno] [nome do método]([tipo dos dados] [nome do parâme- tro], …) { [código do método] [return] [valor do retorno] } Observe, a seguir, o que significa cada termo da estrutura de um método, como vimos acima: � [retorno] — é o tipo de dado (seja ele primitivo ou do tipo referência) que o método irá retornar. Uma vez informado, é obrigatório que seja retornado um valor. Para não retornar nenhum valor, informamos ao invés do tipo da variável a palavra void, que significa que nada será retornado; � [nome do método] — nome que remeta à funcionalidade do método. As únicas ressalvas ao nomear o método são que caracteres especiais e espaços não devem ser utilizados e o nome do método não pode conter espaços. Neste caso, podemos utilizar o caractere underline (por exemplo, Nome _ Pessoa); � [tipo dos dados] [nome do parâmetro] — um método pode não possuir parâmetros. Neste caso, utilizam-se os ( ), sem nenhuma informação entre os parênteses. Porém, podemos informar um ou mais Linguagem Java: conceitos essenciais6 parâmetros, em que o tipo de dados deve ser informado logo após o nome do parâmetro, que segue a mesma regra de nomenclatura do método, sendo que as várias declarações de parâmetros devem ser separadas por ,. Observe que os parâmetros devem receber diferentes nomes; � [código do método] — conjunto de códigos que o método realiza; � [return] [valor do retorno] — esta linha pode não existir se o retorno do método for void. Porém, caso um retorno seja informado, o comando return seguido do valor ou da variável do mesmo tipo do retorno deve ser também informado. Exemplo 1 Exemplo 2 Exemplo 3 class Area { float area; float lado; void Calcula (){ this.Area = this.Lado * this.Lado } } class Valores { float ValorPI(){ return 3.14f; } } class Produto { float Total (int Qtd, float Preco){ return Qtd * Preco; } } Quadro 1. Exemplos de métodos No Quadro 1 observamos três exemplos de possíveis métodos: � exemplo 1 — o this indica que as variáveis do método pertencem à classe a qual o método também pertence e, no caso, o método está atribuindo ao atributo area o resultado da operação de multiplicação (representada pelo operador de multiplicação *) do atributo lado por ele mesmo (possivelmente seria a área de um quadrado, portanto os lados seriam iguais, assim basta armazenar o tamanho de um lado); � exemplo 2 — método que retorna um valor do tipo float, no qual temos o retorno do valor 3.14f , em que f indica que o valor é do tipo float; � exemplo 3 — o método Total recebe dois parâmetros Qtd e Preco, realizando a multiplicação desses valores, retornando o resultado deste cálculo. 7Linguagem Java: conceitos essenciais Conceitos e modificadores Segundo Deitel, Deitel e Wald (2016), na linguagem Java está disponível um recurso muito importante para o desenvolvimento e a estruturação de um pro- jeto: os moderadores de acesso. Estes são empregados para restringir o acesso a um método, atributo ou até a uma classe. Entretanto, independentemente do moderador escolhido, um atributo ou método é sempre acessível, isto é, pode ser chamado, a partir de qualquer outro método contido na mesma classe. Os moderadores de acesso mais comuns do Java são os seguintes: � public — um atributo ou método que utiliza este moderador é público e pode ser chamado a partir de métodos contidos em qualquer outra classe, sendo esta a condição de menorrestrição da linguagem; � protected — utilizando este moderador, o atributo ou método pro- tegido pode ser chamado por todas as classes existentes no pacote da classe em questão; � private — quando um atributo ou um método é privativo na classe que o contém e seu uso é vedado a qualquer outra classe, ou seja, so- mente métodos da própria classe podem executar uma chamada a este. Java é uma linguagem amplamente utilizada em diversas áreas, não somente para programação Android, mas também em desenvolvimentos para desktops, Web e outros. Nos links a seguir você pode acessar o site oficial do Java, além da página com a documentação da linguagem e outras informações. https://qrgo.page.link/E4PEm https://qrgo.page.link/yaAq8 Além dos moderadores de acesso, os métodos e atributos ainda possuem outros modificadores, voltados a outras características. Um destes modifica- dores é o modificador static, que pode ser utilizado em classes, métodos e atributos. Uma vez utilizado em um método, este poderá ser acessado por qualquer classe (observando o moderador de acesso) sem a necessidade de instanciá-la. Um método static não pode acessar qualquer variável decla- Linguagem Java: conceitos essenciais8 rada dentro de uma classe, exceto no caso de a variável também ser declarada como static. Mas a situação contrária é permitida: um método comum pode acessar métodos e atributos static. Abaixo, temos um exemplo de método do tipo static com o nome getPI. Observe que não instanciamos a classe Area: public class Area { public static float getPI(){ return 3.14f; } } // Podemos utilizá-lo da seguinte maneira: Area.getPI(); Outro detalhe sobre o modificador static é que, uma vez utilizado em uma classe (static class), obrigatoriamente toda a classe (incluindo métodos e atributos) deve ser declarada com o modificador static. Segundo Goodrich e Tamassia (2013), alguns dos conceitos mais importan- tes da linguagem Java são o encapsulamento, a herança e o polimorfismo. O encapsulamento é uma característica muito importante que trata da capacidade de isolar informações do restante do programa. Assim, uma vez construída uma determinada classe, o desenvolvedor não precisa mais se preocupar com suas características internas, já que realiza as chamadas dos métodos. Caso seja necessário realizar alguma alteração em um método, ao realizar esta alteração todos os pontos que o utilizam automaticamente irão receber tais alterações. Dessa forma, o desenvolvedor pode garantir que a informação não será corrompida acidentalmente pelo resto do programa, tornando-a robusta e confiável. Para um desenvolvedor experiente, o conceito de modificadores pode ser muito simples, mas para desenvolvedores sem tanta experiência, o uso de modificadores pode ser bem confuso. Ao iniciar a programação de aplicativos sem conhecer a fundo a linguagem de programação, procure utilizar modificadores mais simples, como o public e o private. À medida que for adquirindo experiência, aventure-se a utilizar modificadores mais complexos. 9Linguagem Java: conceitos essenciais A herança é um conceito importante da linguagem Java. Nesse processo, uma classe que implementa ou é estendida a outra herda todos os seus métodos e atributos. Na Figura 2 temos um exemplo clássico de herança, em que a classe Animal é estendida à classe Mamífero, que por sua vez é estendida à classe Cachorro. Ao instanciar uma classe Cachorro, este poderá utilizar os métodos nascer, morrer e mamar, pois estes serão herdados das classes Animal (métodos nascer e morrer) e Mamífero (método mamar). Para criar uma classe Gato, por exemplo, seria necessário apenas estendê-la à classe Mamífero e implementar o método miar. Figura 2. Exemplo de classes Java, demonstrando o conceito de herança. Linguagem Java: conceitos essenciais10 Temos, ainda, o modificador abstract, no qual é possível declarar um método sem o implementar. Dessa forma, uma classe que implementa a classe que contém métodos abstract deve repetir sua declaração abstrata, imple- mentando-a ou não; porém, em algum momento ela deve ser implementada. Funciona como uma espécie de lembrete para que alguma classe derivada complete a declaração fornecendo um corpo. Na Figura 3 temos um exemplo de classe abstrata, em que a classe Animal é do tipo abstract e já possui os métodos nascer e mamar implemen- tados. No entanto, os métodos voz e alimentar são abstratos e devem ser implementados em classes que forem estendidas à classe Animal. No caso, a classe Cachorro foi estendida à classe Animal e implementou os métodos abstratos voz e alimentar com a implementação adequada. Figura 3. Exemplo de classes Java, demonstrando o conceito de classe abstrata. 11Linguagem Java: conceitos essenciais O modificador final identifica que nenhuma classe derivada pode alterar ou redefinir este método ou atributo. Dessa forma, um método declarado como final deve ser obrigatoriamente implementado. No exemplo abaixo, uma classe estendida à classe Area não poderá criar uma nova implementação para o método getPI. public class Area { public final float getPI(){ return 3.14f; } } Segundo Deitel, Deitel e Deitel (2015), a interface é uma funcionalidade da orientação ao objeto utilizado em Java que define ações que devem ser obrigatoriamente executadas, mas que cada classe pode executar de forma diferente. As interfaces contém valores constantes ou assinaturas de métodos que devem ser implementados dentro de uma classe. No caso da Figura 4, podemos observar ainda uma utilização prática das interfaces, em que a interface InterfacePessoa prevê todos os métodos necessários para uma determinada implementação, sendo que esta interface foi implementada pela classe abstrata Pessoa, que implementou os métodos getIdade e setIdade, visto que em uma implementação das classes Mulher e Homem os métodos indicados teriam uma implementação idêntica para ambos os objetos, podendo, dessa forma, serem herdados por estes. Uma peculiaridade está no método getSexo, cuja implementação se deu na classe Mulher e Homem, em virtude dessa informação ser diferente em ambos os casos. Linguagem Java: conceitos essenciais12 Figura 4. Exemplo de classes Java, demonstrando a utilização de interfaces. Um dos conceitos mais utilizados da linguagem Java é o polimorfismo, que promove a reutilização contínua dos códigos, ou seja, possibilita que algo assuma várias formas. No contexto da programação orientada a objetos (sendo o Java, conforme já mencionado, uma linguagem totalmente orientada a objetos), ele nos mostra como um método pode assumir formas diferentes das inicialmente implementadas e agir de modo que possa ser utilizado por outra classe. Na Figura 2, em que observamos o conceito de herança (os conceitos de herança e polimorfismo trabalham lado a lado na linguagem Java), podemos observar o conceito de polimorfismo também quando a classe Pessoa assume a forma das classes Homem e Mulher. 13Linguagem Java: conceitos essenciais Na Figura 5 podemos identificar outra face do polimorfismo. No exemplo, os métodos ImprimeIdade, ImprimeSexo e ImprimeSexoIdade recebem, por parâmetro, uma classe Pessoa, sendo que esta pode ser do tipo Mulher ou Homem e, de acordo com essa passagem de parâmetros, podemos ter a impressão do respectivo sexo e idade (a idade, no caso, depende do valor atribuído à variável Idade, presente na classe Pessoa). Essa passagem de parâmetro genérica se dá pelo fato de que uma mulher ou um homem são pessoas, caracterizando um conceito do polimorfismo. Figura 5. Exemplo de classes Java, demonstrando o conceito de polimorfismo. Outro conceito do polimorfismo presente na Figura 5 é a sobrecarga, em que possuímos na classe Auxiliar três métodos imprime e somente é possível possuir estes três métodos com o mesmo nome, em virtude dos métodos possuírem parâmetros diferentes. No caso, o método imprime, que realiza a impressão da idade,recebe um parâmetro do tipo int, enquanto o método que realiza a impressão do sexo recebe um parâmetro do tipo String. Frente à Linguagem Java: conceitos essenciais14 sobrecarga prevista no polimorfismo, eles são diferentes; logo, são permitidos. Ainda temos o caso do método Imprime, que recebe dois parâmetros que se diferenciam ainda mais dos outros e, com isso, também se tornam válidos. Java na prática: operadores, condicionais, laços de repetição Na linguagem Java é muito comum a realização de cálculos matemáticos ou uma comparação entre variáveis, assim como a repetição de uma determinada rotina até que uma condição seja atingida. Para que isso seja possível, o Java possui operadores. Na Figura 6 podemos observar esses operadores disponíveis na lingua- gem Java (na ilustração eles estão divididos em grupos, conforme suas funções). Figura 6. Tipos de operadores disponíveis na linguagem Java. Fonte: Schützer e Massago (2008, documento on-line). Segundo Deitel, Deitel e Deitel (2015), os operadores de atribuição, como o próprio nome sugere, são capazes de atribuir um determinado valor a algo, normalmente uma variável. Um exemplo seria uma variável x do tipo inteiro (no caso int), à qual podemos atribuir o valor 10 utilizando a simples ex- pressão x = 10. Aliado a este operador de atribuição, temos os operadores de adição, subtração e divisão. Na Figura 7 é possível observar operações de adição (operador +), subtração (operador -), multiplicação (operador *) e divisão (operador /), além de uma operação envolvendo duas variáveis. Existe, ainda, o operador módulo %, que calcula o resto de uma divisão. Por exemplo, x = 5 % 2, em que x ao final da operação será igual a 1, visto que este é o resto da divisão. 15Linguagem Java: conceitos essenciais Podemos, ainda, utilizar o operador de atribuição = combinado aos ope- radores matemáticos, resultando em expressões mais simples. Por exemplo, a expressão de soma x = x + 10 (operação de soma existente na Figura 7) poderia ser codificada utilizando o operador de soma combinado ao operador de atribuição, gerando a expressão x += 10, que é exatamente o mesmo que x = x + 10, sendo que este pode ser realizado com as demais operações matemáticas. Figura 7. Operador de atribuição = em operações matemáticas. Também temos operações de atribuição que não utilizam o operador =. Neste caso, estamos falando dos operadores de incremento e decremento. Por exemplo, a operação x = x + 1, que também é idêntica à operação x += 1, pode ser escrita de forma ainda mais simplificada, utilizando o operador unário de incremento, resultando em x++. Em todos os exemplos citados serão somados 1 ao valor já existente em x. Os sinais unários são utilizados para identificar se um número é positivo (sinal unário +) ou negativo (sinal unário -), sendo que ao não informar o sinal unário de um número, o programa irá entender que se trata de um nú- mero positivo. Vamos imaginar a variável do tipo byte recebendo o valor 10 negativo. Neste caso, teríamos o código byte z = -10, ou seja, a variável z será igual a 10 negativo. Linguagem Java: conceitos essenciais16 Ao declarar os nomes de variáveis e classes, você deve tomar cuidado para não uti- lizar as palavras reservadas da linguagem Java. Por exemplo, a palavra int deve ser utilizada somente em seu propósito original, ou seja, declarar uma variável deste tipo. Portanto, você não pode colocar o nome de uma variável como int. A seguir, temos uma lista de palavras reservadas da linguagem: abstract, continue, for, new, switch, assert, default, goto, package, synchronized, boolean, do, if, private, this, break, double, implements, protected, throw, byte, else, import, public, throws, case, enum, instanceof, return, transient, catch, extends, int, short, try, char, final, interface, static, void, class, finally, long, strictfp(2), volatile, const, float, native, super e while. Deitel, Deitel e Deitel (2015) definem os operadores de comparação como ferramentas de suma importância para o desenvolvimento de qualquer software, seja ele um aplicativo Android ou outro. Essa afirmação se deve ao fato de que estes operadores fornecem a linguagem o poder de dar ao código a to- mada de decisão. Por exemplo, se você deseja comprar um produto que custa R$ 12,00 mas possui apenas R$ 10,00 na carteira, a compra não pode ser concluída, visto que você não possui dinheiro suficiente. Para inserirmos essa tomada de decisão em um código Java, utilizamos a cláusula condicional if, que significa “se”. Assim, em uma linguagem formal, já podemos escrever o exemplo, ficando “se o dinheiro na carteira for maior ou igual ao valor do produto, então a compra pode ser realizada; caso contrário, você não possui dinheiro suficiente”. Em Java, teríamos: float produto = 12f; float carteira = 10f; if (carteira >= produto) { // Entao você possui dinheiro suficiente } else { //Você não pode comprar, dinheiro insuficiente } //Segue o fluxo do programa 17Linguagem Java: conceitos essenciais Dessa forma, já introduzimos também o operador de comparação maior ou igual >=. Podemos utilizar também os demais operadores de comparação: � >: compara se um valor é maior que outro; � <: compara se um valor é menor que outro; � <=: compara se um valor é menor ou igual a outro; � ==: comparação simples entre dois valores, verificando se ambos são iguais e apenas iguais; � !=: comparação simples entre dois valores, verificando se ambos são diferentes. A cláusula if pode possuir várias operações de comparação utilizando a cláusula elseif(comparação), ou seja, podemos ter o if(comparação 1) com a sua comparação, seguido de quantos elseif(comparação2..3..4) forem necessários para a lógica do programa, podendo finalizar com o else, que significando que caso nenhuma comparação seja satisfeita, o código da cláusula else será executado, observando também que somente o if é obrigatório. Portanto, podemos utilizar o elseif e o else apenas se na lógica da rotina for necessário. Dentro das cláusulas condicionais, ainda possuímos a cláusula switch, que pode simplificar a execução de várias comparações de uma variável. No link a seguir você pode obter mais informações sobre a cláusula switch. https://qrgo.page.link/ungAZ Para completar este conjunto de operações visto até então, temos os laços de repetição, sendo o mais simples deles o while, que em uma linguagem formal seria “enquanto uma comparação for satisfeita, repete um conjunto de código”. Linguagem Java: conceitos essenciais18 Figura 8. Exemplos de operação de “while” e de “do...while”. Fonte: Schützer e Massago (2008, documento on-line). Na Figura 8, encontramos alguns exemplos do bloco de repetição while, sendo: � exemplo 1 — a rotina presente no while é executada enquanto o valor de k for menor que 10, ou seja, será executado até que k seja incrementado pelo operador unário ++ e atingir o valor 10; � exemplo 2 — nesta rotina, h é inicializado com zero e a rotina presente no while será executada até que h mude para outro valor, sendo que, no caso, isso ocorrerá somente quando o teste if for satisfeito; � exemplo 3 — a variável i é inicializada com o valor 10 e, assim, o bloco while não é executado, pois somente seria executado caso i fosse menor ou igual a cinco. Dessa forma, o programa segue seu fluxo normal após o while; � exemplo 4 — no do while, a rotina presente neste bloco é executada pelo menos uma vez, podendo repetir novamente se ao final da primeira execução o teste do while for satisfeito. No exemplo, a rotina será executada apenas uma vez. 19Linguagem Java: conceitos essenciais O laço de repetição for tem uma complexidade um pouco maior. Na Figura 9 temos um exemplo ilustrado de uma implementação do laço for. Para um melhor entendimento, vejamos mais informações abaixo: � int x = 0; — este código é executado apenas uma vez e é chamado de inicialização. Nesta inicialização temos a declaraçãoda variável x e sua inicialização com o valor zero, sendo que ela não será executada novamente. Observe que a variável x poderia estar declarada em outro local e, neste caso, ela poderia ser inicializada apenas com x = 0; ou nem ser inicializada, contando apenas com a presença do ;; � x <= 10; — esta é a condição que verifica se o laço deve ser repetido. Após a inicialização ele é verificado e, caso seja satisfeito, a rotina do laço é executada uma vez; � x++ — este é o incremento (poderia ser decrementado, também utili- zando -- ou outros operadores, como o += 10) ao final da execução da rotina do laço de repetição. A variável x é incrementada e após o seu incremento a condição (x <= 10) é verificada, ou seja, quando x atingir o valor 11, o laço de repetição não será repetido e o programa seguirá seu fluxo. Figura 9. Ilustração do uso do for. Fonte: Schützer e Massago (2008, documento on-line). É importante salientar que os laços de repetição while e for também podem ser interrompidos a qualquer momento, executando o comando break;. Linguagem Java: conceitos essenciais20 DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book- man, 2015. 690 p. DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p. GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. 5. ed. Porto Alegre: Bookman, 2013. 736 p. SCHÜTZER, W.; MASSAGO, S. Tipos de dados. In: SCHÜTZER, W.; MASSAGO, S. Tutorial de programação Java. São Carlos: Departamento de Matemática, Universidade Federal de São Carlos, 2008. Disponível em: https://www.dm.ufscar.br/profs/waldeck/curso/ java/part22.html. Acesso em: 16 jun. 2019. Leitura recomendada SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente. 6. ed. Porto Alegre: Bookman, 2015. 704 p. 21Linguagem Java: conceitos essenciais DICA DO PROFESSOR Conhecer todas as funcionalidades da linguagem de programação é muito imporante para o desenvolvedor. Porém, alguns aspectos também devem ser levados em consideração como, por exemplo, a organização do código desenvolvido, além da escrita de informações que ajudam os desenvolvedores envolvidos no projeto a compreenderem o código-fonte que compõe o projeto. Confira, na Dica do Professor, informações para organizar o código, inserir informações pertinentes do seu desenvolvimento, além de práticas que podem ajudar o iniciante em linguagem de programação a minimizar problemas desnecessários, aumentando a velocidade da sua curva de aprendizagem. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) Os tipos primitivos de dados têm características próprias quanto ao tipo de dado que podem armazenar e limites mínimos e máximos de dados que podem ser armazenados. Considerando as afirmativas a seguir, qual apresenta uma atribuição de valor válida? A) Variável do tipo “int” valor 3,5f. B) Variável do tipo “boolean” valor 10. C) Variável do tipo “byte” valor 40000. D) Variável do tipo “int” valor 645. E) Variável do tipo “char” valor -88. 2) Modificadores de acesso permitem ao desenvolvedor construir uma classe na qual métodos e variáveis podem ser restritos de diversas formas. Marque a alternativa que representa o modificador que permite que os métodos e variáveis que portem este modificador sejam acessadas apenas pela própria classe. A) private B) public C) float D) protect E) byte 3) O Java, sendo uma linguagem de programação orientada a objetos, tem uma técnica que faz com que os detalhes internos a respeito do funcionamento dos métodos de uma classe permaneçam ocultos para os objetos. Marque a alternativa que indica a técnica descrita: A) Polimorfismo B) Herança C) Private D) Protect E) Encapsulamento 4) A linguagem Java tem recursos do conceito da orientação a objetos, nos quais uma classe pode ter várias implementações de um mesmo método, no qual a passagem de parâmetros deve ser diferente umas das outras. Esse recurso é conhecido como: A) Herança B) Static C) Sobrecarga D) Encapsulamento E) Final 5) Os operadores são elementos de suma importância na linguagem Java, sendo amplamente utilizados em diversas rotinas. Marque a alternativa que contenha operadores unários e de incremento e decremento. A) “-” e “+” B) “==” e “!=” C) “>=” e “<=” D) “=” e “+=” E) “++” e “--” NA PRÁTICA A linguagem Java é muito poderosa, robusta e versátil, porém, para a construção de aplicativos com a mesma robustez, os desenvolvedores devem estar preparados para desenvolver os aplicativos, utilizando as técnicas corretas em todas as situações que surgirem. Nenhum aplicativo é imune a erros sem que o desenvolver trate os possíveis erros que ele pode ter. Um simples cálculo com a operação de divisão, na qual um determinado valor for dividido por zero (gerando a exceção Java “ArithmeticException”), já tem a capacidade de encerrar instantaneamente um aplicativo. Veja, Na Prática, um exemplo de uso do tratamento de exceções, visando a tratar de forma adequada esses erros que afetam de forma drástica o uso do aplicativo. SAIBA MAIS Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Vetores em Java No artigo a seguir você irá saber mais sobre vetores em Java, recursos essencial para se trabalhar com listas, arrays, além de fornecer muitas possibilidades de aplicação. Conteúdo interativo disponível na plataforma de ensino! Boas práticas de programação Em programação, boas práticas sempre são bem-vindas, uma vez que elas tendem a facilitar a vida do desenvolvedor de softwares. Confira no artigo a seguir algumas boas práticas de programação voltadas à linguagem Java. Conteúdo interativo disponível na plataforma de ensino! Dicas de desempenho Confira neste conteúdo algumas dicas para melhorar o desempenho de aplicativos por meio da programação. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar