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
Download

Java na Prática – Java e OO