Curso Java BásicoInstrutora: Katia Cristina Lage dos Santos CEFET-MG Campus Varginha Março/2011 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Título da Apresentação Visão geral O nome Java é usado para referir-se à: uma linguagem de programação orientada a objetos; uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações multiplataforma; um ambiente de execução presente em navegadores, mainframes, sistemas operacionais, celulares, palmtops, cartões inteligentes, eletrodomésticos Java foi lançada pela Sun Microsystems em 1995 write once, run everywhere; programe uma única vez, execute em qualquer lugar; o projeto é controlado pela Sun (http://java.sun.com/) e pela comunidade de usuários JPC (Java Community Process http://jcp.org/en/home/index). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Título da Apresentação Visão geral Um programa escrito para a plataforma Java necessita de dois componentes para ser executado: a máquina virtual Java (Java Virtual Machine - JVM); um conjunto de bibliotecas de classe que disponibilizam um série de serviços para esse programa. O pacote de software que contém a máquina virtual e esta biblioteca de classes é conhecido como JRE (Java Runtime Environment). JRE JVM + Bibliotecas de Classe Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Linux. ou simplesmente JVM: é um dos principais componentes da plataforma Java.Curso Java Básico Máquina Virtual A máquina virtual Java. Mas COMO? a JVM emula uma máquina real possuindo um conjunto de instruções próprio e atua em áreas de gerenciamento de memória. Essa especificação visa não atender a nenhum tipo de tecnologia em específico. a JVM possui uma especificação que pode ser implementada nas diversas arquiteturas. permite que o mesmo código possa ser executado em várias plataformas sem a necessidade de recompilação. os ambientes de execução e de desenvolvimento são fornecidos por fabricantes de hadware e software (MacOS. etc). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . seja de hardware ou de sistema operacional. que são as instruções para a máquina virtual e uma tabela de símbolos. mas sim com o arquivo de formato class. Ambiente de Desenvolvimento CÓDIGO JAVA COMPILADOR Distribuição VM Windows SO Windows Byte Code Java VM Linux SO Linux VM Celular SO Celular Ambiente de Execução Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Esse tipo de arquivo contém os bytecodes.Curso Java Básico Máquina Virtual A máquina virtual não trabalha diretamente com a linguagem de programação Java. Palm OS. gerando o conjunto de instruções chamado de byte-code.Curso Java Básico Máquina Virtual O código Java é compilado. rodando em Linux. Windows. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Esse byte-code poderá então ser interpretado por qualquer máquina virtual Java. Esse byte-code é aplicado à Máquina Virtual Java (JVM) que se encarrega de interpretar os comandos para o sistema operacional onde o programa está rodando. run anywhere. Ou seja. Solaris ou qualquer outro sistema operacional que possua uma máquina virtual Java implementada. Compile once. a máquina virtual traduz as instruções do código Java para instruções válidas no sistema operacional em que está rodando. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . protegendo o computador de operações perigosas. a máquina virtual Java causará um erro de execução (runtime error).Curso Java Básico Máquina Virtual Um programa Java só é executado caso o seu byte-code passe pela verificação de segurança da JVM. não existem violações de áreas restritas de memória no código. Caso alguma das condições acima não seja satisfeita. não existe nenhuma conversão ilegal entre dados do programa o acesso a objetos está corretamente declarado. que consiste em: o programa foi escrito utilizando a sintaxe e semântica da linguagem. A JVM não permite que um programa Java acesse recursos de hardware diretamente. os tipos de parâmetros dos métodos são corretos. o código não gera Stack Overflow. onde as instruções em bytecode eram interpretadas uma por vez. Compilador JIT (just-in-time) desde a versão 1. conjunto de registradores. pilha de objetos coletados pelo garbage-collector e área de memória. formato padrão de classes.2 da JRE. a implementação da Sun da JVM inclui um compilador just-in-time (JIT). com este compilador todo o bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual em uma só operação. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . permitindo um ganho de desempenho muito grande em comparação com a implementação anterior.Curso Java Básico Máquina Virtual Uma JVM possui definições concretas para a implementação dos seguintes itens: conjunto de instruções (equivalentes às instruções da CPU). pilha de memória. a plataforma Java disponibiliza um grande conjunto padronizado de bibliotecas de classe. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Este código encontra-se. um corpo formado por código reusável é organizado e disponibilizado para simplificar o trabalho do programador. na forma de bibliotecas dinâmicas que a aplicação utiliza durante a sua execução. normalmente. as aplicações não podem depender das bibliotecas destes sistemas. que contém praticamente o mesmo número de funções encontradas nos sistemas operacionais modernos. Por isso. Como a plataforma Java não é dependente de qualquer sistema operacional.Curso Java Básico Bibliotecas de Classes Na maioria dos sistemas operacionais modernos. contém uma interface para tarefas que dependem do hardware e do sistema operacional (exemplo. como a manutenção de listas de elementos ou manipulação de strings. acesso a rede e manipulação de arquivos). Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . as bibliotecas implementam esta funcionalidade usando os recursos disponíveis. se alguma plataforma não suportar alguma função que uma aplicação Java necessita. ou disponibilizam um meio consistente para que a aplicação verifique a presença de determinada funcionalidade.Curso Java Básico Bibliotecas de Classes Uma classe de biblioteca Java serve a três propósitos dentro da plataforma Java: disponibilizam ao programador um conjunto de funções bem conhecidas que realizam tarefas comuns. ocorre a alocação e liberação dinâmica de memória RAM.Curso Java Básico Gerenciamento de Memória Durante a execução de um programa de computador. a linguagem Java introduziu o conceito de garbage-collection. Basic e C/C++. Em linguagens tradicionais como Pascal. impedindo o estouro de memória (stack overflow) e outros problemas. Para facilitar a vida dos programadores. e evitar os erros comuns associados à alocação de memória. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Dados são escritos e lidos da memória do computador satisfazendo os requisitos de cada programa. como o acesso indevido a áreas reservadas de memória. o programador é responsável por controlar essa alocação. ) public static void main(){ Pessoa pessoa1 = new Pessoa().. public class Pessoa{ int intIdade. Quando uma variável é declarada em um código de computador..Curso Java Básico Gerenciamento de Memória Garbage-collection é um mecanismo de controle automático de alocação e liberação de memória. } } MEMÓRIA pessoa1 Pessoa Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . String strNome (. a JVM cria um ponteiro para uma área de memória equivalente ao tamanho do tipo de dado utilizado por essa variável. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. pessoa2 } Caso o computador fique com pouca memória disponível.Curso Java Básico Gerenciamento de Memória Garbage-collection Quando essa variável é associada a outra região de memória. MEMÓRIA (. a JVM remove objetos dessa pilha. Pessoa pessoa2 = new Pessoa(). a JVM coloca o espaço alocado anteriormente em uma pilha de objetos em desuso. Pessoa pessoa1 = pessoa2.) pessoa1 public static void main(){ Pessoa pessoa1 = new Pessoa(). permitindo que esse espaço de memória seja re-alocado.. é possível sugerir ao JVM que execute a coleta de lixo.getRuntime() ou System. O programador não precisa se preocupar com aritmética de ponteiros (grande dificuldade em linguagens como C e Pascal.Curso Java Básico Gerenciamento de Memória O processo de garbage-collection ocorre automaticamente durante a execução de um programa Java.gc(). no entanto não haverá garantias de que todos os objetos não utilizados serão realmente removidos da memória. chamadas possíveis:Runtime. Exemplo 1 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Java Enterprise Edition (JavaEE). em três grandes edições.Curso Java Básico Plataforma Java A plataforma Java se divide http://www. Java Mobile Edition (JavaME). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .javafree.org/wiki/Java Java Standard Edition (JavaSE). gerador de documentação (javadoc). Java Runtime Edition (JRE): uma versão mais leve da JDK pois é preparada para o ambiente de execução. empacotador de componentes (jar). Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . notebooks e arquiteturas com poder de processamento e memória consideráveis. depurador. O J2SE possui duas divisões: Java Development Kit (JDK) ou Standard Development Kit (SDK): um conjunto para desenvolvimento em Java: compilador (javac). Várias APIs acompanham esta versão e tantas outras podem ser baixadas opcionalmente no site da Sun. É com elas que a maioria das aplicações são construídas e executadas.Curso Java Básico Plataforma Java Java Standard Edition (JavaSE) É a tecnologia Java para computadores pessoais. Curso Java Básico Plataforma Java Java Mobile Edition (JavaME) É a tecnologia Java para dispositivos móveis com limitações de memória ou processamento. São utilizadas para sistemas em celulares. O J2ME se divide em dois grupos de bibliotecas. pocket pcs. Connected Device Configuration (CDC): para Palmtops e Pocket pcs e alguns dispositívos mais poderosos. memória e processamento. É dividida em dois grupos: Connected Limited Device Configuration (CLDC): para celulares e smartphones. que são mais limitados. palm tops. Possui APIs bem simples e leves para economizar espaço. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . smartphones. javacards e demais dispositivos. integração de sistemas ou distribuição de serviços para terceiros. e oferece um conjunto completo de serviços para estes componentes. mas sim de uma especificação definida pela Sun. modulares e reusáveis. Possui um grande número de APIs onde a segurança é a principal preocupação. baseada em componentes padronizados. É ideal para a construção de servidores de aplicação.Curso Java Básico Plataforma Java Java Enterprise Edition (JavaEE) É a tecnologia Java para aplicações corporativas que podem estar na internet ou não. A plataforma Java EE não é um produto. Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . A Java EE simplifica as aplicações empresariais e multi-camadas. destacam-se: um editor de texto com facilidades especialmente desenhadas para a linguagem. para muitas linguagens um editor gráfico. um compilador e um interpretador. com facilidades para criação e edição da interface gráfica do programa a ser desenvolvido. Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . dentre elas o Java.Curso Java Básico O ambiente Eclipse O Eclipse é um ambiente de desenvolvimento integrado (IDE – Integrated Development Environment) Contém um conjunto de funcionalidades embutidas. interpretadas. cuja finalidade é prover um modo mais fácil e interativo de construir e manipular seus programas. Dentre essas funcionalidades. é importante ressaltar que o Eclipse é tido como “meta-ambiente de desenvolvimento de software”. um framework para integração de diferentes tipos de aplicação. Além das funcionalidades inerentes ao conceito de IDE. que possibilita um monitoramento mais elegante do funcionamento do seu programa. facilitando a detecção e remoção dos erros de lógica do código. um “ambiente para construção de ambientes”. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Em outras palavras. denominada debugger.Curso Java Básico O ambiente Eclipse uma ferramenta. cada workspace poderá ser utilizado por somente uma instância do Eclipse em execução no momento. Entretanto.Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse ao iniciar o Eclipse pela primeira vez. será solicitada a indicação de um diretório onde será armazenado o código a ser desenvolvido workspace. na janela de definição do workspace é possível definí-lo como o diretório padrão (default) onde os projetos a serem desenvolvidos por aquela instância do Eclipse serão armazenados. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . é possível existir mais de um workspace na mesma mídia de armazenamento. Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse após a definição do workspace. após fechá-la. será exibido o layout do ambiente sob a denominada perspectiva Java Perspective. será exibida uma janela de boasvindas(welcome). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Curso Java Básico O ambiente Eclipse Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . originalmente escrito para ser uma IDE versátil e possível de ser adaptada para qualquer propósito relacionado ao desenvolvimento de software.Curso Java Básico O ambiente Eclipse Funcionalidades do ambiente Eclipse o Eclipse destaca-se dentre as demais IDEs. trata-se de um programa open-source. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . desde a produção de plug-ins para ele mesmo e/ou outros programas. pelo fato de possuir a funcionalidade de customização do ambiente de trabalho. Esta adaptabilidade já começa pela estética do ambiente. passando pela integração de ferramentas ao ambiente Eclipse e culminando no desenvolvimento do software final em si. quaisquer possíveis imagens relacionadas ao projeto). ao longo do desenvolvimento do projeto. as configurações gerais do ambiente para o projeto. armazenando os arquivos-fonte (. eventuais arquivos de backup e outros arquivos inerentes ao escopo do programa (por exemplo.class). a navegação é semelhante à do Windows Explorer. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . os bytecodes (.Curso Java Básico O ambiente Eclipse Package Explorer (1) é um visualizador simples e elegante dos seus projetos. um projeto representa toda a estrutura do seu programa. com a qual ficaremos mais familiarizados com a prática.java). bastante intuitiva e respeitando a hierarquia do projeto. ilustradas nas situações seguintes.Curso Java Básico O ambiente Eclipse Editor de Textos (2) o editor de textos do Eclipse denota as palavras-chave de Java™ em letras destacadas para facilitar a leitura do código. possuindo um número expressivo de facilidades. esta é uma das funcionalidades mais utilizadas nesta ferramenta. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . como podemos na definição abaixo: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico O ambiente Eclipse Editor de Textos (2) Função Autocompletar Suponha que estejamos escrevendo o método “transferir” de uma classe Conta este método é composto de uma chamada ao método “debitar” e outra chamada ao método “creditar”. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . como ilustra a imagem abaixo. e a medida em que escrevermos as letras. quando digitarmos o nome de alguma variável que denote um objeto e o ponto para chamada de método. o editor de textos do Eclipse nos mostrará uma janela com uma relação completa de todos os métodos e atributos que este objeto pode acessar em seu contexto. ele filtrará tudo o que puder ir sendo descartado.Curso Java Básico O ambiente Eclipse Editor de Textos (2) durante a implementação deste método. ele sublinha o trecho e errado e marca as linhas que apresentam problema de sintaxe no lado direito da janela: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . o editor de textos do Eclipse.Curso Java Básico O ambiente Eclipse Editor de Textos (2) Detecção de erros de sintaxe uma grande funcionalidade das principais IDEs atuais é a detecção de erros de compilação em tempo de implementação. imediatamente destaca o trecho que ele supõe estar errado. ao perceber um erro de sintaxe (e até alguns poucos erros de lógica). além de indicar as possíveis causas do erro e sugerir algumas soluções. como podemos ver na figura seguinte. Curso Java Básico O ambiente Eclipse Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . no lado esquerdo da janela. facilitando a visualização do arquivo e sua navegação. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . o editor do eclipse nos poupa bastante tempo de pesquisa em documentação de classes nas APIs das mesmas com um recurso muito simples e interessante. A figura seguinte exemplifica essa funcionalidade. Podemos clicar nos triângulos azuis para exibir/esconder trechos entre chaves. Por último. em azul.Curso Java Básico O ambiente Eclipse Editor de Textos (2) Indicação de Escopo de Blocos de Código O editor também separa os trechos de código contido entre chaves. Ao mantermos o mouse por cima de nomes de classe ou métodos. uma caixa de texto aparecerá na tela com toda a documentação da classe / método em questão. Curso Java Básico O ambiente Eclipse Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . java frequentemente a sua classe. sendo que voltada para a estrutura interna do seu arquivo . Outline (4) a janela Outline funciona semelhantemente ao Package Explorer.Curso Java Básico O ambiente Eclipse Console (3) o Eclipse oferece um terminal de console para a entrada de dados do teclado pela stream de entrada padrão e a saída de dados que o programa escreve na stream de saída padrão. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . existem ícones diferentes para cada parte do arquivo. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . um wizard de criação de projetos aparecerá.Curso Java Básico O ambiente Eclipse Criando um projeto primeiramente clique em File > New > Project. A seguinte tela irá aparecer: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . clique em Next.Curso Java Básico O ambiente Eclipse Criando um projeto em seguida. selecione a opção Java > Java Project. clique em Next. marque também a opção “Create separate source and output folders” na caixa “Project Layout”. especifique o diretório onde o projeto será ser armazenado. se você quiser criar o projeto em um diretório diferente do workspace: marque a opção "Create project at external location". Essa opção permite que você não misture os arquivos que contém o código-fonte(source) com os arquivos gerados pelo compilador(output ou saída) . criando pastas diferentes para cada um desses tipos de arquivos. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico O ambiente Eclipse Criando um projeto digite um nome para o seu projeto. para deixar os valores default clique em Finish. Se aparecer.Curso Java Básico O ambiente Eclipse Criando um projeto agora você terá a oportunidade de escolher os diretórios do source e de saída. possívelmente aparecerá uma janela pedindo para confirmar uma mudança de perspectiva. clique em "Yes". Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . ou então altere os valores de acordo com sua conveniência. para criar uma classe. seu projeto já está criado. clique em File > New > Class a seguinte tela aparecerá: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . mas ainda não possui nenhuma classe.Curso Java Básico O ambiente Eclipse Criando uma classe agora. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . no campo Modifiers e nos campos abaixo de “Which method stubs would you like to create?” escolha "public static void main(String[] args)" – o método principal já será defido na classe. etc. selecione o nome da sua classe no campo "Name". opcionalmente você pode pré-determinar os modificadores de acesso da sua classe e deixar prontos os esqueletos de alguns métodos.como campos obrigatórios. a sugestão de usar inicial maiúscula para nomes de classes.java. determine de que projeto sua classe fará parte e a localização do arquivo .Curso Java Básico O ambiente Eclipse Criando uma classe a parte superior da janela dá algumas indicações sobre o preenchimento . em "Source Folder". Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . sua classe será criada e aparecerá como a imagem seguinte.Curso Java Básico O ambiente Eclipse Criando uma classe clique em Finish. a seguinte janela surgirá: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico O ambiente Eclipse Utilização de bibliotecas para adicionar uma biblioteca externa ao projeto: clique com o botão direito sobre a pasta do projeto no Package Explorer. selecione a opção Properties. A parte da direita mudará para mostrar o que está na figura. o último menos usado). selecione a opção Java Build Path (como está selecionado na figura). clique no botão Add External JARs (Java ARchives ou. extra-oficialmente. Provavelmente você poderá ver a biblioteca JRE System Library. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Exemplo 2 Título da Apresentação . Java Application Resources. por último. selecione o caminho da biblioteca a ser adicionada e clique em Open. e que praticamente todo projeto Java deve utilizar. para adicionar mais bibliotecas. selecione a aba Libraries para visualizar as bibliotecas utilizadas pelo seu projeto. que é a biblioteca padrão que vem com o JDK instalado na sua máquina.Curso Java Básico O ambiente Eclipse Utilização de bibliotecas no menu da esquerda. Variáveis. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Características da linguagem Todos os programas Java possuem quatro elementos básicos: Pacotes. Métodos. Classes. no entanto. classes com o mesmo nome em pacotes diferentes podem ser diferenciadas pelo nome completo. pacote.Curso Java Básico Características da linguagem Pacotes as classes que compõem o núcleo de funcionalidades Java estão organizadas em pacotes. um package Java é um mecanismo para agrupar classes de finalidades afins ou de uma mesma aplicação. além de facilitar a organização conceitual das classes.classe. ou seja. a principal funcionalidade de um pacote Java é evitar a explosão do espaço de nome. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . o mecanismo de pacotes permite localizar cada classe necessária durante a execução da aplicação. Usamos a declaração import para acessar essas classes.util. java. Um package é uma coleção de classes e interfaces relacionadas fornecendo proteção de acesso e gerenciamento de nomes de diretórios.lang.Curso Java Básico Características da linguagem Entre os principais pacotes oferecidos como parte do núcleo Java estão: java. será necessário colocar o caminho da classe a cada acesso. Se a declaração import não for utilizada e desejarmos utilizar alguma classe externa. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . java. Pacotes contêm classes e duas outras entidades de Java que veremos posteriormente: exceções e interfaces.net. java.io. Esse é o motivo porque não precisamos colocar explicitamente as classes que escrevemos em um pacote.Curso Java Básico Características da linguagem Exemplo: import java.lang. O asterisco no final diz ao compilador para importar todas as classes do pacote java. Esse é um dos vários pacotes incluídos na API.*. Para colocarmos uma classe em um pacote.lang. O compilador Java define implicitamente um pacote para as classes no diretório atual e o importa implicitamente. Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . deve-se inserir a diretiva package com o nome do pacote no início da classe. Java possui um formato básico para a escrita de códigos.Curso Java Básico Características da linguagem Estrutura de um código Java Como todas linguagem de programação. Tal formato é demonstrado abaixo: 1 // Duas barras significam comentário 2 /* comentários também podem seguir o formato de C++ */ 3 4 public class NomeDoPrograma 5 { 6 // O método main indica que o código Java pode ser executado 7 static public void main(String[] args) 8 { 9 // aqui virão os comandos 10 } 11 } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . pois Java permite linhas em branco entre os comandos.Curso Java Básico Características da linguagem Compreendendo o código Java linhas 1 e 2: representam comentários. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Um comentário pode conter qualquer informação relevante ao comportamento do programa. etc. O arquivo que contém o código Java deve ser salvo com o mesmo nome que aparece após a declaração public class e mais a extensão . linha 4: é a declaração do "nome do programa". que é case-sensitive (existe diferença entre maiúsculas e minúsculas).java). linha 3: está em branco. autor. versão.java (o exemplo acima deveria ser salvo como NomeDoPrograma. linha 8: essa linha indica à Java Virtual Machine que o programa será executado. linhas 10 e 11: o fechamento de chave } indica fim de bloco. linha 9: aqui seria escrito o código propriamente dito.Curso Java Básico Características da linguagem Compreendendo o código Java linhas 5 e 8: a abertura de chave { indica início de bloco. Os demais programas não conterão o método main(). o interpretador da JVM executa os comandos que estiverem dentro do bloco indicado pelo método "static public void main(String)". Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Quando um programa Java é executado. 1.out. compilação e execução de um programa Java.Crie o arquivo HelloWorld.artigo. sem o uso de uma IDE. utilizando apenas os programas da JSDK.br/java. } } Configurar variáveis de ambiente – referência artigo http://www.guj.12.Curso Java Básico Características da linguagem Compilando e Executando a seguir.guj Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .com.println("Hello World!").1. apresentaremos um exemplo de criação.java em um diretório qualquer com o seguinte conteúdo: public class HelloWorld { public static void main (String args[]) { System.tutorial. class Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Java 3.Chame o compilador Java para este arquivo: $ javac HelloWorld.Seu diretório deve ter recebido um novo arquivo após essa compilação: HelloWorld.Curso Java Básico Características da linguagem Compilando e Executando 2 . Curso Java Básico Características da linguagem Compilando e Executando 4 .Chame o interpretador Java para este arquivo (omita a extensão .Observe o resultado na tela: Hello World! Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .class do arquivo): $ j ava HelloWorld 5. // e pode estar no final da linha em bloco: /* */ Comentário em bloco Aceita múltiplas linhas Não utilize comentários aninhados Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . int valor. Os comentários em Java podem ser por linha ou em bloco: por linha: // isto é um comentário e inicia com duas barras.Curso Java Básico Estrutura da linguagem Comentários Qualquer informação especificada entre os caracteres de comentário será ignorada pelo compilador. não podem ocorrer dentro de strings ou literais. as notações /* e */ não tem significado dentro dos comentários //. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . a notação // não tem significado dentro dos comentários /* e /**.Curso Java Básico Estrutura da linguagem Comentários As regras que tratam dos comentários em Java são: comentários não podem ser aninhados. Curso Java Básico Estrutura da linguagem Comentários javadoc É tipo especial de comentário. /** isto é um comentário para geração de javadoc */ Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . utilizado para gerar documentação da API do código Java. parâmetros e métodos. ou um sinal de dólar "$". Podem possuir números após o primeiro caractere da palavra. Os identificadores em Java iniciam com: uma letra. atributos de classe ou de instância.Curso Java Básico Estrutura da linguagem Identificadores Identificadores são usados para determinar nomes de variáveis. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . um sublinhado (_ ). Pela premissa de ser case-sensitive existe uma diferenciação entre letras maiúsculas e minúsculas. Curso Java Básico Estrutura da linguagem Convenções para Identificadores na linguagem Java é utilizada a seguinte convenção para formação de identificadores: constantes com todas as letras em maiúsculo: CONSTANTE variáveis e métodos começam com letra minúscula: variável classes e interfaces começam com letra maiúscula: Classe se o identificador for um nome composto por mais de uma palavra. cada nova palavra começa com letra maiúscula: exemplo: variávelComNomeComposto Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . os tipos Array e String não são tipos primitivos. são Classes e serão tratados a seguir.Curso Java Básico Estrutura da linguagem Tipos Primitivos no Java. todos os objetos necessitam ter seu tipo especificado. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . um é o caractere e o outro é o booleano. existem 8 tipos primitivos em Java. seis deles são numéricos. esses valores são os mesmos para qualquer plataforma de hardware. Tipo int short byte long Tamanho 4 bytes 2 bytes 1 byte 8 bytes Faixa de Valores -2.854. não se pode esquecer que como Java é portável. Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .648 até 2.223.647 -32.036.147.767 -128 até 127 -9.036.373.807 na maioria das ocasiões.223.808 até 9.775.483.854. o tipo int é suficiente.775.Curso Java Básico Estrutura da linguagem Tipos Numéricos Inteiros os tipos inteiros guardam valores numéricos sem parte fracionária.147.372.768 até 32.483. da Apresentação Título . (3. pois sua precisão é maior. ele é considerado double.40282347E+38F (aproximandamente 7 dígitos significativos) +/.04F).Curso Java Básico Estrutura da linguagem Tipos Numéricos de Ponto Flutuante os tipos primitivos que representam valores numéricos com ponto flutuante: Tipo float Tamanho 4 bytes Faixa de Valores +/.79769313486231570E+308 (15 dígitos significativos) double 8 bytes normalmente utilizamos o double na maioria das situações onde é necessária a representação desse tipo de número. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha se o número aparecer sem o F.3.1. números do tipo float aparecem com um sufixo F. Curso Java Básico Estrutura da linguagem Tipo caractere O tipo char serve para representar apenas uma letra ou número. O tipo char é sempre representado por aspas simples (‘h’). Caracteres representados por aspas duplas (“h”) na verdade são Strings. Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais. Tipo char Tamanho 2 bytes Faixa de Valores 0 até 65536 Esse tipo serve para representar caracteres usando a tabela Unicode. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Tipo boolean Tamanho 1 bit Faixa de Valores true ou false Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Esse tipo é usado apenas para testes lógicos. true ou false.Curso Java Básico Estrutura da linguagem Tipo booleano o tipo booleano pode assumir apenas dois valores. 0 0. Tipo byte short int long float double boolean char Valor 0 0 0 0 0. sendo que não é necessário inicializar as variáveis com esses valores.0 false \u0000 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Valores Padrão abaixo segue uma lista com os valores padrões de todos os tipos primitivos. a máquina virtual cuidará desse trabalho. //uma string vazia Concatenação de Strings String uniao = “use o sinal de + para ” + “concatenar Strings”. Exemplo: String str = “Isto é uma String do Java”. incluída no pacote java. a representação de um String é feita por um conjunto de caracteres entre aspas. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Exemplo 3 Título da Apresentação .Curso Java Básico Estrutura da linguagem String String é uma classe que manipula cadeias de caracteres. String str = “”. possui métodos para essas manipulações.util. String a classe java. um valor positivo se outraString vier antes e 0 (zero) caso forem iguais boolean endsWith(String sufixo) retorna true se a string terminar com sufixo Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .lang.Curso Java Básico Estrutura da linguagem Métodos da Classe java. abaixo apresentamos os mais significativos: charAt(int indice) retorna o caractere na posição especificada int compareTo(String outraString) retorna um valor negativo se a string vier antes de outraString na ordem do dicionário.String possui muitos métodos.lang. String boolean equals(String outra) retorna true se a string for igual à outra boolean equalsIgnoreCase(String outra) retorna true se a string for igual à outra. ignorando maiúsculas e minúsculas String toLowerCase() retorna uma nova string convertendo maiúsculas para minúsculas Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Estrutura da linguagem Métodos da Classe java.lang. lang.String String toUpperCase() retorna uma nova string convertendo minúsculas para maiúsculas String trim() elimina espaços iniciais e finais Exemplos 4 e 5 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Métodos da Classe java. tabulação..” Deitel&Deitel Tokens são separados entre si por delimitadores (espaços em branco. nova linha e retorno de carro). sua mente divide a frase em palavras individuais ou tokens.Curso Java Básico Estrutura da linguagem StringTokenizer “Quando você lê uma frase. Pertence ao pacote java.util. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. Exemplo 6 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem StringTokenizer Há três construtores possíveis: o construtor que aceita um argumento String. a versão que aceita três argumentos. utilizará o string delimitador padrão “\n\t\r”. aquele que aceita dois argumentos String: o segundo String é o String delimitador. o segundo String é o string delimitador e o terceiro argumento (um boolean) determina se os delimitadores também são retornados como tokens (somente se o argumento for true). todos os itens de um array devem ser do mesmo tipo em tempo de compilação. o código para declarar o array é: int nums[10]. arrays são tipos indexados de dados que permitem a representação de agrupamento de dados como vetores e matrizes. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Array um array tipo de dados utilizado para armazenar um grupo de informações semelhantes. dizem ao compilador que nums é um array. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . o construtor é do tipo int e pode conter cinco elementos. o operador new instancia o array e chama o construtor para cada elemento.. pense em cada elemento do array como um objeto distinto. um int. por exemplo. o código para criar e inicializar o array é: int nums[ ] = new int [5]. o tipo mais simples de array é um array de dimensão de um tipo primitivo.Curso Java Básico Estrutura da linguagem Array arrays são inicializados com o uso do operador new. os colchetes depois do identificador nums. a seguir. durante a instanciação.Curso Java Básico Estrutura da linguagem Array arrays podem ser multimensionais. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . exemplos de como criar um array bidimensional: int [ ][ ] numlist = new int [2][]. int lista[ ][ ] = new int[5][5]. um array multidimensional deve ter pelo menos uma de suas dimensões especificadas. 3). (2. colocando-se os valores inicias desejados entre chaves {}. (3. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . 3. (5.4). 5}. 2. não é necessário especificar o tamanho – Java irá inicializar o array com o número de elementos especificados. int nums[ ][ ] = {(1. 4. (4.5)}.1).2).Curso Java Básico Estrutura da linguagem Array arrays podem ser inicializados na hora da criação. Exemplo: int nums[ ] = {1. ponto flutuante ou booleano.Curso Java Básico Estrutura da linguagem Array os arrays podem ser indexados por um valor byte. se precisar usar um desses tipos deve-se fazer uma conversão explícita. Exemplo 7 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . short. int ou char. não se pode indexar arrays com um valor long. os arrays são indexados de zero até o comprimento do array menos um. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Operador de Atribuição a atribuição é feita através do operador “=”: <identificador> = <valor>. Exemplos: (após declaração da variável) idade = 18. existe = true.5. char caracter = ‘i’. Exemplos: (na declaração da variável) float umFloat = 0. 5 * salario 100/42 57%5 Exemplo 8 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Operador + * / % Nome Adição Subtração Multiplicação Divisão Módulo Exemplo 23+29 29-23 0.Curso Java Básico Estrutura da linguagem Operadores Aritméticos operadores aritméticos são aqueles que efetuam operações aritméticas em um ou mais tipos primitivos. Operador == != < > >= <= Nome Igual Diferente Menor Maior Maior ou igual Menor ou igual Exemplo 10 == 10 3 != 2 4 < 10 10 > 6 3 >= 3 5 <= 6 Exemplo 9 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . utilizados em testes e condições de entrada em um fluxo do programa.Curso Java Básico Estrutura da linguagem Operadores Relacionais os operadores relacionais utilizados para formar expressões condicionais. assim como os relacionais. utilizados em testes e condições de entrada em um fluxo do programa. Operador && || ! ^ ?: Nome AND OR NOT XOR Condicional Exemplo (0 < 2) && ( 10 > 5) ( 10 >11 ) || (10 < 12 ) !( 1= = 4 ) ( 1!= 0) ^ ( 3< 2 ) 3>2? (comando): (comando) Exemplo 10 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . são utilizados para formar expressões condicionais.Curso Java Básico Estrutura da linguagem Operadores Lógicos os operadores lógicos. Exemplos: a += b.Curso Java Básico Estrutura da linguagem Atribuição Composta para facilitar a programação. Java oferece um tipo de atribuição chamada atribuição composta. que pode ser formada com operadores aritméticos ou lógicos. a *= 3. // Equivalente a: a = a + b. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . // Equivalente a: a = a * 3. Curso Java Básico Estrutura da linguagem Incremento e Decremento o incremento é dado pelo operador ++ e o decremento pelo operador --. o operador após a variável. faz com que o valor da variável seja utilizado primeiro e o incremento ou decremento seja feito depois. Exemplos: i++. i = i -1. será realizado o incremento ou decremento e depois o valor da variável será utilizado. --i. este decremento ou incremento pode ser feito antes ou depois da utilização da variável. ao contrário (var++). Exemplo 11 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. colocando–se antes (++var). //Equivalente a: //Equivalente a: i = i +1. isto é.Curso Java Básico Estrutura da linguagem Precedência dos Operadores a tabela abaixo apresenta os operadores em ordem decrescente de precedência. o que está mais acima ocorre antes: ++ -.! + <> <= >= == != ^ && || = *= /= %= += -= Título da Apresentação * / % Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Comandos de Fluxo a maioria dos programas tomam decisões que afetam seu fluxo. as declarações que tomam essas decisões são chamadas de comandos de controle de fluxo. condicionalmente.”).Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão if. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Sintaxe: if (condição) {bloco de comandos} [else {bloco de comandos} ] Exemplo: if ( fim == true ) System.else executa.. else System...out. um bloco de comandos..println(“Continuando.println(“Término!”). dependendo do valor de uma expressão.out. println(“Término!”). Exemplo: if ( fim == true ){ cont = 0. delimitados por { }. } else { cont = cont +1.. System. } Exemplo 12 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão if... System.”).println(“Continuando..out. utiliza-se o conceito de blocos.out.else para mais de um comando ser executado depois da declaração. . a expressão 1 é executada. sintaxe: (expressão lógica) ? expressão 1 : expressão 2. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . a expressão 2 é executada. ele é o único operador ternário do Java.else é a utilização do operador condicional “?:”.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão Operador Condicional ?: uma alternativa para o comando if. caso a expressão booleana retorne um valor verdadeiro (true). caso retorne um valor falso (false).. mas se a variável salário for maior ou igual a que 1000. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . a variável total recebera o valor da variável salário menos a variável desconto.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão Operador Condicional ?: Exemplo: int total = (salario < 1000) ? salario : salario – desconto. no exemplo acima. se a variável salario for menor que 1000. é atribuído o valor de salario a variável total. dependendo de uma expressão inteira. um byte. a ordem em que as cláusulas aparecem é importante. de vários grupos de comandos. o valor resultante da expressão inteira é comparado com cada um dos itens constantes nas cláusulas case. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . não é permitido outro tipo primitivo ou objeto. visto que a comparação é feita seqüencialmente. switch executa um. a expressão de comparação do switch deve ser um char.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch a instrução switch é utilizada quando precisamos selecionar uma ação dentro de um número de possibilidades. um short ou um int. uma cláusula opcional default pode aparecer no final do comando. .] } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . [default: comandos.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch sintaxe: switch ( expressão_teste ) { [case expressão constante 1: comandos] .. out. case 7: System. default: System.println(“Hoje é domingo”).out.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão switch Exemplo: switch ( diaSemana ){ case 1: System.. case 2: System.println(“Hoje é segunda-feira”).out. break.println(“Hoje é terça-feira ”).println(“Opção inválida!”). break. } Exemplo 13 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. .out. break. é a mais simples das estruturas de repetição (ou loop). } Exemplo 14 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . onde a expressão de comparação é avaliada antes que o laço seja executado. i--. } Exemplo: while ( i != 0 ){ salario = salario * 0. Sintaxe: while (expressão booleana) { bloco de comandos.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão while executa um bloco de comandos enquanto uma condição for verdadeira. utilizada quando não se quer que o corpo do laço seja necessariamente executado.5. . a expressão de comparação é avaliada depois que o laço for executado. utilizada quando se quer que o corpo do laço seja necessariamente executado. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha ..while executa um bloco de comandos enquanto uma condição for verdadeira.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão do. . Exemplo 15 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. } while ( i != 0 ).while Sintaxe: do { bloco de comandos. i--.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão do. } while (expressão booleana).5. Exemplo: do { salario = salario * 0. i < 20. i ++) salario = salario * 0. Sintaxe: for (inicialização. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . } Exemplo: for (i = 0. fornece uma expressão para inicializar as variáveis. a declaração pode ser um comando simples ou um bloco de comandos.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for repete um grupo de comandos em um número específico de vezes. incremento) { bloco de comandos. terminação.5. seguida por uma expressão de comparação e depois um lugar para incrementar ou decrementar as variáveis de laço. o incremento também pode ser vazio. a terminação também pode ser vazio. a seção de terminação é uma expressão lógica que é verificada no início de cada uma das iterações do laço. a seção de incremento é uma expressão (ou expressões separadas por vírgula) que é executada em cada iteração do laço. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . não é obrigatório que essa expressão esteja relacionada com o controle do laço.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for a seção de inicialização é executada uma única vez. caso onde precisaríamos de uma instrução break para sair do laço. a inicialização pode ser vazia se a variável da condição já tiver sido inicializada antes do laço. quando se entra no laço. 4. o java ampliou a utilização do comando for.. que veremos adiante) a cada iteração um valor do conjunto é passado para a variável x e executado o bloco de instruções. Exemplo 16 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . int[] mat = { 3.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão for na versão 5..println( x ). } o laço estendido cria a variável de controle interna para percorrer um conjunto (vetor ou Coleções. 5. for( int x:mat ) { System. 6 }. agora com sintaxe simplifica e normalmente chamado de "for estendido" Exemplo: .out. out. i++.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão break o comando break desvia o fluxo de execução de um programa para o fim de um laço ou de uma instrução switch. Exemplo: int i = 0. utilizada para sair de um laço antes do normal. while (true) { System. if ( i > 10 ) break. o laço irá encerrar independentemente de seu valor de comparação e a declaração após o laço será executada.println(i). } Exemplo 17 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . println(1/i). i++) { if ( i == 0 ) continue.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão continue o comando continue desvia o fluxo de execução de um laço para o próxima iteração. abandonando a iteração em que se encontra. i<10. Exemplo: for (int i = -10. } Exemplo 18 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .out. System. Sintaxe: return valor.Curso Java Básico Estrutura da linguagem Comandos de Fluxo: Comandos de Decisão return comando utilizado para transferir controle entre métodos. i < n-1. return result. for ( int i = 0. } Exemplo } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação 19 . int n){ int result = base. i ++ ) result = result * base. retorna informações de métodos. exemplo: class Teste{ public int Potencia ( int base. encerrando a execução e retornando para o local de onde o método foi chamado. Uma aplicação Java sempre terá a seguinte estrutura: class NomedaClasse { // Atributos // Métodos public static void main( String args[] ) { //corpo principal do programa } } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Classes em Java O desenvolvimento de aplicações Java sempre é feito através de classes. A declaração do método main deve ser: public static void main( String args[] ) ou public static void main(String. O método main é o método chamado pelo interpretador Java quando executado.Curso Java Básico Classes em Java Uma aplicação em Java é caracterizada por possuir o método main(). sem retorno (void). args) (desde 1. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação ..5) define um método de acesso público (public).. que recebe como parâmetro um array de strings de tamanho indefinido representado pela variável args (onde são passados os argumentos da linha de comando para a aplicação) a única alteração que pode ser feita é no nome do array (args). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Classes em Java Classes e Objetos classe é uma descrição de algo existente no domínio do problema (aplicação). é usada na criação de múltiplos objetos. um objeto é uma instância particular de um tipo de dado específico (classe). é a descrição dos dados (atributos) e do comportamento (métodos) de um objeto. objeto é uma instância de uma classe. instanciar um objeto é criar seu espaço de memória e repassar um ponteiro para ele. passando parâmetros quando necessário. a esta interação entre objetos chama-se troca de mensagens. Exemplo 20 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Classes em Java Classes e Objetos quando um objeto é criado ele precisa ser inicializado. um objeto “chama” os métodos de outro. precisa ser carregado com a referência (o endereço) de um espaço de memória alocado para o seu armazenamento para uma única classe podemos ter vários objetos durante a execução de um programa. a interação entre objetos é feita através de mensagens. em um programa orientado a objetos temos muitos objetos se relacionando entre si. BECO). Os dados de cada um de seus endereços são: tipo de logradouro (AVENIDA. CNPJ e nome do dono. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Os dados da empresa são: Nome. NÚMERO e CEP. RUA.Curso Java Básico Classes em Java Classes e Objetos – Exercício 1 Implemente o relacionamento "uma empresa possui vários endereços" (um de cada filial). Um método de uma classe tem a seguinte estrutura genérica: <visibilidade> <static> <tipo_retorno> <nome_método> (<parâmetros>) { // corpo ou escopo do método } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Classes em Java Métodos Um método descreve o comportamento de uma classe. podendo ser: public – o método poderá ser acessado por qualquer classe.o método só poderá ser acessado dentro da mesma classe. protected – o método só poderá ser acessado por classes do mesmo pacote ou por subclasses (veremos isto em herança). Modificador utilizado por default.modificador que define se o método é de classe (com static) ou de instância (sem static). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . private . default (package) – o método só poderá ser acessado dentro da própria classe ou por classes do mesmo pacote.Curso Java Básico Classes em Java Métodos <visibilidade> . Métodos de classe podem ser chamado sem a especificação de um objeto.é o modificador de acesso para o método. caso não seja especificado. <static> . que significa que o método não retorna valor algum. caso o método não receba argumentos. cada argumento indicará um pedaço da informação que deve ser passada ao método no momento de sua chamada. eles devem ser separados por vírgulas. qualquer objeto ou o tipo void.declaração do tipo de retorno do método. também chamados parâmetros. (<parâmetros>) um método pode ter zero ou mais argumentos. que pode ser qualquer um dos tipos primitivos. os parênteses devem ser deixados vazios. quando houver mais de um argumento.Curso Java Básico Classes em Java Métodos <tipo_retorno> . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Com objetos o efeito é diferente. já que o valor passado no parâmetro do método é a referência para o objeto. Exemplo 21 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Classes em Java Métodos Em Java todos os argumentos são passados por valor. ou seja. Se o parâmetro for uma variável de tipo primitivo o valor da variável é passada no parâmetro e pode ser alterada dentro do método que não será refletido na variável externa. Não existe passagem por referência. o objeto externo também será alterado. se um objeto for alterado dentro do método. que permite a passagem de um número variável de argumentos a um método. metodo( 1. No caso dos exemplos abaixo.. 2. 3 ). metodo( 1 ). void metodo( int.out.... Dentro do método os argumentos variáveis são tratados como arrays do tipo que foi definido.. args ) { for( int i : args ) { System. } } . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .. um array de int (int[ ]) ou de String.Curso Java Básico Classes em Java Métodos No Java 5 foi introduzido o conceito de varargs.println( i ). Exemplo: . a passagem de parâmetros com tipo diferente dos parâmetros recebidos (assinatura do método) gera erro de sintaxe. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . um método não pode ser definido dentro de outro método. métodos devem ter sua função bem definida. Algumas regras aplicadas aos métodos: Exemplo 22 métodos retornam. um valor. o corpo do método tem de ter um comando return. se o tipo de retorno do método não for void. para promover a reutilização de código.Curso Java Básico Classes em Java Métodos Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar arrays com valores e passar aos métodos. podendo ser uma variável ou um objeto. no máximo. sendo este passado como parâmetro para o método. declare dois método para impressão dos dados de um objeto empresa. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Cada um dos métodos realiza a impressão em uma forma distinta de saída: pelo console e por meio de uma caixa de mensagem.Curso Java Básico Classes em Java Métodos – Exercício 2 A partir das classes criadas no Exercício 1. . } . String valor2) { idade = valor1.. } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Classes em Java Sobrecarga Métodos Exemplo: public class Empregado { .. } public void defineCampo(int valor1. public void defineCampo(int valor) { idade = valor.. nome = valo2. } public void defineCampo(String valor) { nome = valor. emp..Curso Java Básico Classes em Java Sobrecarga Métodos Na hora da chamada de um dos métodos. Exemplo 23 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . . Empregado emp = new Empregado().defineCampo(20). o compilador Java escolhe o método correto baseado nos parâmetros fornecidos...defineCampo(“Maria”).. Exemplo: . emp. Curso Java Básico Classes em Java Sobrecarga Métodos – Exercício 3 Crie uma classe que sobrecarregue um método que retorna o triplo de um número. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . sendo este um inteiro(int) ou um número fracionário (double ou float). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Classes em Java Variáveis Variáveis são usadas em linguagens em geral para armazenar valores. atribuição de referências (endereços para valores) é feita através de operações de construção de objetos e. 3}. String s = "abcde". 2. Não são tipos primitivos. Valores são passados para variáveis através de operações de atribuição atribuição de valores é feita através de literais Ex: int intQuantidadeAlunos = 14. em dois casos. int[] v = {1. s e v são referências. pode ser feita através de literais Ex: Conta contaClientePreferencial = new Conta(). se declarados static). etc).Curso Java Básico Classes em Java Escopo de Variáveis Atributos de dados (declarados no bloco da classe): podem ser usados em qualquer lugar (qualquer bloco) da classe uso em outras classes depende de modificadores de acesso (public. Variáveis locais (declaradas dentro de blocos de procedimentos) existem enquanto o procedimento (método. public. private. existem enquanto o objeto existir( ou enquanto a classe existir. bloco de controle de execução) estiver sendo executado. não pode ter modificadores de acesso (private. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . não pode ser usado fora do bloco. etc). Curso Java Básico Classes em Java Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Classes em Java Atributos modificadores tipo nome private static String numero. double saldo. Private int numEstoque = 8. private static final double LIMMITE_MAXIMO. Atributos private só podem ser acessados (lidos. torna o atributo constante. Atributos final. Se um atributo não tem modificador de acesso associado então ele é considerado “friendly”. alterados) dentro da própria classe onde foi declarado. alterados) por objetos de qualquer classe.Curso Java Básico Classes em Java Atributos – Modificadores de Acesso Atributos public podem ser acessados (lidos. Atributos protected podem ser acessados (lidos ou alterados) de qualquer classe dentro do mesmo pacote ou qualquer sub-classe. Atributo static: variáveis de classe vs variáveis de objeto Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Atributo não pode ser alterado depois de inicializado. Só é visível para objetos de classes dentro do mesmo pacote. } public static void main(){ Conta a = new Conta(100.00). Conta b = new Conta(200. String strCpf.Curso Java Básico Classes em Java Atributos de Objeto class Conta { String strNome. double dblSaldoMinimo.00). public Conta(double dblValorSaldoMinimo){ dblSaldoMinimo = dblValorSaldoMinimo. } } Não utiliza o modificador static Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . double dblSaldo. } } … new Banco().Curso Java Básico Classes em Java Atributos de Classe class Conta{ String strNome. … Uso do modificador static Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . String strCpf. static double dblSaldoMinimo. double dblSaldo. Conta d = new Conta(). } class Banco { public Banco(){ Conta c = new Conta(). Curso Java Básico Classes em Java Métodos construtores Métodos construtores são métodos especiais definidos com o mesmo nome da classe. Os métodos construtores servem para inicializar as variáveis de instância de seus objetos e não possuem nenhum valor de retorno. Construtores são chamados automaticamente toda vez que um objeto da classe é criado. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . nome = valor2. String nome = new String. sem parâmetros public Empregado() { } // Construtor para classe receber um inteiro e um String public Empregado(int valor1. String valor2) { int idade = valor1. } .Curso Java Básico Classes em Java Métodos construtores Exemplo: // Classe com dois construtores public class Enmpregado{ // Construtor padrão.. } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .. e que só será chamado se nenhum construtor for definido. que não faz nada nem recebe parâmetros. mas com parâmetros diferentes diz-se que houve um sobrecarga de métodos.Curso Java Básico Classes em Java Métodos construtores Toda e qualquer classe do Java possui um construtor padrão. Exemplo 24 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Quando uma classe possui mais de um método com o mesmo. Neste último caso. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . de forma que: Seja possível criar um objeto do tipo Empresa. faça as modificações necessárias para que os atributos sejam inicializados de forma que as strings sejam inicializadas com a senteça “Campo não informado". já inicializando os atributos de um objeto desse tipo ou sem inicializar qualquer um desses atributos com valores especificados.Curso Java Básico Classes em Java Métodos construtores – Exercício 4 Altere o Exercício 2. Curso Java Básico Classes em Java Referência this Os métodos de instância de uma classe Java possuem um parâmetro implícito que se refere ao objeto atual sobre o qual o método foi chamado. Exemplo 25 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . e é utilizado quando é necessário enviar a própria referência do objeto para uma rotina. Este parâmetro é referenciado pela palavra chave this. só podem ser instanciadas dentro da própria classe ou por classes do mesmo pacote. class NomeClasse Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . public class NomeClasse default (pacote) Classes sem modificador de acesso explícito.Curso Java Básico Classes em Java Modificadores de Classe Modificadores de acesso public Classes public podem ser instanciadas por qualquer objeto livremente. denomiado default. public final class NomeClasse abstract Classes abstract são classes que não permitem que um objeto as instancie. serve para definir superclasses genéricas. public abstract class NomeClasse Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .Curso Java Básico Classes em Java Modificadores de classe Outros Modificadores final Classes final são classes que não permitem que você crie subclasses por herança delas. ou seja. superclasse é também chamada de classe pai.Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança Herança é a possibilidade de criar objetos a partir de outros já existentes. classe descendente ou classe filha. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Uma subclasse é uma especialização da sua superclasse. Subclasse é também chamada de classe derivada. Herança é uma característica da programação orientada a objetos que permite que classes herdem e estendam as funcionalidades e as características de outras classes. estende a classe java.Object. Todos os métodos e atributos (public e protected) são herdados pela subclasse. por padrão.Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança Em Java. uma classe só pode estender uma e somente uma outra classe. A palavra reservada super identifica métodos e atributos da superclasse. a herança é obtida através da palavra reservada extends seguida do nome da classe que está sendo estendida. Através da herança cria-se uma hierarquia de classes. Os construtores não são herdados. Em Java não é permitida herança múltipla. isto é.lang. Toda classe. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Primata { public Primata() { // método construtor } String nomeCientifico; public void setNomeCientifico(String nomeCientifico) { ... } } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Humano extends Primata{ public Humano() { // método construtor } String nome; int idade; int numeroIdentidade; public void setNome(String nome) { ... } public void setIdade(int idade) { ... } Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public void setNumeroIdentidade(int numeroIdentidade) { ... } ... } public class Homem extends Humano { public Homem() { // método construtor } String certMilitar; public void setCertMilitar(String certMilitar) { ... } ... } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação } No exemplo acima... Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Exemplo 26 Título da Apresentação . superclasse da classe Homem.Curso Java Básico Classes em Java Herança e Polimorfismo Conceitos Básicos de Herança public class Mulher extends Humano { public Mulher() {// método construtor } . a classe Homem (subclasse de Humano) possui todos os atributos e métodos da classe Humano (sua superclasse) e os atributos da classe Primata. o método da superclasse fica escondido da subclasse podendo ser executado com a referência super.Curso Java Básico Classes em Java Sobrescrita de Métodos Uma classe derivada (subclasse) recebe. Com o sobrescrita. sobrescrevendo-o. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . todos os métodos definidos na classe pai. Esta funcionalidade permite que uma classe derivada altere um comportamento de um método herdado. um método com a mesma assinatura (mesmos argumentos e tipo de retorno) de uma classe ascendente (classe pai em qualquer nível de herança). através do mecanismo de herança. na classe derivada. Sobrescrever um método consiste em definir. mesmos parâmetros e mesmo tipo de retorno.Curso Java Básico Classes em Java Sobrescrita de Métodos Atenção para não confundir os conceitos de sobrescrita de métodos e sobrecarga de métodos. mas com parâmetros diferentes. na sobrecarga tem-se métodos dentro da mesma classe que possuem o mesmo nome. Exemplo 27 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . na sobrescrita tem-se métodos de classes da mesma hierarquia de derivação com o mesmo nome. FormaBidimensional e as classes que herdam desta.Curso Java Básico Classes em Java Sobrescrita de Métodos – Exercício 5 Implemente a seguinte hierarquia: As Classes Forma. onde X é o nome da classe. Inclua na definição de cada método a impressão da senteça “Calculando a área/volume da forma X”. onde X é o nome da classe. cada FormaTridimensional deve ter métodos sobrescritos obterArea e obterVolume para calcular a área da base e a superfície. da forma tridimensional. respectivamente. Inclua na definição de cada método a impressão da senteça “Calculando a área da forma X”. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . têm um método sobrescrito para obter a área da forma correspondente. De forma similar. Java.Curso Java Básico Classes em Java Polimorfismo Um objeto polimórfico é um objeto que pode ter formas diferentes. uma classe. funcionalidades diferentes mas continua a pertencer a uma única classe. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . o compilador Java considera que o objeto atribuído a essa referência será do tipo declarado e não do tipo usado para criar o objeto. e a deteminação do comportamento do objeto (métodos a serem executados) será determinada em tempo de execução. permite que um objeto seja referido com uma variável que é do tipo de uma classe ascendeste (superclasses) . Isto é possível porque quando criamos uma referência a um tipo abstrato de dados. dependendo do tipo de objeto instanciado. Curso Java Básico Classes em Java Polimorfismo Exemplo: class Forma { public void desenhar() { System.println("Círculo").out. } } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação .out.println("Forma"). } } class Circulo extends Forma { public void desenhar() { System. desenha(formas). new Forma().Curso Java Básico Classes em Java Polimorfismo public class ExemploPolimorfismo { private static void desenha(Forma[] fs) { for (int i = 0. } } Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . i++) fs[i]. } public static void main(String[] args) { Forma[] formas = new Forma[] { new Circulo().desenhar(). new Triangulo() }. i < fs. new Quadrado().length. Curso Java Básico Classes em Java O operador instanceof O operador instanceof é um mecanismo para determinar. se a classe de um objeto referenciado por uma variável é compatível com um determinado tipo de referência conhecido. em tempo de execução. a sintaxe do operador instanceof é a seguinte: variávelDoTipoReferencia instanceof NomeDaClasseConhecida. Exemplo 28 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . a saída será: objForma é compatível com o tipo Forma objCirculo é compatível com o tipo Forma objCirculo é compatível com o tipo Circulo objQuadrado é compatível com o tipo Forma objQuadrado é compatível com o tipo Quadrado Observe que o operador instanceof identifica a compatibilidade de tipos no que se refere ao mesmo tipo do objeto referenciado (compatibilidade identificada quando comparado o objCirculo com a classe Circulo. por exemplo) e na herança de classes e interfaces (compatibilidade identificada quando comparado o objCirculo com a classe Forma.Curso Java Básico Classes em Java O operador instanceof Ao executar o código do Exemplo 28. por exemplo). supertipo de Circulo. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Uma interface não possui atributos de instância nem métodos com implementação. Para criar uma interface utilizamos a palavra reservada interface. já que assim serão considerados por estar em uma interface. mas pode possuir atributos de estáticos (finais de classe) e cabeçalhos de métodos (métodos abstratos) que deverão ser desenvolvidos nas classes que implementarão a interface. Uma interface é semelhante a uma classe. e descreve um aspecto de comportamento que várias classes podem possuir.Curso Java Básico Classes em Java Interfaces Interfaces foram concebidas para criar um modelo de implementação de baixo acoplamento entre determinadas partes de um software. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Seus métodos não precisam ser declarados public abstratct. char sexo. } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . String ed. end = ed. idade = id. public Pessoa ( String nm. String end. int id ){ nome = nm. int idade. sexo = sx. char sx.Curso Java Básico Classes em Java Interfaces public class Pessoa { String nome. . int cod_curso ) { . } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . } public interface Aluno { boolean CadastrarAluno( int num_matricula.Curso Java Básico Classes em Java Interfaces public String AlterarCadastro ( ) { .. } class Universitario extends Pessoa implements Aluno { public boolean CadastrarAluno( int num_matricula.. int cod_curso ).. void InserirNotas( int num_matricula ).. . Exemplo 29 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . visto que não há limite para quantidade de classes em implementação. usa-se a palavra-chave implements seguida do nome da interface.Curso Java Básico Classes em Java Interfaces public void InserirNotas( int num_matricula ){ . ou interfaces.. } } Para implementar uma interface. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Definir a data da atualização realizada. Obter a data da última alteração (não se preocupe com formatação dessa informação). Atualizar o saldo atual da conta. Verificar validação do número de algarismos do CPF do proprietário da conta (se tem 11 algarismos). Obter nome do proprietário da conta. Obter CPF do proprietário da conta.Curso Java Básico Classes em Java Interfaces – Exercício 6 Crie uma interface Conta e declare nesta os métodos necessários para realizar as seguintes operações comuns a um tipo qualquer de conta: Obter o saldo atual da conta. Definir CPF do proprietário da conta. Definir o nome do proprietario da conta. Na classe que representa a conta poupança acrescente um atributo e dois métodos para obtenção e atualização da taxa de reajuste (valor fracionário). de forma que ambas as classes implementem a interface Conta. com 100 posições cada. Acrescente um método para listagem de todos os dados do banco. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . para incluir dados de contas correntes e contas poupança dos clientes com conta no banco. Acrescente na classe conta corrente um atributo e dois métodos para obtenção e atualização da informação sobre o número de cheques emitidos. CNPJ e dois arranjos. Crie uma classe Banco de forma que sejam possam ser armazenados e recuperados os seguintes dados: Nome do Banco. criada anteriormente.Curso Java Básico Classes em Java Interfaces – Exercício 6 (continuação) Crie ainda duas classes (concretas) para representa uma Conta Corrente e uma Conta Poupança. modificadores de acesso e as demais classes da API apresentadas para representar o seguinte diagrama de classes: Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Exercício Completo 1 Utilize os conceitos de herança. Curso Java Básico Exercício Completo 1 . UF deve corresponder a um dos seguintes valores: BA. 002. Denegada ou Inutilizada. SP. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Cancelada. o código do medicamento deve atender a seguinte expressão regular {001. Imprima na tela um objeto do tipo NFeMedicamento e outro NFeArmamento em formato XML . Em caso de dúvida. MG.continuação Adicione à sua solução uma classe de Validação e declare nesta os seguintes métodos: a chave de acesso deve conter 14 caracteres. 003}01. o campo Situação deve conter um dos seguintes valores: Autorizada. GO ou RJ.Veja o exemplo 2 com o uso da biblioteca Xstream. consulte a API. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . Exemplo: int y = 10. Existem duas maneiras de fazer conversões de tipos: conversão implícita: quando o tamanho de uma variável é maior que o tamanho da variável ou o valor que está sendo atribuído.Curso Java Básico Conversão e Cast Conversões entre Tipos Primitivos de Dados A linguagem Java não suporta atribuições arbitrárias entre variáveis de tipos diferentes. long x = y. entre parênteses: (int). Para sinalizar um casting coloca-se o nome do tipo para o qual se quer converter entre parênteses. utilizamos um mecanismo chamado de casting. portanto necessita indicar uma conversão. Outra forma é usar as constantes de identificação de tipos para fazer uma conversão explícita. ocorreria um erro de compilação indicando tipos incompatíveis. esta indicativa é feita pelo tipo da variável. como em: long y = 10L. Se esta informação não for colocada. Exemplo: long y = 10L. que irá receber o valor. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação . o tamanho de long é maior que o de int.Curso Java Básico Conversão e Cast Conversões entre Tipos Primitivos de Dados conversão explícita: é necessária quando o tamanho de uma variável é menor que o tamanho da variável ou o valor que está sendo atribuído. int x = (int) y. Para um processo de conversão explícito. P C. P C. P C. P C X X int A A C. P X boolean X X X X X X X A – Conversão automática C – Utilizar cast explícito P – Perda de magnitude ou precisão X – Java não permite conversão Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . P C. P C. P C X long A A A C. P C.Curso Java Básico Conversão e Cast Conversões entre Tipos Primitivos de Dados Tipo Original byte short int long float double char boolean Tipo Destino byte short A C. P C X float A A A C. P C. P C. P C. P C. P C. P C. P C. P C. P C. P C. P C X double A A A C A C X char C C C. . Esta é a forma implícita. toda classe filha pode ser associada a uma declaração de classe ou interface pai.. No exemplo.. . pois não necessita de nenhum recurso para ser efetuado.Curso Java Básico Conversão e Cast Conversões entre Objetos O cast ou a conversão de objetos em java é realizada de duas maneiras. de acordo com a conversão de tipos primitivos: implícito e explícito. o objeto da classe Filho é declarado como uma instância da classe Pai. como no exemplo abaixo: Exemplo: . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .. Primeiramente. Pai objeto = new Filho(). Curso Java Básico Conversão e Cast Conversões entre Objetos O inverso deste caso ocorre quando tem-se um objeto pai e sabe-se que ele é uma instância de determinada classe Filho. Esta forma é a explícita, pois é necessário informar ao compilador, qual a classe que deseja-se fazer o cast. Exemplo: ... Pai objeto = new Filho(); Filho objFilho = (Filho)objeto; ... No exemplo, o objeto é declarado como sendo instância da classe Pai, mas é criado uma instância da classe Filho. Na linha seguinte, é associado a uma variável declarada como Filho o valor do objeto, que foi declarado como Pai mas é possível saber que ele é um Filho. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação Curso Java Básico Conversão e Cast Classes Wrappers Também conhecidas como “classes de embrulhamento”; Utilizadas, em especial, para conversão de tipo ou empacotamento em si de um valor em um objeto; Pertencentes ao pacote java.lang; Principais classes wrappers: Integer; Double; Float; Boolean. Conversão de String para Inteiro, Double etc e vice-versa; Exemplo 30 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Pacotes java.util e java.lang Pacote java.lang O pacote java.lang contém as classes que constituem recursos básicos da linguagem, necessários à execução de qualquer programa Java. Entre as classes desse pacote destacam-se: Object é a classe base do Java, que serve de superclasse para todas as classes existentes em Java. toda classe é subclasse de Object, e com isso herda alguns métodos automaticamente. ela possui métodos como wait( ), notify( ) e notifyAll( ), que suportam controle de threads, além dos métodos equals(), toString() e getClass(). Class e ClassLoader representa classes Java e o mecanismo para carregá-las dinamicamente (veremos um exemplo de uso quando virmos conexão com banco de dados); Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Pacotes java.util e java.lang Pacote java.lang Math Classe que possui um conjunto de métodos e 2 constantes para suportar computação matemática; A classe é final e não pode ser estendida; O construtor é private, portanto não pode ser instanciado; Constantes: Math.PI e Math.E Possui método para cálculo de: valor absoluto, arredondamento para cima e para baixo, comparação do maior e menor valor, número aleatório, arredondamento, seno, coseno, tangente e raiz quadrada. Boolean, Character, Byte, Short, Integer, Long, Float, Double São classes wrappers, e todos tipo primitivo em Java possui uma classe wrapper, encapsulando o tipo primitivo e permitindo a manipulação de seus valores como se fossem objetos; Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação Curso Java Básico Pacotes java.util e java.lang Pacote java.lang System, Runtime e Process São classes que permitem interação da aplicação com o ambiente de execução; Thread, Runnable, ThreadGroup São classes que dão suporte à execução de threads, múltiplas linhas de execução; Throwable, Error e Exception São classes que permitem a definição e manipulação de situações de erros e condições inesperadas de execução, tais como OutOfMemoryError, ArithmeticException (por exemplo, divisão inteira por zero) e ArrayIndexOutOfBoundsException (acesso a elemento do array além da última posição ou antes da primeira posição). Título da Apresentação Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Pacotes java.util e java.lang Pacote java.lang String Classe que guarda uma String imutável e possui diversos métodos para manipular a String. StringBuffer Classe que representa uma String que pode ser modificado dinamicamente. É ideal para manipular grande quantidades de textos. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Título da Apresentação internacionalização e classes de outras utilidades. Ela define métodos para adicionar itens. Entre as classes desse pacote destacam-se: Collections Collection é a interface base de todas as classes que implementam uma coleção. remover itens.util contém classes do framework de collections.Curso Java Básico Pacotes java.util e java. transformar para array. hora. limpar a coleção.util O pacote java. iterar pelos itens. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . data. modelo de eventos. ver o tamanho e etc.lang Pacote java. a capacidade é o espaço que foi reservado para o array. pois ele recebe um Object como argumento. A qualquer momento dado. ou seja. ele sincroniza o acesso de processos concorrentes. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Exemplo 31 .Curso Java Básico Pacotes java.lang Pacote java. O Vector pode armazenar diferentes tipos de objetos ao mesmo tempo. O Vector é sincronizado. Pode ser acessado por um índice.util Vector Classe que representa um array dimensionável.util e java. se você não especificar um incremento de capacidade. o sistema dobrará automaticamente o tamanho do Vector toda vez que capacidade adicional for necessária. Vector contém um certo número de elementos que é menor que ou igual à sua capacidade. porém não sincronizada. não permitindo valores null.lang Pacote java. mais rápida. Para recuperar um valor. List Interface implementada pelas classes Vector.util ArrayList Classe similar à classe Vector. busca-se pelo seu nome (chave). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . estas coleções poderão ser acessadas pelo métodos comuns da interface List. LinkedList e outras. ArrayList. Pode-se obter um Enumeration com todas as chaves da coleção. Com isto. portanto. Hashtable Classe que guarda valores com chave e valor.Curso Java Básico Pacotes java.util e java. lang Pacote java.util Properties Classe que implementa uma coleção de propriedades.util e java. pelo caracter separador. Cada chave da propriedade te seu valor. único. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Esta classe estende a classe Hashtable. do tipo chave e valor. Os dados pode ser escritos ou lidos de uma Stream.Curso Java Básico Pacotes java. StringTokenizer Classe que permite quebrar uma String em tokens (palavras). lang Pacote java. Exemplo 32 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .util e java. e oferece métodos e funcionalidades para manipular datas no formato do calendário gregoriano.util. GregorianCalendar Classe que implementa a classe java.util Date Classe que representa um instante de tempo específico. medido em milisegundos.Curso Java Básico Pacotes java.Calendar. a partir do dia 01/Jan/1970. Curso Java Básico Coleções Java possui o Java Collection Framework que possui várias interfaces e implementações para o tratamento de Coleções e Mapas . Uma Coleção é um conjunto de objetos agrupados e pode ser implementada de duas formas: como um conjunto (Set): que não permite duplicatas. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . sendo um deles usado como chave de acesso. Um Mapa (Map) é um conjunto de estruturas de pares de objetos. ou como uma lista (List): que permite duplicatas. no caso de números do menor para o maior e no caso de String a ordem é lexicográfica. A classe HashSet não possui nenhuma ordem específica enquanto a classe TreeSet cria uma ordem. que pode ser implementado como instância das classes HashSet (tabela Hash) ou TreeSet (árvore) Não é necessário especificar a posição para adicionar um elemento. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Coleções Coleções: Set Set é uma interface de Collection. } } O exemplo acima resulta em [Joao.println(c).add("Joao"). Maria. Ana]. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .add("Ana").add("Maria"). já que Hashset não permite repetição e não é ordenado.Curso Java Básico Coleções Coleções: Set Exemplo: public class ExemploHashSet { public static void main(String[] args) { Collection c = new HashSet(). c. c. c.out.add("Jose"). Jose. System. c.add("Joao"). c. contains() .adiciona um elemento ou um conjunto de elementos.Curso Java Básico Coleções Coleções: Set Principais métodos de Set: add() . remove() . isEmpty() .Retorna true se o conjunto estiver vazio.Retorna true se o conjunto possuir algum elemento.remove um elemento ou um conjunto de elementos. Exemplo 33 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Curso Java Básico Coleções Coleções: List A interface List é uma extensão de Collection que acrescenta ao agrupamento o conceito de indexação. tais como ArrayList (array) e LinkedList (lista encadeada). informação sobre a posição do elemento em relação aos demais membros do grupo. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . ou seja. A API de Java oferece algumas implementações básicas para esta interface. add("Jose"). Jose]. Joao. } } O exemplo acima resulta em Ana e [Maria. c.add("Joao").println(c. System.add("Ana"). Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .out.get(2)). c. Joao. Ana.out.iterator().add("Joao"). System.add("Maria").Curso Java Básico Coleções Coleções: List Exemplo: public class ExemploArrayList { public static void main(String[] args) { List c = new ArrayList(). c. Iterator i = c. c. c.println(c). remove um elemento ou um conjunto de elementos da lista. indexOf() .adiciona um elemento ou um conjunto de elementos da lista.Curso Java Básico Coleções Coleções: List Os principais métodos de List são: add() .obtem uma sublista contendo os elementos compreendidos entre dois elementos especificados.para obter a posição da primeira ocorrência do elemento especificado. get() – obtem o elemento armazenado na posição especificada. subList() . Exemplo 34 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . remove() . Curso Java Básico Coleções Coleções: Map Exemplo: public class ExemploTreeMap { public static void main(String[] args) { Map c = new HashMap(); c.put(new Integer(1),"Maria"); c.put(new Integer(3),"Joao"); c.put(new Integer(2),"Ana"); c.put(new Integer(5),"Joao"); c.put(new Integer(4),"Jose"); System.out.println(c); } } O exemplo acima resulta em {1=Maria, 2=Ana, 3=Joao, 4=Jose, 5=Joao} . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Coleções Coleções: Map Entre outros, os seguintes métodos são oferecidos: put(), que associa um novo objeto valor ao objeto chave especificado; get(), que retorna o objeto valor associado ao objeto chave especificado; containsKey(), que indica se a chave especificada está presente na coleção; size(), que retorna a quantidade de elementos (pares chave-valor) na coleção. Se deseja-se que esse grupo de pares de objetos seja mantido por ordem dos valores das chaves, a interface mais especializada SortedMap pode ser utilizada, desde que os objetos usados como chave sejam comparáveis. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Curso Java Básico Coleções Coleções: Map Além das funcionalidades acima, esta interface acrescenta a especificação de métodos tais como: firstKey() para retornar o elemento da coleção com a chave de menor valor. lastKey() para retornar o elemento da coleção com a chave de maior valor. subMap() para obter o subconjunto dos elementos compreendidos entre as chaves especificadas. Exemplo 35 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha Se for uma conta poupança. qual o fator de reajuste. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . altere o tipo que define o conjunto de contas (dois arranjos distintos de 100 posições para armazenar cada um contas correntes e contas poupança). Utilize o operador instanceof para fazer um teste prévio da natureza do objeto constante em cada posição da coleção. para obter informações adicionais de acordo com o tipo de conta: Se a conta for uma conta corrente. para ser uma única coleção de contas.Curso Java Básico Coleções Coleções: Exercício 7 A partir das classes criadas no Exercício 6. obter o número de cheques emitidos. conciso e diminuir a ocorrência de erros de tempo de execução.Curso Java Básico Coleções Coleções: Generics Generics foi introduzido no Java 5. principalmente durante a manipulação de coleções de objetos (ClassCastException). para ajudar o desenvolvedor a escrever código mais claro. Com Generics podemos definir qual o tipo de dados vamos trabalhar com uma determinada coleção ou lista. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . esperando um tipo particular de objeto.Curso Java Básico Coleções Coleções: Generics Na manipulação de lista sem o uso de Generics. Todas as declarações de métodos genéricos têm uma seção de parâmetro de tipo (variável de tipo) delimitada por colchetes angulares (<e>) que precedem o tipo de retorno do método. se o objeto recuperado não for do tipo esperado. não mais em tempo de execução. podendo ocorrer um ClassCastException. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . e a verificação de tipos é feita em tempo de compilação. Com Generics este problema é eliminado. evitando problemas futuros. adicionamos qualquer tipo de objetos na lista e quando os recuperamos. add( new Integer(1) ). // erro Integer i = l. l. Exemplo 36 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . List<Integer> l = new ArrayList<Integer>().0) ).. ....Curso Java Básico Coleções Coleções: Generics Exemplo: . l.add( new Double(2.get(1). Curso Java Básico Coleções Coleções: Exercício 8 Utilizando o conceito de Generics. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . crie classe que declare um método genérico para comparação de objetos. passando como parâmetro objetos distintos. Teste o método genérico criado. como classes wrappers e strings. e deve.Curso Java Básico Tratamento de Exceções Conceitos Básicos Uma exceção é um evento ou valor ilegal. Por exemplo. porém previsto na modelagem de um sistema. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . essa exceção pode. ser previsto na implementação desse programa. quando criamos um programa que pede ao usuário a digitação de um valor inteiro e esse usuário digita um valor fracionário. Entretanto. dizemos que o valor digitado pelo usuário irá gerar uma exceção. Os erros são sinalizados pelo sistema operacional no qual a máquina virtual Java está rodando. não tratado e que. aborta o sistema. na maioria das vezes. a máquina virtual não permite o acesso de um código Java à origem de um erro. enquanto o erro é algo inesperado. geralmente. tornando a tentativa de tratamento dos erros impossível. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . Ou seja.Curso Java Básico Tratamento de Exceções Diferença entre exceções e erros A diferença entre exceção e erro é que uma exceção é prevista pelo programador durante a implementação de um sistema. o trecho de código onde essa falha ocorreu pode gerar uma exceção.Curso Java Básico Tratamento de Exceções Quando uma falha ocorre na execução de um programa. Gerar uma exceção é a sinalização ao processo ativo na máquina virtual de que alguma falha ocorreu. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . O tratamento de exceções em Java visa um código mais tolerante a falhas. catch e finally. suprindo o programador de recursos que garantam o desenvolvimento de códigos robustos. Esses comandos são usados em conjunto. Esse processo então pode "capturar" a execução do programa e. Existem três comandos básicos que permitem esse tratamento de exceções: try. tornar a execução do código novamente válido dentro do comportamento previsto para esse programa. quando possível. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . O código contido dentro de um bloco try é chamado de código protegido. Quando o programador sabe que um determinado conjunto de instruções pode gerar algum tipo de exceção. ele agrega esses comandos dentro de um bloco try.Curso Java Básico Tratamento de Exceções Try É o bloco de comandos que são passíveis de gerarem uma exceção. O bloco catch é opcional. se os comandos do bloco try gerarem uma exceção então os comandos do bloco catch serão executados no lugar deles. mas normalmente é implementado junto a um bloco try. ou seja. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Tratamento de Exceções Catch É o bloco de comandos alternativos ao try. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Tratamento de Exceções Finally É um comando utilizado para delimitar um grupo de instruções que será sempre executada ao final de um bloco try-catch. independente de qual dos blocos anteriores foi processado pela máquina virtual. então executa os comandos do bloco catch.Curso Java Básico Tratamento de Exceções A lógica dos blocos descritos é simples: 1. Tenta executar os comandos do bloco try 2. e o programador deve ter o cuidado de garantir que o bloco catch não irá gerar uma exceção. Um bloco de comandos catch sempre deve seguir um bloco de comandos try. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . os comandos do bloco finally serão executados. 3. Se os comandos do try geraram uma exceção. Independente das exceções geradas na execução dos blocos try ou catch. out. } catch(ArrayIndexOutOfBoundsException erro) { // Se houver algum erro no bloco anterior. } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . // esse comando será executado System.println("aluno inexistente").println(alunos[indice]).Curso Java Básico Tratamento de Exceções Exemplo: public void relatorio(int indice) { // Tratamento de exceções try { // Tenta executar esse comando System.out. Curso Java Básico Tratamento de Exceções Exemplo (continuação): catch(Exception erro) { // Pode-se usar um catch para cada tipo de erro // possível no bloco try System.println("exceção inesperada").out.println("executou finally"). } } Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . } finally { // Esse comando será executado sempre System.out. exceções cujo tratamento será feito pelo programa que chamar esse método. uma técnica muito utilizada é a declaração de métodos com exceções pendentes. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . ou o lançamento de exceções. esse método deve deixar claro o tipo de ação que deve ser tomada para contornar essa exceção. Existem duas formas de fazer isso: um bloco try-catch. deixando o seu tratamento para fora do trecho de código que gerou a exceção.Curso Java Básico Tratamento de Exceções Tratamento pendente de exceções Caso um método possa gerar uma exceção. ou seja. Para não misturar o tratamento de exceções com a lógica de um programa. essa pendência do tratamento de uma exceção é definida pela palavra reservada throws: A palavra throws é seguida pela lista de exceções que podem ocorrer na execução do código do método.. Esse método só poderá ser chamado de dentro de um bloco try-catch. pois a pendência deverá ser tratada no código que está chamando esse método.Curso Java Básico Tratamento de Exceções Tratamento pendente de exceções Em Java. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . } A vantagem do tratamento de exceções pendentes é que o código dos métodos fica restrito à lógica do programa. Exemplo: public void relatorio(int indice) throws ArrayIndexOutOfBoundsException{ . Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . é possível implementar outras classes estendidas de Throwable ou de uma de suas subclasses. Essas subclasses implementadas pelo programador serão igualmente exceções.Curso Java Básico Tratamento de Exceções Exceções implementadas pelo programador Como as exceções em Java são instâncias de alguma subclasse de Throwable. } } Após compilarmos o código acima. poderemos usar a nova exceção normalmente em outros programas. Exemplos 37 e 38 Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha .Curso Java Básico Tratamento de Exceções Usamos a palavra reservada extends para implementarmos novas exceções: public class AlunoInexistente extends Exception { // Esse método sobrecarrega o método homônimo da classe // Exception public String getMessage() { return "indice do aluno não existe". Denegada ou Inutilizada. sendo gravada em uma string o problema ocorrido e este será utilizado para confecção da mensagem de exibição ao usuário. ao evidenciar falha.Curso Java Básico Exercício Completo 2 Adicione à sua solução para o Exercício Completo 1. O campo UF não corresponder a um dos seguintes valores: BA. Cancelada. SP. deverá ser levantada uma exceção de Conteúdo Inválido. O campo Situação não contém um dos seguintes valores: Autorizada. 002. O campo do código do medicamento não atende a seguinte expressão regular {001. GO ou RJ. Em todos estes casos. o tratamento de exceção para os seguintes casos: O campo chave de acesso não contém 14 caracteres. 003}01. Centro Federal de Educação Tecnológica de Minas Gerais – Campus Varginha . MG.