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