Java na Prática – Java e OO Célio Silva Aula 1 Java na Prática – Inicio Projeto Requisito Projeto Criar uma ferramenta para manipular cadastro clientes, contas, transações bancárias, etc.: Definição do Modelo de Dados Cliente Conta Agencia Transações ... GFT Group 6 April 2010 Page 2/XX Java na Prática – Apresentação IDE IDE – Integrated Development Environment – Ambiente Integrado de Desenvolvimento Criando o Projeto com NetBeans Configuração Projeto Netbeans Arquivos projeto – Pastas (Packages), Arquivos Fonte Bibliotecas – Libs, Jars GFT Group 6 April 2010 Page 3/XX Java na Prática – Console/Output e Inicialização Programa Inicialização Programa public static void main(String... args){ System.out.println("Hello world"); } Console/Output System.out.println(“minha mensagem”) System.err.println(“meu erro”) JOptionPane.showMessageDialog(null, “minha mensagem”) Object.toString() Criação de Pacotes/Packages Convenção nome (com.celiosilva.meuprojeto...) Organização em diretórios (c:\projeto\src\com\celiosilva\meuprojeto\...) package (package com.celiosilva.meuprojeto.meuPacote.Classe;) import (import java.util.Date;) GFT Group 6 April 2010 Page 4/XX Java na Prática – Comentários, Identificadores e Formatação Tipos de Comentários Linha // o conteúdo a frente destas barras está comentado Bloco /* o conteúdo entre estes símbolos está comentado */ JavaDoc /** * O conteúdo está comentado e pode ser usado pelo JavaDoc */ Identificadores – Variáveis, Métodos e Classes Identificadores podem começar com uma letra, _, ou caracter monetário ($) Após o primeiro caractere, os identificadores podem incluir digitos Identificadores podem ser de qualquer tamanho Padronização CamelCase Classes NomeClasse – Carro, ClienteFisico Método nomeMetodo – cadastrar, getNomeCliente Variáveis nomeVariavel – ativo, valorTotalTerritorio Constantes NOME_DA_CONSTANTE – TAMANHO_MAXIMO GFT Group 6 April 2010 Page 5/XX Java na Prática – Declaração de Classes Um arquivo fonte pode ter somente uma classe pública Se o arquivo fonte possui uma classe pública, o nome do arquivo deve ser exatamente o mesmo da classe pública. Um arquivo pode conter somente uma declaração do tipo package, mas múltiplos import; Se existir a sentença package esta deve ser a primeira linha no arquivo fonte As sentenças import devem vir após o package e antes da declaração da classe Se não houver qualquer sentença package as sentenças import devem ser as primeiras linhas no arquivo fonte As classes dentro de java.lang.* não precisam da instrução import As declarações de package e import se aplicam a todos os arquivos na classe Um arquivo pode conter uma ou mais classes default Classes que não são públicas não possuem nenhuma restrição para nomenclatura perante o arquivo Exercício Criar projeto e hierarquia de packages Criar classe Main e utilizar todos os tipos de saída. GFT Group 6 April 2010 Page 6/XX Java na Prática – Palavras Reservadas Palavras Reservadas Java é case-sensitive (variavel é diferente de VAriAveL) Todas as palavras reservadas possuem somente letras minúsculas const e goto não funcionam e geram erros de compilação Java possui 50 palavras reservadas sendo que duas delas geram erros de compilação GFT Group 6 April 2010 Page 7/XX Java na Prática – Tipos de Dados – Primitivos Primitivos Declaração int codigo; long cpf = 30556684800L; double valorRenda = 650.87d; char sexo = 'M'; Tipos byte, short, int, long, float, double, char; Tipo Bits Bytes byte 8 1 -128 short 16 2 -32768 - 2 elevado 15 32767 2 elevado 15 - 1 int 32 4 -2147483648 - 2 elevado 31 2147483647 2 elevado 31 - 1 long 64 8 -9,22337E+18 - 2 elevado 63 9,22337E+18 2 elevado 63 - 1 float 32 4 n/a n/a n/a n/a double 64 8 n/a n/a n/a n/a GFT Group Mínimo Máximo - 2 elevado 7 127 2 elevado 7 - 1 6 April 2010 Page 8/XX Java na Prática – Literais Primitivos Literais Integer podem ser decimal, octal ou hexadecimal 1234567890; 01234567; 0xCAFE; Literais para longs terminam em um L ou l 76375476176523498L; Literais float terminam em F ou f 871823481f; Literais double terminam em um digito ou D ou d 17887687612834871D; (não obrigatório) Literais booleanas terminam em true ou false Verdadeiro = false; Literais para char são caracteres únicos dentro de aspas simples 'a'; '\u0000'; Atribuição de valores entre diferentes tipos – Cast Implícito e Explícito GFT Group 6 April 2010 Page 9/XX Java na Prática – Escopo, Declaração e Inicialização Campos Valor Padrão Inicialização Primitivos byte = 0 short = 0 int = 0 long = 0 float = 0.0 double = 0.0 boolean = false char = '' ou '\u0000' Objetos null Escopo para Inicialização Variáveis de instância são inicializadas automaticamente Variáveis locais não são e não podem ser utilizadas sem inicialização GFT Group 6 April 2010 Page 10/XX Java na Prática – Tipos de Dados – Objetos Objetos Declaração Date dataAtual; Carro meuCarro = new Carro(); new ContaPoupança(); Tipos Infinito.. Representação padrão objetos Cliente@19821f toString(); GFT Group 6 April 2010 Page 11/XX Java na Prática – Tipos de Dados – Objetos Atributos/Dados/Estado Variáveis declaradas no escopo da classe Métodos/Funções/Comportamento Código que realiza uma operação terminam em () e possuem a implementação dentro de {} Aplicação Implementar a classe Termômetro Termometro descricao: String temperatura: int getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String GFT Group 6 April 2010 Page 12/XX Java na Prática – Tipos de Variáveis Tipos de variáveis Variáveis locais (automáticas/metodo/stack) Variáveis de referência (classe) Variáveis de instância (objeto) Variáveis final (imutáveis) GFT Group 6 April 2010 Page 13/XX Java na Prática – Tipos de Variáveis Variáveis locais (automáticas/metodo/stack) São variáveis dentro dos métodos, ou na declaração destes. Ficam no stack, não no java heap e somente podem ser utilizadas dentro do bloco que foram criadas. Variáveis de referência (classe) São variáveis que são identificadas pela classe. Não precisam de objetos para existirem e podem ser utilizadas através de: nomeDaClasse.nomeDaVariavel Variáveis de instância (objeto) São variáveis que existem somente se um objeto que as engloba existir. São utilizados através de: objetoInstanciado.variavel Variáveis final (imutáveis) São variáveis (de referência ou estância) cujo valor só pode ser atribuído uma vez (constantes) Identificadores podem começar com uma letra, _, ou caractere monetário ($) Após o primeiro caractere, os identificadores podem incluir dígitos Identificadores podem ser de qualquer tamanho GFT Group 6 April 2010 Page 14/XX Java na Prática – Tipos de Variáveis Aplicação Implementar constantes ao termômetro Aplicar validação de métodos para entrada de temperatura Termometro descricao: String temperatura: int TEMPERATURA_MAXIMA: int TEMPERATURA_MINIMA: int getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String GFT Group 6 April 2010 Page 15/XX Java na Prática – Console/Input – Entrada de Dados Entrada de Dados por Console Scanner - System.in; package com.celiosilva.jnp.termometro; import java.util.Scanner; /** * @author [email protected] */ public class EntradaDeDados { public static void main(String[] args){ Scanner leitorConsole = new Scanner(System.in); String valorLido = leitorConsole.next(); System.out.println("O valor lido foi:" + valorLido); } } GFT Group 6 April 2010 Page 16/XX Java na Prática – Console/Input – Entrada de Dados Aplicação Implementar entrada de dados para ler os valores do termômetro diretamente do console Termometro descricao: String temperatura: int TEMPERATURA_MAXIMA: int TEMPERATURA_MINIMA: int getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String lerTemperatura(): void GFT Group 6 April 2010 Page 17/XX Java na Prática – Membros de Classe Membros de Classe Variáveis de instância Métodos de instância Classes Internas (Inner class) de instância Escopo Membros de Classe default private protected public Membros se classificam por duas formas: Código em uma classe pode acessar um membro de outra classe Uma subclasse pode herdar um membro de sua superclasse Se uma classe não pode ser acessada, seus membros também não podem GFT Group 6 April 2010 Page 18/XX Java na Prática – Membros de Classe Membros de Classe Aplicar modificadores de acesso corretamente de acordo com diagrama de classe Verificar acesso de outras packages Termometro - descricao: String - temperatura: int + TEMPERATURA_MAXIMA: int + TEMPERATURA_MINIMA: int + + + + + + GFT Group getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String lerTemperatura(): void 6 April 2010 Page 19/XX Java na Prática – Operadores Aritméticos +, – , * , / , % , ++ , – – Comparativos == , != , < , > , <= , >= Lógicos && , || , ! , & , | Condicionais ?: Atribuição [operador]= Outros instanceof (cast) GFT Group 6 April 2010 Page 20/XX Java na Prática – Operadores Aplicação Implementar métodos de conversão para: Fahrenheit (°F = °C × 1,8 + 32) Kelvin (K = C° + 273,15) Termometro - descricao: String - temperatura: int + TEMPERATURA_MAXIMA: int + TEMPERATURA_MINIMA: int + + + + + + + + GFT Group getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String lerTemperatura(): void getTemperaturaEmFahrenheit(): double getTemperaturaEmKelvin(): float 6 April 2010 Page 21/XX Java na Prática – String String Declaração e teste String s = "celio"; String s2 = new String("celio"); new String(); String s3 = new String("outra string"); s3.toUpperCase(); s3.concat(s2); System.out.println(s3); s2 = s3.toUpperCase(); System.out.println(s3); System.out.println(s2); System.out.println(s == "celio"); System.out.println(s == new String("celio")); System.out.println(s.equals(new String("celio"))); Aplicação Resolver a saída das sentenças acima GFT Group 6 April 2010 Page 22/XX Java na Prática – String Strings são objetos imutáveis, mas as referências a eles não são Se você redirecionar uma referencia de uma String para uma nova String, a antiga estará perdida A classe String é final e seus métodos não pode ser sobrescritos Pool de literais String Principais Métodos charAt(); concat(); equalsIgnoreCase(); lenght(); replace(); substring(); toLowerCase(); toUpperCase(); trim(); GFT Group 6 April 2010 Page 23/XX Java na Prática – StringBuffer & StringBuilder StringBuffer e StringBuilder StringBuilder sb = new StringBuilder(); sb.append("celio batista da silva"); System.out.println(sb); sb.delete(1, 3); System.out.println(sb); System.out.println(sb.indexOf("silva")); sb.replace(5, 10, " teste "); System.out.println(sb); sb.reverse(); System.out.println(sb); GFT Group 6 April 2010 Page 24/XX Java na Prática – StringBuffer & StringBuilder Aplicação Modificar método toString() para exibir todas as medidas Termometro - descricao: String - temperatura: int + TEMPERATURA_MAXIMA: int + TEMPERATURA_MINIMA: int + + + + + + + + GFT Group getDescricao(): String getTemperatura(): int setDescricao(String desc): void setTemperatura(int temp): void toString(): String lerTemperatura(): void getTemperaturaEmFahrenheit(): double getTemperaturaEmKelvin(): float 6 April 2010 Page 25/XX Java na Prática – StringBuffer & StringBuilder StringBuffer é Synchonized StringBuilder não é StringBuilder executa com maior velocidade que StringBuffer StringBuilder foi adicionado no Java 5 Eles são objetos multáveis, muda-se o valor sem precisar criar um novo objeto O método equals() não é sobrescrito, ele não compara valores Métodos aninhados são executados da esquerda para a direita Principais Métodos StringBuffer/StringBuilder append() delete() insert() reverse() toString() GFT Group 6 April 2010 Page 26/XX Referências Bibliográficas: Certificação Sun para programador Java 5: guia de estudo (exame 310-055) / Kathy Sierra, Bert Bates Effective Java: Second Edition/First Edition / Joshua Bloch Sugestões, dicas ou reclamações: [email protected] Obrigado! GFT Group 6 April 2010 Page 27/XX GFT Technologies AG Av. São Francisco, 98 - STA Rosália, CEP 18095-450. [email protected] T +55 15 3332-0762 Célio Batista da Silva [email protected] © Copyright Célio Batista da Silva, 2010 GFT Group 6 April 2010 Page 28/XX