Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO ORIENTADA A OBJETOS Jason Rodolpho dos Santos 2PROGRAMAÇÃO ORIENTADA A OBJETOS SUMÁRIO CENTRO UNIVERSITÁRIO UNIFTEC Rua Gustavo Ramos Sehbe n.º 107. Caxias do Sul/ RS REITOR Claudino José Meneguzzi Júnior PRÓ-REITORA ACADÊMICA Débora Frizzo PRÓ-REITOR ADMINISTRATIVO Altair Ruzzarin DIRETORA DE EDUCAÇÃO A DISTÂNCIA (NEAD) Lígia Futterleib Desenvolvido pelo Núcleo de Educação a Distância (NEAD) Designer Instrucional Sabrina Maciel Diagramação, Ilustração e Alteração de Imagem Igor Zattera, Gabriel Olmiro de Castilhos Revisora Ana Clara Garcia Introdução 3 Preparando o Ambiente de Desenvolvimento 5 Introdução à Linguagem Java 7 Breve Histórico 8 Princípios Básicos 9 Instalando o Ambiente de Desenvolvimento 10 Tipo de Dados, Conversão, Operadores e Expressões 17 Identificadores 18 Palavras Reservadas 20 Pacotes 20 Tipos de Dados 21 Operadores 22 Método main 23 Casting de Valores 23 Iniciando um Projeto no Eclipse 24 Iniciando um Projeto no NetBeans 31 Exemplo Resolvido em NetBeans 33 Instruções Condicionais 39 Instrução Condicional – If...else 40 Instrução Condicional – Switch...case 48 Instruções de Repetição, Vetores e Matrizes 56 Comando de Repetição For 57 Comando de Repetição While 59 Comando de Repetição Do...While 62 Vetores 64 Matrizes 67 Classes, Objetos e Métodos 71 Introdução ao Paradigma de Programação Orientado a Objetos 72 Classes e Objetos 73 Atributos 73 5.4 Métodos 73 Métodos Construtores 75 Instanciando uma Classe 75 Finalização de um Objeto 76 3PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO Na orientação a objetos, iremos estudar a linguagem de programação Java, trabalharemos com as IDEs, Eclipse e NetBeans 4PROGRAMAÇÃO ORIENTADA A OBJETOS Vamos aprender a criar algumas interfaces gráficas utilizando a IDE Ne- tBeans, mas o foco principal serão os con- ceitos da programação orientada à objetos, o conceito de classes, objetos, métodos, herança, polimorfismo, sobrescrita e so- brecarga de métodos, entre outros. Esta disciplina está dividida em duas partes. Na primeira parte, iniciamos apren- dendo sobre a linguagem Java, os tipos de dados, algoritmos sequenciais, de decisão e comandos de repetição, aprenderemos o básico da IDE NetBeans e os conceitos principais da programação orientada à objetos, que são os conceitos de classes, objetos e métodos. Na segunda parte teremos acesso aos demais conceitos da programação orienta- da à objetos, como por exemplo, o conceito de herança, sobrescrita e sobrecarga de métodos, interfaces, entre outros. Assim, exceto raríssimas exceções, as empresas que desenvolvem software, utilizam o paradigma orientado à obje- tos, necessitando saber os conceitos deste paradigma e como aplicá-los. Assim, esta é uma disciplina muito importante para o curso no qual vocês estão matriculados, consequentemente, essencial para todo desenvolvedor de sistemas. 5PROGRAMAÇÃO ORIENTADA A OBJETOS PREPARANDO O AMBIENTE DE DESENVOLVIMENTO Java, JVM, ferramentas de desenvolvimento, como instalar, introdução à linguagem. Esteja preparado, pois estaremos dando nossos primeiros passos Sejam todos bem-vindos nesta disciplina de Progra- mação Orientada a Objetos. Estou muito feliz por estar aqui com vocês, visto que essa é uma das disciplinas chaves deste curso, com conteúdo e conhecimento que vocês utilizarão em uma série de outras disciplinas específicas da área de desen- volvimento de software, ao longo do curso. Posso afirmar que tenho dúvidas de que vocês utilizarão, diariamente, os conceitos que irão aprender aqui e no ambiente profissional, ao atuarem como desenvolvedores de software. Você, aluno, talvez se pergunte: como pode, eu, ter tanta certeza de que vocês irão utilizar esses conceitos em outras disciplinas e na área profissional. Logo, minha resposta é bem simples: vocês terão uma disciplina de Programação Visual que Os primeiros códigos que iremos desenvolver serão algoritmos sequenciais, ou seja, segue um passo a passo, uma sequência para serem resolvidos. 6PROGRAMAÇÃO ORIENTADA A OBJETOS nada mais é do que a continuação desta disciplina, e em Programação para Dis- positivos Móveis, a qual vocês aprendem a desenvolver aplicativos para a plataforma Android. Bem como, utiliza a linguagem Java (linguagem que utilizaremos nesta disciplina) para fazer a parte funcional do aplicativo, e a linguagem XML para desenvolver a parte visual. Ao trabalhar disciplinas como Pro- gramação Web, embora possa não ser utilizada a linguagem Java, os conceitos vistos nesta disciplina, que são os con- ceitos de Orientação a Objetos, sempre serão utilizados em seus códigos. Tam- bém, na Programação para Dispositivos Móveis também se utiliza os conceitos de orientação a objetos. Assim, ao final do curso, no projeto Empreendedores, vocês terão que desenvolver algum software, provavelmente, utilizarão os conceitos de orientação a objetos. Quando forem atuar como desenvolvedores de software, no mercado de trabalho, independente de qual empresa forem trabalhar e de qual linguagem de programação forem utilizar, assim como se irão desenvolver softwares ou desktop, web ou mobile, com certeza empregarão os conceitos de orientação a objetos, salvo raríssimos casos. Portanto, não tem jeito, os conceitos aqui apresentados farão parte da vida de vocês e a cada etapa pela qual passarem, ao longo do curso e da vida profissional. Ademais, esses conceitos irão ficar cada vez mais presentes e claros, uma vez que são essenciais para um desenvolvedor de software. Outra pergunta que vocês devem estar se fazendo neste momento é com relação a ser difícil ou não, se são con- ceitos simples de serem compreendidos e assimilados, correto? Dessa forma, fique tranquilo, pois a ideia do paradigma orientado a objetos é o de simular o comportamento dos objetos do mundo real, onde cada um desses tem seus estados e comportamentos. Assim, sobre o paradigma de programação, vocês irão perceber que será muito simples de ser entendido, assim como os códigos-fonte, assim, se os conceitos deste paradigma forem seguidos, serão gerados pequenos trechos de códigos simples, limpo e de fácil compreensão. Então, conforme vocês trabalharam no curso, até agora, com o paradigma estruturado, em que dividiam o código em funções, talvez seja necessário um certo esforço inicial para entendê-lo, porém, com o tempo, irão perceber como é simples programar orientado a objetos, assim como irão entender o motivo deste paradigma ser largamente utilizado no mercado de trabalho. Como já falei, iremos ver os concei- tos da orientação objetos, penso que você deve estar se perguntando se será uma disciplina teórica, certo? Errado, embora iremos ver alguns conceitos, no geral, esta é uma disciplina prática, onde aprenderemos a linguagem Java e, ao aprender os conceitos de orien- tação a objetos, os quais são independentes de linguagem de programação, também iremos praticar esses conceitos fazendo exercícios em linguagem Java. 7PROGRAMAÇÃO ORIENTADA A OBJETOS Dessa forma, nesse capítulo será abordado o que é a linguagem Java e um breve histórico da linguagem, algumas características e princípios e, por último, iremos instalar e deixar funcionando o ambiente de desenvolvimento para co- meçar a praticar nos próximos capítulos. Introdução à Linguagem Java Java é uma linguagem de progra- mação que utiliza elementos de outras linguagens, como C e C++, por isso, Java é muito semelhante à linguagem C++, porém mais simples. Java é uma linguagem de programação, voltada para o ambiente da internet, contudo não é utilizado apenas neste meio, também é usada em progra- mação Desktop e para Mobile, a gama de dispositivos em que o Java é utilizado abrange não apenas computadores, como também controles remotos, telefones, re- lógios, entre outros. Um dos grandes diferenciais da lin- guagem Java é ser multiplataforma, ou seja, o mesmo código-fontecriado em um determinado sistema operacional funcio- nará, sem precisar fazer ajustes em outro sistema operacional. Você deve estar se perguntando, mas qual é a mágica que faz com que o mesmo código funcione em sistemas operacionais diferentes, como por exemplo, o Windows, várias distribuições Linux e em um Ma- cOS? O segredo está na máquina virtual, existem máquinas virtuais específicas para cada tipo de sistema operacional. Portanto, além da linguagem de programação, o Java possui a virtual machine, específica para cada sistema operacional. Vamos detalhar um pouco mais. O código-fonte que você criar, o Java irá com- pilar e converter em bytecodes, que é algo parecido com código de máquina, mas não é suficiente para ser executado diretamen- te em um sistema operacional. Aí vem o segredo, a máquina virtual Java pega estes bytecodes e “converte” em código nativo (código de máquina) específico para cada sistema operacional.Logo, o código-fonte e os bytecodes não são alterados, o que é alterado é o código nativo que a máquina virtual de cada sistema operacional espe- cífico irá gerar. Agora, imagine criar um código-fonte, não precisar alterar uma linha de código sequer, e o código fun- cionar em outro sistema operacional, não ficando preso a um sistema operacional ou a uma configuração de hardware, eis o poder desta linguagem. 8PROGRAMAÇÃO ORIENTADA A OBJETOS Outra conclusão que fica esclarecida no texto anterior, é que a primeira coisa que teremos que ter, se quisermos progra- mar para a linguagem Java, é instalarmos uma máquina virtual para o sistema ope- racional que estivermos utilizando. Breve Histórico A criação do Java começou com a ideia de que a Sun Microsystems tinha, em 1991, de que a próxima área em que os microprocessadores teriam um impacto profundo seria a dos dispositivos eletrôni- cos inteligentes, destinados ao consumidor final. Assim, com base nessa convicção, a Sun financiou uma pesquisa corporativa interna. A linguagem Java foi inicialmente chamada de Oak (carvalho) em homena- gem a uma árvore que dava para a janela do escritório na Sun, depois a equipe desco- briu que já existia uma linguagem com este nome, porém a equipe de desenvolvedores, como é bem comum entre os profissionais da área, adoravam café. Eles descobriram, ao irem diariamente a uma cafeteria local, que Java era uma cidade de origem de um tipo de café especial que a equipe gostava muito, então, decidiram que este seria o nome da linguagem de programação que estavam desenvolvendo. Em 1992, foi lançado um pequeno dispositivo portátil, parecido com um con- trole remoto e possuía uma pequena tela. Um personagem chamado “Duke” aparecia na tela e acabou virando o mascote oficial da linguagem. Inicialmente, pensava-se que o Java iria se tornar um sistema operacional, a Sun tentou fornecer em várias situações um sistema operacional baseado em Java, para conversores de TV, mas acabou não vingando. Mais tarde, em 1995, a Sun liberou o código-fonte da linguagem Java, a fim de chamar a atenção dos desenvolvedores de todo o mundo. Em pouco tempo os membros da equipe viravam noites respon- dendo e-mails, consertando pequenos bugs e criando novas versões da linguagem, foi um sucesso. Já, em 1996, foi lançado o JDK1.1, e em 1998 foi lançado o JDK1.2, Assim, seguiu o lançamento de outras versões, na data em que este Ebook foi escrito, a última versão do Java é a 8, porém, já existem rumores de que o Java 9 está para ser lançado. Em 2009 a Oracle compra a Sun e se torna dona da linguagem Java, con- siderada uma compra estratégica para a Oracle que já possuía um dos bancos de dados mais usados no mundo, agora possui uma linguagem de programação também bastante robusta. Com a aquisição da Sun pela gigante Oracle, a linguagem Java acabou crescendo ainda mais e é hoje uma das linguagens mais utilizadas no mundo. 9PROGRAMAÇÃO ORIENTADA A OBJETOS Princípios Básicos O primeiro passo para desenvolver um programa em Java é, logicamente, es- crever o código-fonte, também é possível digitar o código-fonte em um bloco de notas, mas claro, daria muito trabalho desenvolver um código extenso, tudo no braço, digitando códigos em blocos de notas, para auxiliar na programação do software existem várias IDEs, entre elas está o NetBeans e o Eclipse, que utiliza- remos nesta disciplina. Portanto, a linguagem Java, além de possuir liberdade e independência na escolha de plataforma de sistema operacio- nal, você pode usar o sistema operacional que quiser, desde que exista uma máquina virtual Java para este sistema operacional, também permite liberdade na escolha da ferramenta de desenvolvimento (IDE). Os arquivos de código-fonte pos- suem a extensão “.java”, ao compilar o seu código se não houverem erros serão gerados arquivos com a extensão “.class”, caso você tenha desenvolvido o código em um bloco de notas digite javac, o nome da classe e a extensão “.java” na janela de comando de seu sistema operacional. O arquivo “.class” contém os bytecodes que serão interpretados durante a fase de exe- cução. Estes bytecodes são compreendidos e executados pela máquina virtual Java. Na sequência, antes de o programa ser executado, ele é carregado na memória do computador. Após, o programa é exe- cutado. Caso tenha montado o código no bloco de notas e tenha compilado o pro- grama na janela de comando de seu siste- ma, nesta mesma janela digite o comando “ java” e o nome do programa que deseja executar, a máquina virtual irá interpretar os bytecodes e executar o programa, assim, enquanto as classes são carregadas, é feita a verificação dos bytecodes. A JVM (máquina virtual Java) analisa os bytecodes à medida que eles são interpretados procurando por pon- tos, partes do código que executam com bastante frequência. Para estes pontos, os bytecodes são traduzidos para a linguagem de máquina com o objetivo de acelerar a execução do programa. Os softwares desenvolvidos em Java são divididos em classes e as classes pos- suem partes chamadas métodos. Para que o programador não tenha que desenvolver tudo do zero, o que tornaria os programas muito extensos, complexos e ainda leva- ria muito tempo para desenvolver, o Java possui ricas coleções de classes existentes, que são chamadas de APIs. Essas APIs auxiliam em muito no desenvolvimento, já pensou ter que construir uma API para lidar com protocolos de redes para o en- vio e o recebimento de dados em um web services, ou ter que construir uma API do zero para acessar um banco de dados, entre outras situações, seria quase impossível, certo? Eis a importância das APIs, em vez de criar tudo do zero, simplesmente usamos uma API pronta e o código se resume a algumas poucas linhas de código. As principais características da lin- guagem Java é a simplicidade, ser orientada a objetos, ser uma linguagem distribuída, robusta, segura, multiplataforma e possuir alto desempenho. 10PROGRAMAÇÃO ORIENTADA A OBJETOS Instalando o Ambiente de Desenvolvimento Instalando a Máquina Virtual Java O primeiro passo para instalar o ambiente de desenvolvimento é instalar a máquina virtual para o sistema operacional que você, aluno, estiver utilizando. Para isso, entraremos no site da Oracle: Nesse link podemos acompanhar as novidades da linguagem Java, documen- tação, certificações, entre outras informa- ções, na própria página já existe um link para fazer download da máquina virtual. Já, o link a seguir, serve para fazer download direto, da máquina virtual Java. Na figura 1.1 mostra um trecho da página que você encontrará ao entrar no link anterior, neste local você deverá fazer download da máquina virtual para o sistema operacional que estiver utilizando. https://www.oracle.com/java/index.html http://www.oracle.com/technetwork/java/ javase/downloads/jdk8-downloads-2133151. html Figura 1.1 – Máquinas virtuais Java disponíveis para download. Fonte: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html11PROGRAMAÇÃO ORIENTADA A OBJETOS Após realizar download da máquina virtual, execute o arquivo baixado, será mostrado algo próximo a figura 1.2, que é a tela inicial de instalação da máquina virtual Java, clicando em Avançar (Next), será mostrado uma janela próxima a figura 1.3, que é a tela para customizar a instalação da máquina vir- tual, não é preciso fazer nenhum ajuste, clique novamente em Avançar (Next). Ao clicar em Avançar irá começar a copiar os arquivos de instalação para o seu computador, e uma imagem parecida com a figura 1.4 será mostrada na tela. Na sequência, será solicitado a pasta de destino, ou seja, a pasta onde ficarão os arquivos após a instalação, de preferência não altere o caminho da pasta padrão, algumas IDEs irão procurar a máquina virtual Java no caminho padrão, se não encontrarem neste caminho, será emitido um erro e preciso configurar o caminho onde está a máquina virtual. Na figura 1.5 é mostrado a tela para escolher a pasta de destino, onde ficarão os arquivos após a instalação. Figura 1.2: Tela inicial de instalação da VM Figura 1.3: Tela para customizar a instalação da VM Figura 1.4: Copiando arquivos de instalação Figura 1.5: Pasta de destino da instalação 12PROGRAMAÇÃO ORIENTADA A OBJETOS Na sequência, será iniciada a instalação da máquina virtual Java, na figura 1.6 é mostrado a janela de instalação da máqui- na virtual Java. E na figura 1.7, o último passo da instalação é onde aparece uma mensagem que a máquina virtual Java foi instalada com sucesso. Instalando o Eclipse O próximo passo é instalar o Eclipse, que é a IDE que utilizaremos para entender os conceitos de orientação a objetos e programar alguns códigos na parte prática da disciplina, embora seja possível desenvolver interfaces gráficas no Eclipse, é algo bem mais complexo do que se compararmos com IDEs como por exemplo, o NetBeansç. Porém, na academia, para aprender os conceitos de Orientação a Objetos e aprender a linguagem Java é uma das melhores IDEs disponíveis, além de ser uma IDE utilizada profissionalmente em muitas empresas da área. O Eclipse pode ser instalado e existem versões, as quais é somente necessário descompactar e não precisa ser instalado. Aqui nesta disciplina utilizaremos esta segunda opção em que não precisa instalar o Eclipse no computador. Para isso, vá até o link a seguinte e faça download do Eclipse para a versão do sistema operacional que você estiver utilizando. Após terminar o download, descompacte o arquivo, se estiver utilizando o sistema operacional Windows, de prefe- rência deixe o diretório do Eclipse dentro da raiz do sistema operacional (na unidade C:). Figura 1.6: Instalando a máquina virtual Java Figura 1.7: Máquina virtual instalada http://www.eclipse.org/downloads/packages/eclipse-ide- java-developers/neon2 Observação: Esta é a última versão do Eclipse na época em que foi escrita esta apostila, caso o link anterior não esteja ativo, entre no site do Eclipse, vá até o link e faça download do zip do Eclipse para o sistema operacional que você estiver utilizando. 13PROGRAMAÇÃO ORIENTADA A OBJETOS Instalando o NetBeans O último passo é instalar a IDE Ne- tBeans, que utilizaremos para criar alguns exercícios com interface gráfica. Para isso iremos neste link: Primeiro selecione em plataforma o sistema operacional que você estiver uti- lizando, após baixe a versão completa do NetBeans que poderá servir como IDE para outras disciplinas do curso, a IDE do NetBeans completa, permite progra- mar em outras linguagens de programação além do Java, também permite programar em PHP, HTML, C, C++, entre outras linguagens. Após fazer download, ao iniciar a instalação irá aparecer uma tela parecida com a figura 1.8. Logo iniciará a confi- guração do instalador (figura 1.9). Seguidamente, serão mostrados os componentes que serão instalados (figura 1.10), basta clicar no botão Próximo. Após será mostrado o contrato de licença, leia, aceite os termos do contrato e clique em Próximo (figura 1.11). https://netbeans.org/downloads/ Figura 1.8: Tela inicial do instalador Figura 1.10: Componentes que serão instalados Figura 1.11: Contrato de Licença Figura 1.9: Configurando o instalador 14PROGRAMAÇÃO ORIENTADA A OBJETOS Logo será aberta uma tela com o caminho onde será instalado o GlassFish, não altere o caminho e clique em próximo (figura 1.12). Na tela seguinte será mostrado um resumo do que for instalado, seja qual o tamanho total da instalação, basta clicar em Instalar (figura 1.13). Figura 1.12: Instalação do GlassFish Figura 1.13: Resumo do que será instalado 15PROGRAMAÇÃO ORIENTADA A OBJETOS Após isso, iniciará a instalação (figura 1.14), que irá demorar alguns minutos. Por último, mostrará uma mensagem de que o NetBeans foi instalado com sucesso (figura 1.15). Outra IDE muito interessante é a IntelliJ Idea, uma IDE muito simples de usar, e é a IDE base para o Android Studio, que é a ferramenta de desenvolvimento oficial para a plataforma Android, que vocês irão aprender na disciplina de Progra- mação Para Dispositivos Móveis. Seria bem interessante instalar a IDE e fazer alguns testes, se você, aluno, tiver interesse, instale a IDE e resolva alguns exercícios, isso irá facilitar o aprendizado no desenvolvimento mobile. Síntese Neste primeiro capítulo tivemos uma noção do que iremos ver ao longo desta disciplina, vimos uma introdução à linguagem Java, aprendemos que a lin- guagem Java é multiplataforma, ou seja, o mesmo código que criarmos em um de- terminado sistema operacional, da mesma forma executará nos outros sistemas ope- racionais sem precisar mexer no código- -fonte. Aprendemos o que é a importância da máquina virtual Java, também foi abor- dado aqui, o processo de compilação de um software em Java, um breve histórico e os princípios básicos da linguagem. Por fim, realizamos a instalação do ambiente de desenvolvimento, instalamos primeiro a máquina virtual Java, após instalamos também a IDE Eclipse e NetBeans. Figura 1.14: Instalando o NetBeans Figura 1.15: NetBeans instalado com sucesso Exercícios 1. Instale a máquina virtual Java para o sistema operacional que você estiver utilizando. 2. Instale o Eclipse. 3. Instale o NetBeans. 4. Pesquise sobre o paradigma orientado a objetos. Após, diga quais são as principais diferenças entre o paradigma estruturado e orientado a objetos. 5. Ao ler este capítulo e comparar com as linguagens de programação que você já conhece, seja profissionalmente ou em disciplinas anteriores neste curso, diga, quais são os principais diferenciais que a linguagem Java possui perante as demais? Justifique sua resposta. 17PROGRAMAÇÃO ORIENTADA A OBJETOS TIPO DE DADOS, CONVERSÃO, OPERADORES E EXPRESSÕES Tipos de dados, conversão, operadores, expressões, algoritmos sequenciais. Esteja preparado, pois estaremos desenvolvendo nossos primeiros códigos em Java Após instalar e deixar preparado o ambiente de desen- volvimento no capítulo anterior, agora iremos conhecer um pouco da linguagem de programação Java, os tipos de dados, conversão, operadores e expressões, para que no final deste capítulo já possamos resolver algoritmos simples utilizando a linguagem Java, ainda neste capítulo utilizaremos a IDE Eclipse e desenvolveremos nossa primeira interface gráfica em NetBeans. A figura presente no início deste capítulo mostra uma sequência de passos, em que sai do ponto 1 e vai até o ponto Os primeiros códigos que iremos desenvolver serão algoritmos sequenciais, ou seja, segue um passo a passo, uma sequência para serem resolvidos. 18PROGRAMAÇÃO ORIENTADA A OBJETOS 9, sendo que só existe um único caminho, uma única sequência para passar de cada etapa até chegar ao final. Você deve estar se perguntando: o que tem a ver essa imagem com este ca- pítulo? Essa imagem faz muito sentido com aquilo que iremos ver durante este capítulo, nossos primeiros códigos serão bem simples, algoritmossequenciais, em que primeiro declaramos as variáveis que iremos utilizar, após realizamos algum cálculo e algum processamento. Por fim, mostramos o resultado, e essa é a única sequência aceitável para resolver um de- terminado problema, até porque, não po- demos processar algo sem ter as variáveis, e não podemos mostrar o resultado obtido sem processar os dados, embora seja códi- gos simples, para desenvolver precisamos conhecer uma série de detalhes sobre a linguagem de programação, como os tipos de dados suportados, operadores, sintaxe básica, palavras reservadas, entre outros. Outra pergunta que você, aluno, pode estar se fazendo, é se aquilo que vocês viram em outras linguagens de progra- mação é igual ou parecido no Java, certo? Sim, é parecido, embora cada lin- guagem de programação tenha suas par- ticularidades. Mas tudo aquilo que vocês aprenderam em outras disciplinas, como a parte de lógica de programação e al- goritmos, aqui será muito útil. Cada vez mais que você perceber, que embora seja preciso conhecer a sintaxe da linguagem de programação que se queira aprender, ter um raciocínio lógico, é fundamental, com o tempo, você perceber que não é tão difícil aprender novas linguagens de pro- gramação, se você tiver raciocínio lógico já é mais de meio caminho andado. Identificadores Identificadores são nomes que usa- mos para referenciar classes, variáveis e métodos. Java é case-sensitive, ou seja, o Java, faz distinção entre letras maiúscu- las e minúsculas, ou seja, variáveis com o mesmo nome, porém com identificador escrito em letras minúsculas é diferente de uma variável com mesmo nome, mas escrito com letras maiúsculas. Esse é um detalhe bem importante, pois percebo que grande parte dos erros em códigos, cometidos pelos alunos em sala de aula, é por não declarar uma variável, ou es- crever de forma diferente ao declarar e ao usar a variável. Portanto, quando vocês tentarem compilar um código e dê erro, verifiquem como a variável foi declarada e como ela foi chamada, se os identificadores estão iguais, muito provavelmente vocês já devem ter cometido erros parecidos em outras disciplinas do curso. Outros detalhes importantes sobre identificadores é não poder iniciar um nome de identificador com números, mas pode se utilizar tanto letras quanto núme- ros em nomes de identificadores. A maior parte dos caracteres especiais, os símbolos não podem ser utilizados, com exceção do $ e do _ que são permitidos por questões de compatibilidade com outros sistemas desenvolvidos em outras linguagens de programação e alguns bancos de dados. 19PROGRAMAÇÃO ORIENTADA A OBJETOS Exemplos de identificados válidos: int ano, int valor2; Exemplos de identificadores inváli- dos: int 99ano, int hello#, int &&he&llo#; Outra questão importante é seguir a convenção para os nomes de identifica- dores, visto que no momento que você for trabalhar como desenvolvedor de software terá que seguir estas regras, até por uma questão de padronização e facilitar com que todos os desenvolvedores consigam entender os códigos desenvolvidos por outros colegas. Em Java, as variáveis e os métodos são nomeados em letras minúsculas, se o identificador for formado por mais de um termo (palavra), a partir do segundo, a primeira letra deve iniciar com letra mai- úscula. Exemplo: valorTotal; Já, em constantes em Java, todo o nome do identificador é escrito em letras maiúsculas, quando possui mais de um termo, usa-se o _ para separá-los. Exem- plo: VALOR_PI; Nomes de classes são escritos com letras minúsculas com a primeira letra de cada palavra em maiúscula, inclusive para o primeiro termo. Exemplo: PessoaFisica, Animal, Conta. Uma classe em Java é declarada com a palavra class, seguida do nome da classe. O nome da classe, assim como qualquer outro identificador, não pode conter es- paços, deve sempre iniciar com uma letra e não deve conter acentos. O conteúdo de uma classe Java deve ser definido dentro de um bloco, este bloco é delimitado pelas chaves (caracteres { e }). Além das classes, blocos também são utilizados para delimitar o conteúdo de métodos e outras estruturas de controle, conforme veremos nos próximos capítulos. Assim como vocês já devem ter en- dentado o código em disciplinas anterio- res, em Java endentar o código é muito recomendado, aliás, em qualquer lingua- gem de programação, endentar o código é fundamental. Você, aluno, provavelmente já deve ter visto um código sem nenhuma enden- tação, seja código de algum colega de cur- so, profissionalmente ou em algum vídeo ou código da internet e fica olhando um bom tempo para o código e não consegue achar o erro, certo? É muito ruim tentar achar um erro em um código não enden- tado, fica difícil encontrar onde começa e termina um bloco de código, entendê-lo, portanto, além de boa prática é uma for- ma de facilitar a sua vida. Desse modo, oriento que sempre endente o seu código, pois ficará muito mais fácil achar um erro ou saber onde é preciso inserir um deter- minado código. Você talvez esteja se perguntando se é preciso seguir todas estas regras, correto? Sim, é necessário seguir estas regras, algumas destas regras são obrigatórias se- guir, se não o código não irá compilar, do contrário, você terá dificuldades quando for trabalhar na área, e com o tempo irá perceber que essas regras irão lhe ajudar a programar, achar seus próprios erros. No mesmo seguimento, se fosse pegar um 20PROGRAMAÇÃO ORIENTADA A OBJETOS código que desenvolveu há um, dois anos atrás, iria conseguir entender o código com facilidade. Além do que, em uma empresa de software, vários desenvolvedores estarão trabalhando em um mesmo projeto, uma pessoa sozinha não consegue desenvolver e manter um sistema inteiro, e se alguém sair da empresa, todos devem conseguir entender facilmente o código, continuar o projeto e dar manutenção. Palavras Reservadas As palavras reservadas são usadas para identificar os modificadores, tipos e mecanismos de controle de f luxo que compõem parte da definição da linguagem Java. Na figura 2.1 é mostrado uma tabela com as palavras reservadas da linguagem Java. Essas palavras reservadas não podem ser usadas como nomes de variáveis, classes ou métodos. Pacotes As classes Java em um sistema, são organizadas em pacotes, os quais são estru- turas de diretórios com a finalidade de organizar e agrupar as classes, principalmente em sistemas maiores, que possuem inúmeras classes, além de proteger o acesso às classes, ao longo dos capítulos iremos entender melhor o que são classes, métodos, pacotes, entre outros conceitos da programação orientada a objetos. Figura 2.1: Palavras reservadas da linguagem Java. Fonte: http://www.javabuilding.com/academy/java-language/palavras-reservadas.html 21PROGRAMAÇÃO ORIENTADA A OBJETOS Tipos de Dados A linguagem Java é uma linguagem fortemente “tipada”, você deve estar se perguntando: o que é isso? Linguagem fortemente tipada sig- nifica que toda variável declarada precisa ter um tipo de dados, int, double, char, boolean, entre outros tipos de dados, não sendo permitido não declarar o tipo de dados de uma variável, ou declarar um tipo de dados genérico, portanto, toda variável precisa ser declarada com o tipo de dados seguido de um identificador. Existem ao topo, oito tipos primiti- vos de dados, seis numéricos, um do tipo char que aceita caracteres, conforme o formato Unicode e um tipo de dados do tipo boolean, que aceita apenas os valores true (verdadeiro) ou false (falso). Quanto aos tipos de dados numéri- cos, quatro deles são inteiros (short, long, int e byte) e dois de ponto f lutuante (f loat e double), logo, cada um possui um grau de precisão diferente. A classe String é usada para representar cadeia de caracteres, porém não é um tipo de dados nativo. A figura 2.2 mostra os tipos de dados primitivos em Java. Figura 2.2: Tipos de dados primitivos em Java e a precisão de cada tipode dados. Fonte: http://ipartilho.partilho.com.br/2013/08/Tipo-primitivo-JAVA.png Seguem alguns exemplos de declarações de variáveis: byte letra; int numero; double n1, n2, n3; char caracter; 22PROGRAMAÇÃO ORIENTADA A OBJETOS Uma observação importante é que sempre se deve iniciar uma variável. Dessa maneira, iniciar explicitamente, por meio de uma instrução de atribuição, seja na declaração da variável, seja após a decla- ração de variáveis. Exemplos: byte letra = ‘a’; int numero = 15; int valor; valor = 14; Talvez você esteja se perguntado o que é uma variável a nível computacional. Logo, uma variável nada mais é do que reservar uma região na memória RAM do computado, a fim de que futuramente venha armazenar valores, assim, toda vari- ável possui um tipo de dados, que implica na quantidade de “espaço” armazenado na memória e esse valor pode ser modificado no decorrer da execução do programa. De- dde modo, eis a diferença de uma variável e de uma constante, uma constante com o valor armazenado não pode ser modificado no decorrer da execução do programa. Operadores Chegou o momento de aprender- mos quais são os operadores aritméticos, relacionais e lógicos. Você deve estar se perguntando se tem alguma diferença com os operadores aprendidos em outras linguagens de programação, correto? Os operadores são muito parecidos com os operadores das outras linguagens de pro- gramação, mas somente alguns variam de uma linguagem para outra. Assim, ope- radores de resto da divisão, incremento e decremento, operadores de igual, diferente e os operadores lógicos são alguns dos operadores que costumam variar de uma linguagem de programação para outra. Na figura 2.3 são mostrados os prin- cipais operadores aritméticos usados na linguagem Java. Existem ainda os operadores +=, -=, *=, /= e %= que são utilizados para somar, subtrair, multiplicar, dividir ou retornar o resto da divisão e atribuir, é uma forma abreviada. Detalhando um pouco mais: No exemplo x*=2 é a mesma coisa que x=x*2, ou seja, está multiplicando o valor de x por 2 e atribuindo a variável x. Na figura 2.4 são apresentados os operadores relacionais utilizados na lin- guagem Java. Figura 2.3: Principais operadores aritméticos da linguagem Java. Fonte: http://www.jricardo.net/wordpress/?paged=2&m=2012 Figura 2.4: Operadores relacionais da linguagem Java. Fonte: http://www.ebah.com.br/content/ABAAAgrAkAF/ informatica-programacao-orientada-a-objeto1?part=4 Operador Uso Descrição > op1>op2 op1 é maior do que op2 >= op1>=op2 op1 é maior ou igual a op2 < op1<op2 op1 é menor do que op2 <= op1<=op2 op1 menor ou igual a op2 == op1 == op2 op1 é igual a op2 != op1 != op1 não igual a op2 23PROGRAMAÇÃO ORIENTADA A OBJETOS Na figura 2.5 são apresentados os operadores lógicos utilizados na lingua- gem Java. Método main O método main é um bloco de có- digo especial dentro de um software, a máquina virtual (JVM) procura por este bloco, este é o primeiro código a ser exe- cutado em um software Java. Porém, uma observação importante é que um software Java só pode ter um único método main em todo o software. O método main possui a seguinte estrutura: Sempre lembre, os primeiros códi- gos que queremos que sejam executados devem estar dentro deste método e a partir dele outros métodos serão chamados e o software executado. É obrigatório que um software possua um método main, do contrário o código Java não é executado. Casting de Valores Uma conversão que certamente você, aluno, precisará fazer em algum exercício ou trabalho ao longo desta disciplina, ou ainda, profissionalmente ao desenvolver algum software, é converter uma variável que possui um tipo de dados de maior precisão (maior tamanho em bytes) em um tipo de dados de menor precisão (menor tamanho em bytes), contudo, somente faça este tipo de conversão quando realmente for necessário. O compilador exigirá que você faça uma conversão explícita. Logo, é preciso lembrar que você poderá perder precisão ao realizar estas conversões, por exemplo, se você possuir o valor 59.90 em uma va- Operador Ação && And (E) || Or (Ou) ! Not (Não) riável do tipo double e fizer uma conver- são (casting) para uma variável do tipo int (inteiro), o valor que será armazenado nesta variável será 59, logo, esta conversão não faz com que o valor seja arredondado, apenas é ignorado pelo compilador o valor após o ponto f lutuante. Exemplo: int valor = (int) valorTotal;Figura 2.5: Operadores lógicos da linguagem Java. Fonte: http://www.jricardo.net/wordpress/?paged=2&m=2012 public static void main(String[] args) { //o código do método main vai aqui } 24PROGRAMAÇÃO ORIENTADA A OBJETOS Iniciando um Projeto no Eclipse Vamos começar a criar nossos primeiros exemplos em Java utilizando o Eclipse. Para isso, abra o diretório onde está o Eclipse e o arquivo que está destacado na figura 2.6. O próximo passo é escolher o local (diretório) onde vão ser salvos todos os códigos desenvolvidos em Eclipse. Na figura 2.7 é mostrado esta tela para escolher o caminho. Figura 2.6: Diretório do Eclipse. Figura 2.7: Tela para selecionar o diretório onde serão salvos os códigos desenvolvidos no Eclipse. 25PROGRAMAÇÃO ORIENTADA A OBJETOS Na sequência, abrirá a tela de boas-vindas, conforme pode ser visto na figura 2.8. Você poderá fechar a tela de boas-vindas e criar um novo projeto. Para isso, clique em “File”, depois em “New” e por último em “Java Project”. Na figura 2.9 é mostrado a tela para criar um novo proje- to, insira o nome do projeto no campo “Project Name” e clique em Finish. Figura 2.8: Tela de boas-vindas do Eclipse Figura 2.9: Tela inicial para criar um novo projeto Java no Eclipse 26PROGRAMAÇÃO ORIENTADA A OBJETOS Posteriormente, é necessário criar uma classe, Java trabalha com os conceitos de Orientação a Objetos, que veremos nos próximos capítulos. Para criar uma classe, clique com o botão direito no nome do projeto, depois clique em “New” e adiante em “Class”, conforme pode ser visto na figura 2.10. Digite um nome para a classe no campo “Name”, já aproveite e marque o campo referente ao método main para que a classe seja criada com o método main, caso não marque este campo, poderá ser digitado o código, depois de criar a classe. Na figura 2.11 é mostrado a tela para informar o nome da classe a ser cria- da, também está marcado o local para marcar o campo que cria o método main. Pronto, agora a classe está criada, então, podemos iniciar a programação. Exemplo Resolvido 1 – Algoritmo Sequencial Exemplo 1. Faça um software para calcular a área de um triângulo retângulo. Fórmula da área é: Área = (Base * altura)/2. Para resolver este exercício teremos que declarar três variáveis: uma variável para armazenar o valor da base, outra para o valor da altura e uma última para arma- zenar o resultado da área. Você, aluno, deve estar se pergun- tando qual tipo de dados utilizar para isso, certo? O tipo de dados inteiro não é o mais recomentado, pois o valor da base e da altura poderá ser necessário para receber valores de ponto f lutuante. Mas qual tipo de dados ponto f lutuante usar f loat ou double? Figura 2.10: Criando uma classe em Java. Figura 2.11: Tela para informar o nome da classe a ser criada. 27PROGRAMAÇÃO ORIENTADA A OBJETOS Para situações que não precisem ter uma extrema precisão não é necessário utilizar o tipo de dados double, portanto, embora nada impeça a utilização do tipo de dados double, neste exercício o tipo de dados f loat é o suficiente. Então, utilize o tipo de dados double somente quando for realmente necessário, isso ajuda a poupar espaço em memória. As variáveis base e altura são va- riáveis de entrada, ou seja, variáveis que são solicitadas para o usuário informar os valores e uma variável de saída, a variável área, que é a variável que receberá o re- sultado do exercício. Outra variável (ou melhor, o termo correto seria objeto, masvocês entenderão melhor o que é um objeto mais adiante) que teríamos que criar é algo para ler um valor digitado pelo usuário no teclado do computador para depois inserir os valores digitados nas variáveis específicas. Mais tarde, irá aparecer um erro nesta variável que lê um valor do teclado, basta importar o pacote, clicar no símbolo do erro, na esquerda, e clicar no import da classe Scanner, a qual aparece conforme é mostrado na figura 2.12. Por esse motivo, as primeiras linhas de código são as seguintes: Scanner teclado=new Scanner(System.in); f loat base,altura,area; Após termos que solicitar para o usuário informar o valor da base. Para escrever um texto na tela utilizamos o comando System.out.println. Figura 2.12: Importando a classe Scanner. 28PROGRAMAÇÃO ORIENTADA A OBJETOS Após escrever uma mensagem na tela, é preciso ler o valor digitado pelo usuário, por padrão o valor digitado no teclado é considerado um texto (String), porém, esperamos um valor do tipo f lo- at, assim, precisamos converter o valor digitado no teclado em f loat (nextFloat). Portanto, as próximas linhas do nos- so código são as seguintes: System.out.println(“Digite o valor da base”); base=teclado.nextFloat(); Precisamos fazer a mesma coisa para a altura, solicitar para o usuário digitar o valor da altura e depois ler o valor digitado no teclado pelo usuário. Tendo os valores da base e da altura, é possível descobrir o valor da área, e para isso, basta jogar na fórmula. Portanto, as próximas linhas de nosso código são as seguintes: System.out.println(“Digite o valor da altura”); altura=teclado.nextFloat(); area=(base*altura)/2; Por fim, já temos o resultado da área na variável area, entretanto, é preciso mostrar o resultado para o usuário utilizando o comando System.out.println, e tudo aquilo que estiver entre aspas neste comando, será escritos tal e qual na tela para o usuário. Logo, para imprimir o conteúdo da variável area, concatenamos o texto (símbolo +) e colocamos fora das aspas a variável area. Portanto, o código da última linha de nosso código ficará assim: System.out.println(“O valor da área é “ + area); Na figura 2.13 é mostrado todo o código deste exercício Figura 2.13: Código completo do exemplo 1. 29PROGRAMAÇÃO ORIENTADA A OBJETOS Para compilar e testar o código clique no botão Run, que é mostrado na figura 2.14 com um retângulo vermelho ao redor. Exemplo Resolvido 2 – Algoritmo Sequencial Exemplo 2. Elaborar um software que efetue a leitura de três valores inteiros e apresente como resultado final o quadrado da soma dos três valores lidos. Para começar a resolver este exercício, vamos pensar quais são as variáveis de entrada e saída. Lembrando que as variáveis de entrada são solicitadas para o usuário digitar e as variáveis de saída são as variáveis que armazenam os resultados que se está buscando. Você deve estar se perguntando quais são as variáveis de entrada e saída, além dos tipos de dados, correto? A ordem do exercício já fala que são valores do tipo inteiro, como serão reali- zadas somas e multiplicação em cima desses valores de entrada, o resultado pode ser do tipo inteiro também. Como sugestão, podemos declarar as variáveis valor1, valor2, valor3 e resultado como inteiros (int), além da variável que pode ser chamada como sugestão de teclado para fazer a leitura dos valores digitados pelo usuário no teclado do computador. A seguir as primeiras linhas de có- digo: Scanner teclado=new Scanner(Sys- tem.in); int valor1,valor2,valor3,resultado; O próximo passo é pedir para o usuário informar o valor 1 e ler o valor digitado no teclado, lembrando que por padrão, o valor lido do teclado é um texto e é preciso converter o texto lido no tipo inteiro, que é o tipo de dados da variável valor1 (nextInt). A mesma coisa deve ser realizada para os valores 2 e 3. Assim, seguem as próximas linhas de código: System.out.println(“Digite o valor 1”); valor1=teclado.nextInt(); System.out.println(“Digite o valor 2”); valor2=teclado.nextInt(); System.out.println(“Digite o valor 3”); valor3=teclado.nextInt(); Tendo os três valores eu posso cal- cular o resultado, mas qual é a fórmula? O exercício fala no quadrado da soma dos três valores, bom, sabemos que teremos Figura 2.14: Compilando e testando o código. 30PROGRAMAÇÃO ORIENTADA A OBJETOS que somar os três valores, fazer esse resultado da soma ao quadrado. Uma outra for- ma de fazer algo ao quadrado é multiplicar pela soma dos valores novamente, e no final mostrar o resultado na tela para o usuário. Portanto, as últimas linhas do nosso código podem ser estas: resultado=(valor1+valor2+valor3)*(valor1+valor2+valor3); System.out.println(“O resultado é “ + resultado); Na figura 2.15 é mostrado o código completo deste exercício. Exemplo Resolvido 3 – Algoritmo Sequencial Exemplo 3. Elaborar um software que calcule e apresente o volume de uma caixa retangular, por meio da fórmula: VOLUME = COMPRIMENTO * LARGURA * ALTURA O primeiro passo é descobrir quais são as variáveis de entrada e saída. Essa é bem simples, a fórmula já deixa bem claro, teremos comprimento, largura e altura como variáveis de entrada, volume como variável de saída, com relação ao tipo de dados, que equivale ao mesmo raciocínio realizado no exemplo 1, logo, inteiro não é o tipo de dados mais recomendado, vis- to que o valor do comprimento, largura e altura e, por consequência, do volume necessitar muitas vezes armazenar nú- meros ponto f lutuante. Porém, double é uma opção, mas não necessitamos de uma precisão tão grande. Portanto, o tipo de dados f loat é o mais recomendado. Figura 2.15: Código completo do exemplo 2. 31PROGRAMAÇÃO ORIENTADA A OBJETOS Além disso, é preciso ter um objeto da classe Scanner para poder ler valores do teclado. As primeiras linhas de nosso código ficam assim: Scanner teclado=new Scanner(System.in); f loat comprimento,largura,altura,volume; Após, é necessário solicitar para o usuário que informe o valor do volume e ler o valor digitado pelo usuário. A mesma coisa deve ser feita para as variáveis largura e altura. Portanto, as próximas linhas do código são as seguintes: System.out.println(“Digite o valor do comprimento”); comprimento=teclado.nextFloat(); System.out.println(“Digite o valor da lar- gura”); largura=teclado.nextFloat(); System.out.println(“Digite o valor da al- tura”); altura=teclado.nextFloat(); Por fim, tendo os valores do com- primento, largura e altura, podemos cal- cular o valor do volume. Para isso, basta utilizar a fórmula e mostrar o resultado para o usuário. As últimas linhas de nosso código são as seguintes: volume=comprimento*largura*altura; System.out.println(“O volume é “ + vo- lume); Na figura 2.16 é mostrado o código completo deste exercício. Iniciando um Projeto no NetBeans A partir desse momento, iremos criar nossa primeira interface gráfica uti- lizando a IDE NetBeans, mas primeiro precisamos abrir a IDE NetBeans e criar um novo projeto. Para criar um novo projeto vá em “Arquivo” e depois em “Novo Projeto”. Abrirá uma janela para escolher qual lin- guagem você deseja utilizar e o tipo de projeto, selecione a linguagem “Java” e “Aplicação Java” como pode ser visto na figura 2.17. Figura 2.16: Código completo do exemplo 3. Figura 2.17: Tela para selecionar a linguagem de programação e o tipo de aplicação a ser criada. 32PROGRAMAÇÃO ORIENTADA A OBJETOS Adiante, clique em “Próximo”. Abrirá uma outra janela para escrever o nome do projeto. Nesta tela que abrirá, desmarque a opção para criar uma classe principal, pois não iremos desenvolver códigos para modo texto, desenvolveremos uma tela gráfica. Esta janela é apresentada na figura 2.18. Agora, precisamos criar um frame, que é a tela onde iremos inserir novos componentes visuais da interface gráfica. Clique no botão direito, em cima do nome do projeto, clique em “Novo”, e depois em “Form JFrame” , conforme pode ser visto na figura 2.19.33PROGRAMAÇÃO ORIENTADA A OBJETOS Por último, abrirá uma tela para informar o nome da classe conforme pode ser visto na figura 2.20. Pronto, agora estamos prontos para iniciar nossa primeira interface gráfica em NetBeans. Exemplo Resolvido em NetBeans Exemplo: Escrever um software que calcule o salário do funcionário. Leia o valor do salário base. Calcule e acrescente um bônus de 20%, desconte o imposto de 7% sobre o salário. Mostre o resultado. Neste exemplo podemos resolver o exercício com apenas duas variáveis, a variável de entrada do salário base e a variável do salário final. De forma opcional, podemos utilizar uma variável bônus e imposto, mas não é necessário. O primeiro passo é alterar algumas propriedades da tela, que estão na direita, conforme é mostrado na figura 2.21. Altere as propriedades “Title” para o título que deseja que apareça na barra de títulos da janela. Desmarque a propriedade “Resizable” para que a tela não possa ser maximizada, como nossa tela terá poucos componentes, não é interessante deixar o usuário maximizar a tela e deixar boa parte dela vazia, sem componentes. Figura 2.20: Tela para informar o nome da classe do Form JFrame. Figura 2.21: Propriedades da tela (Form JFrame). 34PROGRAMAÇÃO ORIENTADA A OBJETOS Para fazer com que a tela abra no centro, vá em código-fonte, conforme é mostrada na figura 2.22. Insira a seguinte linha em seu código, no local mostrado na figura 2.23. this.setLocationRelativeTo(null); Agora, iremos colocar o label para solicitar o salário base para o usuário. Figura 2.21: Propriedades da tela (Form JFrame). Figura 2.23: Abrindo centralizado uma tela Form JFrame. 35PROGRAMAÇÃO ORIENTADA A OBJETOS Então, vá até os “Controles Swing” na direita e arraste o componente “Label” para a tela, conforme é mostrado na figura 2.24. Para o Label altere as propriedades: Text = Salário Base: Font = Coloque o tamanho da fonte 24 (de preferência mantenha o mesmo tamanho de fonte para todos os componentes que inserir na tela). Clique no botão direito do mouse, em cima do componente, e vá em “Alterar o Nome da Variável...” = Escreva lblSa- larioBase. Arraste o componente “Campo de Texto” em “Controles Swing” para a tela ao lado do Label que você arrastou antes. Para o Campo de Texto altere as propriedades: Text = Deixe em branco. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse, em cima do componente e vá em “Alterar o Nome da Variável...” = Escreva txtSa- larioBase. Abaixo do Label e da Caixa de Tex- to arraste o componente “Botão”, presente em “Controles Swing”. Para o Botão altere as propriedades: Text = Limpar. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse, em cima do componente e vá em “Alterar o Nome da Variável...” = Escreva btnLimpar. Ao lado do botão Limpar, arraste outro Botão, altere as seguintes proprie- dades: Text = Resultado. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse em cima do componente e vá em “Alterar o Nome da Variável...” = Escreva btnRe- sultado. Abaixo dos botões, arraste um La- bel, altere as seguintes propriedades: Text = Deixe em Branco. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mou- se, em cima do componente, logo vá em “Alterar o Nome da Variável...” = Escreva lblResultado. Figura 2.24: Componente Label nos Controles Swing. 36PROGRAMAÇÃO ORIENTADA A OBJETOS É possível perceber que embora os componentes sejam diferentes, foram al- teradas as mesmas propriedades: o texto, o tamanho do texto e o nome do compo- nente. Você, aluno, deve estar se pergun- tando se sempre é preciso alterar estas mesmas propriedades, independentes do componente utilizado, correto? A resposta é que nem sempre serão só estes três componentes, algumas ve- zes precisaremos alterar algumas outras propriedades. Tente deixar a tela parecida com a da figura 2.25. O código do botão Limpar é apagar os textos que estejam presentes na caixa de texto e no label do resultado. Portanto, o código do botão Limpar é o seguinte: txtSalarioBase.setText(“”); lblResultado.setText(“”); O código pode ser conferido na fi- gura 2.26. Para desenvolver o código do botão Resultado, declare duas variáveis do tipo f loat, uma para armazenar o valor do sa- lário base e outra para armazenar o valor do salário líquido. O próximo passo é pegar o valor do salário base digitado pelo usuário e converter para f loat (por padrão todo va- lor digitado em uma caixa de texto é um texto). Nesse caso, existem alguns detalhes importantes para alterar o valor da pro- priedade Text, onde se utiliza o método setText, dessa forma, todo método que inicia com set altera um valor, e para obter, pegar uma propriedade, utiliza-se o mé- todo get. Então, o método getText, obtém o texto digitado pelo usuário. Já Float. parseFloat, converte o texto de formato String para o tipo de dados f loat. Tendo o valor do salário base é pos- sível obter o valor do salário líquido. Para calcular o valor do salário líquido basta fazer a multiplicação do valor do salário base por 1.20 (acrescenta 20% do bônus) e depois multiplicar por 0.93 (desconta-se 7% de imposto), assim, para forçar o valor do salário líquido a ser um f loat, faz-se um casting. Por final, basta imprimir o resultado no Label lblResultado. Portanto, o código ficará assim: f loat salarioBase,salarioLiquido; salarioBase = Float.parseFloat(txtSalario- Base.getText()); sa lar ioLiquido=(f loat) (sa lar ioBa- se*1.20*0.93); lblResultado.setText(“O salário líquido é “ + salarioLiquido); Figura 2.25: Tela Form JFrame criada. Figura 2.26: Código do botão Limpar. 37PROGRAMAÇÃO ORIENTADA A OBJETOS O código do botão Resultado pode ser conferido na figura 2.27. Síntese Nesse capítulo tivemos nosso primeiro contato com a linguagem de progra- mação Java, aprendemos os tipos de dados que a linguagem de programação possui, como realizar conversões entre tipos de dados, os operadores aritméticos, lógicos e relacionais e algumas expressões. Após aprendemos como ciar um projeto e uma classe na IDE Eclipse, veri- ficamos três exemplos resolvidos de pequenos algoritmos em Java. Neste primeiro momento, resolvemos exemplos utilizando algoritmos sequenciais, que possuem a seguinte sequência: entrada de dados, processamento (alguma fórmula) e saída, apresentando o resultado do cálculo processado. Por fim, aprendemos a criar um projeto e uma interface gráfica na IDE NetBe- ans, e resolvemos um exemplo empregando algoritmo sequencial utilizando a IDE NetBeans com interface gráfica. Figura 2.27: Código do botão Resultado. Exercícios 1. Ler dois valores e efetuar os seguintes cálculos: soma, subtração, multiplicação e divisão dos dois valores. Mostrar todos os resultados. 2. Ler uma temperatura em graus Celsius e apresentá-la, de forma convertida em graus Fahrenheit. A fórmula de conversão de temperatura a ser utilizada é F = (9 * C + 160) / 5, em que a variável F representa a temperatura em graus Fahrenheit e a variável C a temperatura em graus Celsius. 3. Ler uma temperatura em graus Fahrenheit a apresentá-la, de forma convertida em graus Celsius. A fórmula de conversão de temperatura a ser utilizada é C = (F -32) *5 / 9, em que a variável F é a temperatura em graus Fahrenheit e a variável C é a temperatura em graus Celsius. 4. Elabore um software que leia três valores digitados pelo usuário (nota1, nota2 e nota 3) calcule e mostre a média aritmética destes três valores. 5. Elabore um software que leia a medida do raio de um círculo, calcule e mostre a área do círculo. 6. Escrever um software que leia a quantidade de peças do tipo A e seu custo; também, que leia a quantidade de peças do tipo B e seu custo. Sabendo que o imposto sobre estas peças é de 8,5%, calcule e escreva o total a ser pago pela compra. 39PROGRAMAÇÃO ORIENTADA A OBJETOS Neste capítulo iremos construir nossos primeiros códigos utilizando instruções condicionais,onde existem algumas possibilidades e se uma determinada situação for atendida, logo, uma determinada ação será realizada. INSTRUÇÕES CONDICIONAIS Instruções condicionais são instruções que são executadas apenas se determinada condição for atingida Após aprender os primeiros conceitos de Java, os tipos de dados que a linguagem possui, os operadores aritméticos, lógicos e relacionais, e ter desenvolvido os primeiros algoritmos sequenciais em Java, utilizando as IDEs Eclipse e NetBeans, iremos estudar neste capítulo como utilizar as instruções condicionais em Java e verificar alguns exemplos nas IDEs Eclipse e NetBeans, para que cada vez mais fiquemos fami- liarizados com as IDEs e com a linguagem Java. Com relação à figura seguir, tem tudo a ver com o assun- to deste capítulo, uma vez que é possível perceber que existem pontos em que podem ser tomados caminhos diferentes e é essa a ideia das instruções condicionais, possibilitar executar uma determinada ação apenas se uma determinada condição for atingida, e caso existam outras possibilidades, executar a ação correta para aquela determinada situação. 40PROGRAMAÇÃO ORIENTADA A OBJETOS Instruções condicionais diferem- -se dos algoritmos sequenciais, vistos no capítulo anterior, pois nestes algoritmos sequenciais existe uma única sequência (caminho) para resolver um determinado problema, não sendo preciso tomar deci- sões ao longo da resolução do exercício. Você, aluno, deve estar se pergun- tando se será igual as instruções condi- cionais vistas em outras linguagens de programação ao longo do curso, correto? A resposta é sim, muito parecida, os con- ceitos são os mesmos, porém dependendo da linguagem, a sintaxe pode variar um pouco. Instrução Condicional – If...else A instrução condicional mais co- mum e usada é a instrução se...senão (if... else), com certeza esta instrução condicio- nal vocês já utilizaram em outras lingua- gens de programação, mas vamos relem- brar o conceito e fazer alguns exemplos. Existem três situações em que o co- mando if pode ser utilizado. • 1ª situação: Quando uma determinada condição for atingida, uma determinada ação será feita, se a condi- ção não for atingida, nenhuma ação será tomada. Sintaxe: if (<condição>) { <ação se condição for verdadeira> } Exemplo: Executar uma determinada ação somente se o valor for maior ou igual a 450. if (valor>=450) { <ação se o valor for maior ou igual a 450> } • 2ª situação: Quando existirem dois caminhos, duas situações diferentes, uma se uma determinada condição for atingida será executada, outra se uma determinada ação e caso não seja atingida a condição, será executada outra ação. Sintaxe: if (<condição>) { <ação se condição for verdadeira> }else { <ação se condição for falsa> } Exemplo: Executar uma determinada ação se o valor for maior ou igual a 450 e outra ação se valor for menor que 450. if (valor>=450) { <ação se valor for maior ou igual a 450> }else { <ação se valor for menor que 450> } 41PROGRAMAÇÃO ORIENTADA A OBJETOS • 3ª situação: Quando existem três ou mais condições, e para cada condição existem ações diferentes a serem tomadas. Sintaxe: if (<condição 1>) { <ação se condição 1 for verdadeira> }else if (<condição 2>) { <ação se condição 2 for verdadeira> }else { <ação se todas as condições forem falsas> } Exemplo: Executar uma determi- nada ação se o valor for maior ou igual a 1200, executar outra ação se o valor for maior ou igual a 450 e menor que 1200 e outra ação se o valor for menor que 450. if (valor>=1200) { <ação se valor for maior ou igual a 1200> }else if (valor>=450) { <ação se valor for maior ou igual a 450 e menor que 1200> }else { <ação se valor for menor que 450> } Observações Importantes: • A utilização de abra e fecha cha- ves ({ }) somente é obrigatória se a ação a ser tomada nos blocos if, else if ou else contiver mais de uma linha de código, eainda, se for necessário realizar apenas um único comando, a utilização das chaves será opcional. • É possível colocar inúmeros blocos “else if ”, quantos forem necessários. Exemplo Resolvido 1 – Comando if Exemplo 1. Leia um valor inteiro. Se for digitado um valor menor do que zero, informe que o número digitado é negativo. O primeiro passo para resolver este exercício é pensar em qual ou quais são as variáveis e o tipo de dados desta ou destas variáveis. A própria ordem do exercício fala em uma variável valor do tipo inteiro (int), sendo essa uma variável de entrada. E você deve estar se perguntando, agora, quais são as variáveis de saída neste caso, correto? O exercício fala que se o valor in- formado for negativo, o programa deve 42PROGRAMAÇÃO ORIENTADA A OBJETOS informar para o usuário, portanto, não temos variável de saída neste caso, apenas um teste para ver se o número é negativo. Além da variável valor, temos o ob- jeto utilizado para ler valores do teclado. Desse modo, as primeiras linhas do nosso programa são as seguintes: Scanner teclado=new Scanner(System.in); int valor; Após, é necessário pedir para o usuário informar um valor e ler o valor digitado. As próximas linhas do nosso código serão as seguintes: System.out.println(“Digite um valor in- teiro”); valor=teclado.nextInt(); Por fim, basta fazer um teste: se o valor for menor do que 0 escrever na tela que o valor é negativo. As últimas linhas do código são as seguintes: if (valor<0) System.out.println(“O valor informado é negativo”); Lembrando que não é obrigatório o abre e fecha chaves quando existe apenas uma linha de código dentro do bloco if, else if ou else, por isso não foram utilizadas as chaves no código acima. Na figura 3.1 é mostrado o código completo do exemplo: Exemplo Resolvido 2 – Comando if Exemplo 2: Faça um software que leia um número e verifique se ele é par ou ímpar. O primeiro passo para resolver qual- quer exercício é pensar em qual ou quais são as variáveis. Pela ordem do exercício sabemos que é preciso declarar uma variável para guardar um número que deve ser infor- mado pelo usuário, este número pode ser declarado do tipo inteiro (int). Um objeto que precisamos declarar é para ler o nú- mero digitado pelo usuário. Portanto, as primeiras linhas do có- digo são as seguintes: Scanner teclado=new Scanner(System.in); int numero; Figura 3.1: Código completo do exemplo 1 sobre o comando if. 43PROGRAMAÇÃO ORIENTADA A OBJETOS O próximo passo é solicitar para o usuário digitar um número e ler o número digitado pelo usuário. As próximas linhas do código são: System.out.println(“Digite um número”); numero=teclado.nextInt(); Por último, é preciso fazer um teste para ver se o valor é par ou ímpar, uma maneira de fazer isso é ver o resto da divi- são do número digitado por 2, se o resul- tado for igual a 0, o número é par, senão é ímpar. Portanto, as últimas linhas do có- digo são: if (numero%2==0) System.out.println(“É par”); else System.out.println(“É ímpar”); Na figura 3.2 é mostrado o código completo do exemplo: Exemplo Resolvido 3 – Comando if Exemplo 3: Leia a idade de uma pessoa e informe se a pessoa é: 1. Criança (idade < 12) 2. Adolescente (12 <= idade <= 18) 3. Jovem (18 < idade < 30) 4. Adulto (30 <= idade <= 60) 5. Idoso (idade > 60) Para resolver este exercício é preci- so declarar uma variável para armazenar a idade da pessoa, essa variável deve ser declarada como inteiro (int), também é preciso um objeto para ler a idade digitada. As primeiras linhas de nosso código são: Scanner teclado=new Scanner(System.in); int idade; O próximo passo é solicitar para o usuário digitar a idade e ler a idade que o usuário digitar no teclado, convertendo o valor digitado, que está no formato de texto, em um número inteiro (nextInt). As próximas linhas do código são: System.out.println(“Digite a idade de uma pessoa”); idade=teclado.nextInt(); Figura 3.2: Código completo do exemplo2 sobre o comando if 44PROGRAMAÇÃO ORIENTADA A OBJETOS O próximo passo é verificar se a pes- soa é uma criança, adolescente, jovem, adulto ou idoso. Para isso é preciso fazer um bloco if testando se a pessoa é uma criança. Na sequência, é realizado uma série de testes senão se (else if), testando se a pessoa é adolescente, jovem ou adulto e, por fim, se nenhum dos testes anteriores for verdadeiro será executado o comando senão (else), informando que a pessoa é idosa. Lembrando que o operador && é o operador lógico e. A seguir, as próximas linhas do có- digo deste exercício: if (idade<12) System.out.println(“É uma criança”); else if (idade>=12 && idade<=18) System.out.println(“É um adolescente”); else if (idade>18 && idade<30) System.out.println(“É um jovem”); else if (idade>=30 && idade<=60) System.out.println(“É um adulto”); else System.out.println(“É um idoso”); Na figura 3.3 é mostrado o código completo do exemplo: Exemplo Resolvido em NetBeans Exemplo: Um vendedor tem seu sa- lário calculado em função do valor total de suas vendas. Se o total de vendas for maior que R$2000,00, o vendedor receberá como salário um bônus de R$50,00 mais 10% do valor das vendas. Caso contrário, receberá apenas 7,5% do valor das vendas. Faça um programa que leia o total de vendas de um vendedor, calcula e imprima seu salário. O primeiro passo antes de começar a criar a interface gráfica e desenvolver o código é criar um novo projeto e um form JFrame. Após, iremos alterar algumas pro- priedades da interface gráfica. Altere o título da tela (proprieda- de Title) pelo nome que você desejar que apareça na barra de títulos da tela. Desmarque a propriedade Resizable, para que a tela não possa ser redimensio- nada, maximizada. Figura 3.3: Código completo do exemplo 3 sobre o comando if. 45PROGRAMAÇÃO ORIENTADA A OBJETOS Para abrir centralizado a tela no monitor, clique na aba Código-Fonte e insira a seguinte linha em seu código no local mostrado na figura 3.4. this.setLocationRelativeTo(null); Agora, iniciaremos a construção de nossa interface gráfica arrastando alguns componentes para a tela e alterando algumas propriedades. Arraste um Label para a tela, altere as seguintes propriedades: Text = Total em Vendas Realizadas: Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse, em cima do componente, e vá em “Alterar o Nome da Variável...” = Escreva lblTo- talVendas. Do lado do Label, insira um Campo de Texto para o usuário digitar o valor das vendas realizadas. Altere as seguintes propriedades: Text = Deixe em branco. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mou- se em cima do componente, logo vá em “Alterar o Nome da Variável...” = Escreva txtTotalVendas. A seguir do Label e da Caixa de Texto arraste o componente chamado “Botão”. Para o Botão altere as propriedades: Text = Limpar. Font = Coloque o tamanho da fonte 24. Figura 3.4: Centralizando nossa interface gráfica. 46PROGRAMAÇÃO ORIENTADA A OBJETOS Clique no botão direito do mouse, em cima do componente, e vá em “Al- terar o Nome da Variável...” = Escreva btnLimpar. Ao lado do botão Limpar, arraste outro Botão, altere as seguintes proprie- dades: Text = Resultado. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse em cima do componente e vá em “Alterar o Nome da Variável...” = Escreva btnRe- sultado. Abaixo dos botões, arraste um La- bel, altere as seguintes propriedades: Text = Deixe em Branco. Font = Coloque o tamanho da fonte 24. Clique no botão direito do mouse, em cima do componente, depois vá em “Alterar o Nome da Variável...” = Escreva lblResultado. Tente deixar a tela parecida com a figura 3.5. Agora, iremos programar o código dos botões Limpar e Resultado. O código do botão Limpar necessita apagar o texto que estiver presente na caixa de texto e no label do resultado, para alterar o texto é preciso chamar o método set da propriedade correspondente ao texto (setText). Portanto, o código do botão Limpar é o seguinte: txtTotalVendas.setText(“”); lblResultado.setText(“”); Para programar o código do botão Limpar, assim como qualquer outro código de outros botões, basta dar dois cliques em cima do botão que deseja programar. Na figura 3.6 é mostrado o código do botão Limpar: Figura 3.5: Interface gráfica deste exemplo em NetBeans. Figura 3.6: Código do botão Limpar. 47PROGRAMAÇÃO ORIENTADA A OBJETOS do total de vendas. O f loat entre parênteses é para fazer um casting, forçar o Java a retornar um valor f loat, pois o compilador por padrão retorna um valor do tipo de dados double por não ter certeza de que o tipo de dados f loat possui espaço suficiente para armazenar o valor. E, por fim, é preciso mostrar o resultado do salário no label. Portanto, as próximas linhas de código são: if (totalVendas>2000) salario=(f loat) (totalVendas*0.10+50); else salario=(f loat) (totalVendas*0.075); lblResultado.setText(“O salário é R$ “ + salario); Na figura 3.7 é mostrado o código do botão Resultado: O código do botão resultado precisa de duas variáveis, uma para armazenar o valor total das vendas realizadas pelo vendedor e outra para calcular o valor do salário, o tipo float é o mais recomendado, pois não temos uma precisão tão grande (número de casas decimais) quanto o tipo de dados double proporciona. Mais tarde, é preciso converter o valor total de vendas, digitado na caixa de texto para pegar o valor que chamamos de método get, da propriedade Text (get- Text) e para converter o texto para f loat utilizamos Float.parseFloat. Assim, as primeiras linhas do có- digo são: f loat totalVendas,salario; totalVendas = Float.parseFloat(txtTotal- Vendas.getText()); Posteriormente, é preciso fazer um if testando se o total de vendas é supe- rior a 2000, se for o salário será igual a 50 reais mais 10% do total de vendas, se não o salário do vendedor é igual a 7,5% Figura 3.7: Código do botão Resultado. 48PROGRAMAÇÃO ORIENTADA A OBJETOS Vamos detalhar um pouco mais. Ao lado do comando switch é preciso colocar qual variável você deseja comparar aos valores. Nos blocos case, que podem ser utilizados inúmeros blocos, não somente dois, conforme mostrado anteriormente, ao lado da palavra case é colocada a condição, se a condição for atendida, será executada as ações daquele bloco. Uma observação importante é o co- mando break, que a cada final de bloco precisa ser inserido, do contrário, as ações presentes nos blocos seguintes serão exe- cutadas, até encontrar o comando break. Outra observação importante é o bloco default, que é opcional, não preci- sa, obrigatoriamente, estar presente, ele é executado somente se todas as condições explicadas forem falsas, como se fosse a instrução else, vista anteriormente. Exemplo Resolvido 1 – Comando switch... case Exemplo 1: Leia um número corres- pondente ao dia da semana. Caso o usuário digite o número 1 escreva “Domingo”, caso seja digitado o número 2, escreva “Segunda-feira” e, assim, sucessivamente. O primeiro passo é declarar uma variável para armazenar o número cor- respondente ao dia da semana, pode ser declarada do tipo inteiro (int), além de precisar de um objeto para ler o valor di- gitado pelo usuário. Portanto, as primeiras linhas do código são: Scanner teclado=new Scanner(System.in); int numero; Na sequência, é preciso solicitar para o usuário digitar o número correspondente ao dia da semana e ler o valor digitado pelo usuário, convertendo o texto digitado em número (nextInt). Instrução Condicional – Switch... case O comando switch...case é muito utilizado, principalmente, quando existem muitas possibilidades, ao invés de utilizar a instrução if, e desenvolver vários blocos else if, é possível utilizar a instrução swi- tch...case. A instrução switch...case possui a seguinte estrutura: switch (<variável>) { case (<condição 1>): <ações se condição 1 for verdadeira>break; case (<condição 2>): <ações se condição 2 for verdadeira> break; default: <ações se nenhuma das condições acima for verdadeira> break; } 49PROGRAMAÇÃO ORIENTADA A OBJETOS As próximas linhas do código são: System.out.println(“Digite o número cor- respondente ao dia da semana”); numero=teclado.nextInt(); O próximo passo é testar o valor que está presente na variável número, para isso, é realizado um conjunto de blocos case, testando se o valor digitado é 1, 2, 3 e assim, sucessivamente. Ao final de cada bloco case é colocado o comando break, para que, assim, não sejam executadas as ações dos outros blocos case. No final, existe o bloco de código default, caso nenhum número de 1 até 7 tenha sido digitado, informando na tela que este não é um dia da semana válido. As últimas linhas do código são: switch (numero) { case 1: System.out.println(“Domingo”); break; case 2: System.out.println(“Segunda-feira”); break; case 3: System.out.println(“Terça-feira”); break; case 4: System.out.println(“Quarta-feira”); break; case 5: System.out.println(“Quinta-feira”); break; case 6: System.out.println(“Sexta-feira”); break; case 7: System.out.println(“Sábado”); break; default: System.out.println(“Este não é um dia da semana válido!”); break; } 50PROGRAMAÇÃO ORIENTADA A OBJETOS Na figura 3.8 é mostrado o código completo deste exemplo. Exemplo Resolvido 2 – Comando switch... case Exemplo 2: Leia uma letra referente a opção que a pessoa é ou se considera: a) Criança. b) Adolescente. c) Adulto. d) Idoso. Ao final, mostre uma mensagem informando se a pessoa é uma criança, adolescente, adulto ou idoso. O primeiro passo é verificar quais são as variáveis. Para armazenar a letra que a pessoa escolheu, é possível armazenar em uma variável do tipo char (que armazena um único carácter, além do objeto para ler um carácter do teclado. Figura 3.8: Código completo do exemplo 1 do comando switch...case. 51PROGRAMAÇÃO ORIENTADA A OBJETOS As primeiras linhas do código são: Scanner teclado=new Scanner(System.in); char opcao; O próximo passo é apresentar as opções para o usuário, solicitar para ele digitar a letra que corresponde à opção correta e ler a letra digitada pelo usuário. Para ler uma letra no teclado, utilizamos o next().chartAt(0), onde 0 significa o primeiro dígito teclado pelo usuário. Portanto, as próximas linhas do có- digo são: System.out.println(“Você é um(a):”); System.out.println(“a) Criança.”); System.out.println(“b) Adolescente.”); System.out.println(“c) Adulto.”); System.out.println(“d) Idoso”); System.out.println(“Digite a letra referente a opção correta”); opcao=teclado.next().charAt(0); Portanto, as últimas linhas do nosso código são: switch (opcao) { case ‘a’: case ‘A’: System.out.println(“Você é uma criança”); break; case ‘b’: case ‘B’: System.out.println(“Você é um adolescente”); break; case ‘c’: case ‘C’: System.out.println(“Você é um adulto”); break; case ‘d’: case ‘D’: System.out.println(“Você é um idoso”); break; default: System.out.println(“Opção invá- lida”); break; } Por fim, em switch é analisada a op- ção digitada pelo usuário, caso seja criança, adolescente, adulto ou idoso, mostrará a mensagem correspondente, em cada case possui o comando break. Se for digitada uma opção diferente das letras a, b, c, d, A, B, C ou D, é mostrado no bloco default a mensagem de opção inválida. Por fim, para testar, por exemplo, se foi digitado um a minúsculo ou a letra A maiúscula, posso separar por dois pontos um case do outro, não precisando neste caso criar vários blocos repetidos. 52PROGRAMAÇÃO ORIENTADA A OBJETOS Na figura 3.9 é mostrado o código completo deste exemplo. Instrução Condicional – Operador Ternário Esta é uma outra forma de utiliza- ção de instrução condicional. A utilização de operador ternário (? :) é uma forma abreviada de utilização de uma instrução if...else. Porém, algumas observações são importantes de serem ressaltadas. Poucos desenvolvedores de software conhecem este operador, isso dificulta um pouco a legibilidade do código. Só pode ser utili- zado este operador ternário caso seja uti- lizada uma única ação se a condição for verdadeira e uma única ação se a condição for falsa. Sintaxe: <variável> = <condição> ? <valor atribuído à variável se a condição for verdadeira> : < valor atribuído a variável se a condição for falsa>; Figura 3.9: Código completo do exemplo 2 do comando switch...case. 53PROGRAMAÇÃO ORIENTADA A OBJETOS Exemplo: Crie um programa que receba a média de um aluno e imprima na tela se o aluno foi • aprovado (média >= 7) • reprovado (média < 7) O primeiro passo para resolver este e qualquer exercício de algoritmo é pensar em quais são as variáveis necessárias. É muito provável que você, aluno, deva estar pensando nisso neste momento, correto? Uma variável será necessária para armazenar o valor da média, não tem a ne- cessidade de uma precisão tão grande quanto o tipo de dados double proporciona, mas não pode ser inteiro, pois a maioria das notas são ponto f lutuante, portanto, o ideal é o tipo de dados f loat. Outra variável do tipo String pode ser utilizada para armazenar a situação do aluno, “Aprovado” ou “Reprovado”. Além dessas duas variáveis, é preciso ter um objeto para ler valores do teclado. Portanto, as primeiras linhas de nosso código são: Scanner teclado=new Scanner(System.in); f loat media; String situacao; Após, é necessário pedir para o usu- ário digitar a média obtida pelo aluno e ler esta média do teclado, convertendo para f loat (nextFloat). As próximas linhas do código são as seguintes: System.out.println(“Digite a média obtida pelo aluno”); media=teclado.nextFloat(); A próxima linha do nosso código é onde utilizaremos o operador ternário, iremos inserir na variável situação, caso a média seja maior ou igual a 7, a palavra “Aprovado”, senão “Reprovado”. Por fim, escrevemos a situação do aluno na tela. As últimas linhas de nosso código são as seguintes: situacao = media>=7 ? “Aprovado” : “Re- provado”; System.out.println(situacao); 54PROGRAMAÇÃO ORIENTADA A OBJETOS Na figura 3.10 é mostrado o código completo deste exemplo. Síntese Neste capítulo aprendemos as ins- truções condicionais presentes na lingua- gem Java. Também vimos sobre a instrução if, seja ela quando existe uma única pos- sibilidade, se atingir uma determinada condição, que será executada uma ação, do contrário, nenhuma ação será executada, seja quando existem dois caminhos, uma quando uma condição for verdadeira, outra quando a condição for falsa, seja quando existirem diversas possibilidades, ou mui- tas condições. Estudamos a respeito da instrução switch...case, vimos que ela é bastante uti- lizada, principalmente quando existem várias possibilidades, condições e, que seriam necessários na instrução if, vários blocos else if. Aprendemos também sobre o opera- dor ternário, embora ele seja um comando mais abreviado se comparado com o if, é pouco usado, pois poucos desenvolvedores de software conhecem, utilizado quando existe uma única ação se a condição for verdadeira e outra se for falsa. Também vimos alguns exemplos utilizando as IDEs Eclipse e NetBeans. Figura 3.10: Código completo do exemplo utilizando operador ternário. Exercícios 1. Faça um programa que leia três notas de um aluno, calcule a média, se a média for maior ou igual a 7, escreva na tela a mensagem “Aprovado”, senão escreva “Reprovado”. 2. Leia um valor e determine se o mesmo é ou não maior que 50. 3. Leia dois valores, verifique se os dois valores são iguais, se forem diferentes,
Compartilhar