treinamento básico de java · •em java, existe apenas herança simples •todos os objetos em...

76
Treinamento Básico de Java Karen Frigo Busolin Março / 2010 1

Upload: buitu

Post on 09-Nov-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Treinamento Básico de Java Karen Frigo Busolin

Março / 2010

1

Page 2: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Java

Java não é somente uma linguagem de programação

orientada a objeto, mas também é um conjunto de

tecnologias que auxilia no desenvolvimento de

softwares de forma robusta e segura.

2

Page 3: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Características

• Independente de plataforma ▫ Programa é compilado em bytecode. Não é possível executar o

bytecode por ele mesmo, pois ele não é um código nativo,

sendo assim, para executá-lo é necessário uma JVM.

▫ A JVM é uma aplicação nativa que interpreta o bytecode.

3

Page 4: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Características (continuação)

• Fácil Utilização

▫ estilo simples

▫ construída à partir de conceitos de linguagem de programação moderna

▫ conceito de objetos

▫ possui rica API

• Segurança

▫ JVM é reponsável pela execução dos progamas

▫ manipulação automática da memória mais segura

▫ não é possível acessar a memória diretamente

4

Page 5: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Características (continuação)

• Escabilidade

▫ fácil adaptação com aumento de oportunidades

• Suporte

▫ comunidades, sites oficiais, sourceforge, fóruns, etc

▫ JDK sempre com atualizações

• Robusta

▫ atende suas expectativas

▫ realiza automaticamente o gerenciamento de memória, utiliza o garbage collector

▫ proporcinal um mecanismo de tratamento de exceções

• Multithread

▫ realizar mais de uma ação ao mesmo tempo

5

Page 6: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Definições

• JRE (Java Runtime Environment) ▫ Inclui JVM e core libraries

▫ Propósito: executar o bytecode

• JDK (Java SE Development Kit) ▫ Inclui JRE, compilador e outras ferramentas

▫ Propósito: compilar os programas Java

• API (Application Programming Interface) ▫ Java API é a coleção de softwares que provê as

funcionalidades para os programas.

▫ O software é agrupado em grupo de bibliotecas de

componentes que são relacionados, como gráficos, textos,

I/O, segurança, etc

6

Page 7: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Sub - Plataformas

• JSE (Java Platform, Standard Edition) ▫ J2SE é basicamente o JDK (núcleo da plataforma Java)

▫ Desenvolver programas client-server e desktop

• JEE (Java Platform, Enterprise Edition) ▫ É o J2SE voltado para desenvolvimento de aplicacções multi

camadas

▫ Algumas inovações foram incluidas suporte de web services e

ferramentas de desenvolvimentos (SDK)

• JME (Java Platform, Micro Edition) ▫ Proporciona um ambiente para aplicações móveis, como

celulares, PDAS, TVs

▫ J2ME inclui a JVM e algumas classes (limitadas)

7

Page 8: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Configuração Ambiente

• Instalar JDK

• Configuração da Variável de ambiente

JAVA_HOME e PATH

• Verifica versão java na máquina: java -version

• Utéis\Configurando variáveis de ambiente.docx

8

Page 9: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Fundamentos

• Dois modelos de tipos de dados: Tipos de valor (primitivos)

Tipos de referência (objetos)

• Passagem de parâmetros em Java é feita

APENAS por valor O valor de um primitivo é ele mesmo

O valor de uma referência é o endereço em que ele reside

9

Page 10: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Fundamentos (continuação)

• Em Java, uma variável deve: Ser declarada antes de ser usada

Ter um tipo definido

Iniciar o valor dela antes de começar a usá-la

Só pode ser usada dentro do escopo onde ela foi

declarada

• Variáveis/Herança: super: refere-se a superclasse imediata

this: refere-se a instância do objeto

• Retorno: void: define que um método não retorna nada

10

Page 11: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Tipos de Dados Primitivos

11

Tipo Bits Fórmula Faixa Descrição

byte 8 -2^7 à 2^7 -1 -128 ~ +127 Inteiro de 8 bits com sinal

short 16 -2^15 à 2^15 - 1 -32768 a +32767 Inteiro de 16 bits com sinal

int 32 -2^31 à 2^31-1 -2147483648 a +2147483647 Inteiro de 32 bits com sinal

long 64 -2^63 à 2^63-1 -9223372036854775808 a

+9223372036854775807 Inteiro de 64 bits com sinal

char 16 2 ^ 16 - 1 0 a 65535 Caracter Unicode (16 bits sem sinal)

float 32 Ponto flutuante de 32 bits com sinal

double 64 Ponto flutuante de 64 bits com sinal

boolean Valor indicando true ou false

Page 12: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Tipos de Dados Primitivos (continuação)

12

Page 13: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Orientação a Objetos (OO)

• Sistemas OO são: Mais fáceis de manter

Mais fáceis de entender

Mais fáceis de estender

Mais fáceis de reutilizar

• Logo, OO serve para: Aumentar a produtividade do programador

Aumentar a qualidade do software

Diminuir a complexidade

13

Page 14: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Classe

• É o tal componente responsável tanto pelo

encapsulamento de dados quanto pela

definição das operações do sistema

• Em outras palavras, é a abstração de

características e comportamentos de

entidades do mundo real

14

Page 15: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Objeto

• É uma mera instância válida de uma certa

classe.

• O Objeto terá seu própio estado e irá

acessar os comportamentos definidos pela

classe.

• Em Java, criamos objetos assim:

▫ MeuObjeto obj = new MeuObjeto();

15

Page 16: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

OO é basicamente baseada nos princípios

• Abstração

• Encapsulamento

• Herança

• Polimorfismo

16

Page 17: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Abstração

• Sua compreenção do problema, sem

restrições ou características técnicas

• É através da abstração que definimos

regras de negócio

17

Page 18: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Encapsulamento

• É quando a forma de como algo foi construído

ou como ele funciona não necessita ser

conhecida (caixa preta)

18

Page 19: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Herança • É a capacidade de herdar características de outra classe, a palavra

chave reservada utilizada é extends • Sub-classe é especialização da super-classe:

Cria-se uma relação do tipo “is-a”;

• Em Java, existe APENAS herança simples • Todos os objetos em Java são filhos de java.lang.Object • O que é “herdável”?

Membros (métodos e atributos) públicos ou protected; Mesmo comportamento;

• O que não é “herdável”? Membros privados; Construtores;

Para acessar, na sub-classe, a funcionalidade do construtor da super-classe, usa-se a palavra reservada super;

19

Page 20: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Polimorfismo

• É a habilidade de uma certa entidade se comportar de

maneiras diferentes em contextos diferentes

• Permite que um mesmo código de uma classe seja

usado por diferentes classes

• Permite que uma classe se comporte como outras

classes:

Há uma relação do tipo “is-like-a” entre as classes

• Resulta, de modo geral, em implementações mais

abstratas

20

Page 21: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Polimorfismo (continuação)

• Sobrescrita de Métodos

ocorre quando na classe filha, um método

existente na classe pai é redefinido, ou seja,

sobrescrito com o novo conjunto de código a ser

executado

• Sobrecarga de Métodos

É a escrita de diferentes métodos com o mesmo

nome, porém contendo quantidade ou tipo de

parâmetros diferente

21

Page 22: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Polimorfismo (continuação)

22

Page 23: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Polimorfismo (continuação)

23

Page 24: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Mais sobre Encapsulamento

• Nem sempre é bom dar livre acesso aos membros da sua classe:

Aumenta a dependência entre seus objetos Dificuldade de manutenção

• O ideal é que seus dados só possam ser acessados através de métodos;

Aumenta o seu controle sobre o que o usuário pode ou não fazer com seu objeto (get / set)

• Portanto, só oferecemos ao usuário o que é realmente do objeto

24

Page 25: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Mais sobre Encapsulamento (continuação)

25

• Exemplo get e set de bean e servico

Page 26: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Packages

• Define um conjunto coerente (isto é, com a

mesma finalidade) de componentes (classes,

interfaces, beans, brokers, serviços, factories,

etc.)

• Definido pela palavra reservada package java.util.*

meupacote

26

Page 27: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Modificadores de Acesso

27

private Define que um método ou variavel seja acessado somente pela própria classe

protected: Permite que uma subclasse acesse um membro da superclasse, mesmo estando em

pacotes diferentes

public Permite que um identificador possa ser acessado de qualquer outra classe.

null (default) Valor default. Permite qualquer classe que esteja no mesmo pacote acesse o

identificador

static Defina um identificador de classe e não de instância, ou seja, o método ou o

atributo pertencente a classe, e não ao objeto, dessa forma, não necessita de uma

instância para que possa ser acessado

final Faz com que um identificador não possa ser alterado

Se aplicado a um atributo, indica que o valor deste não pode ser alterado

(constantes)

Se aplicado a um método, indica que o método não pode ser sobrescrito por

classes filhas

Se aplicado a uma classe, indica que a classe não pode ser herdada por outra

classe

Page 28: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Operadores

++, --, +, -

=, +=, -=, *=, /= (Atribuição)

% (módulo)

== e !=

~, <<, >>, |, &, ^ (xor) (Binários)

||, &&, ! (Lógicos – booleanos)

(condição) ? value-if-true : value-if-false

28

Page 29: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Promoção aritmética

▫ Ocorre com as operações aritméticas entre

tipos primitivos numéricos diferentes

▫ O menor tipo é automaticamente

convertido para o maior tipo

▫ CASTING: “converte” o conteúdo de uma

variável para outro tipo: Ex: long lng = (long) doubleValue; // Lembre-se

que existirá perda de precisão neste exemplo.

Ex: PessoaFisicaBean pessoaFisica =

(PessoaFisicaBean) pessoa

29

Page 30: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Conversão entre tipos

• nunca poderá convertar um tipo de maior

valor (bits) em um número de menos valor

automaticamente

30

Page 31: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Controle de fluxo

• Condicional

if (condição) { true-commands } else { false-

commands }

switch(int) {

case 1: commands; break;

case 2: commands;

case 3: commands; break;

default: commands;

}

31

Page 32: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Controle de fluxo (continuação)

• Comandos de repetição

while(condição) { commands }

for (início; condição; incremento)

{ commands }

do { commands } while(condição)

break / continue

32

Page 33: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

• O método main é a chave para a JVM executar uma aplicação em

Java

Estrutura

33

Nome de classe

Função que escreve mensagem

Função main() pode ser criada em

qualquer classe!

Page 34: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Estrutura (continuação)

34

• Válido ▫ public static void main(String[] args) { ... }

▫ static public void main(String[] args) { ... }

▫ public static void main(String[] a) { ... }

▫ public static void main(String [] a) { ... }

▫ public static void main(String a[]) { ... }

▫ public static void main(String a []) { ... }

• Não Válido ▫ public static void main([]String args) { ... }

Esse array é usado para

receber parâmetros da linha

de comando, quando um

programa Java está sendo

executado.

Page 35: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exercícios

• Desenvolver vários programas utilizando

tipos primitivos e comandos de repetição

• 1o Programa: Imprimir

• 2o Programa: Calcular idade em segundos

• 3o Programa: Calcular a média aritmética anual de uma classe, sabendo que são duas notas por semestre

• …. Vários programas

OBS: Lembre-se o arquivo deve ser salvo com o mesmo nome da classe com a extensão .java

35

Page 36: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Sobre classes

• Atributos São características do objeto (tipos de dados primitivos e/ou referência a

outros objetos)

• Métodos Executam alguma ação, retornando ou não algum valor

Todos os métodos em java são funções, ou seja, todos os métodos retornam valores. Caso seja necessário criar um método que nao retorne valor (comportamento de procedimento), declara-se como retorno, “void”

• Construtores

Construtores não serão herdados

Também são métodos, porém especiais, porque são executados uma única vez (na criação do objeto). Servem para inicializar os atributos da classe

36

Page 37: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Tipos de Artefatos

• Interface ▫ Possui apenas a declaração de métodos e constantes ▫ A classe que a implementa deve obrigatoriamente

implementar todos os métodos ▫ Serve basicamente como um “contrato” com a classe que

a implementa

• Classe Abstrata ▫ Pode conter métodos abstratos (não implementados) ▫ Pode conter métodos concretos (já implementados) ▫ Só podem ser utilizados em classes filhas (extendidas)

37

Page 38: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Tipos de Artefatos (continuação)

• Classe Base

▫ Capaz de gerar objetos ▫ Quando implementa uma interface, todos os métodos

estão implementados ▫ Quanto estende uma classe abstrata, na última classe a

ser extendida, tem obrigatoriadade de implementar todos os métodos abstratos

• Classe Concreta

▫ É a classe que possui o modificador “final”, esta classe não pode ser extendida

38

Page 39: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Regras de nomeclatura • Classes:

Primeira letra maiúscula e nomes compostos com a primeira letra maiúscula

Ter a extensão “.java” • Atributos:

Caracteres em minúsculo e nomes compostos com a primeira letra maiúscula

Nomes devem começar com uma letra ou $ _ • Constantes:

Devem conter os caracteres em maiúsculo, e nomes compostos separados com um “_”.

O nome deve começar com uma letra ou um dos caracteres especiais “$ ou _”;

• Métodos: Idem as convenções de definição de atributos

39

Não iniciar

com

número !!

Não pode

utilizadar

keyword !! Java é case sensitive

Page 40: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Regras • Classes:

Primeira letra maiúscula e nomes compostos com a primeira letra maiúscula

Ter a extensão “.java” • Atributos:

Caracteres em minúsculo e nomes compostos com a primeira letra maiúscula

Nomes devem começar com uma letra ou $ _ • Constantes:

Devem conter os caracteres em maiúsculo, e nomes compostos separados com um “_”.

O nome deve começar com uma letra ou um dos caracteres especiais “$ ou _”;

• Métodos: Idem as convenções de definição de atributos

40

Page 41: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exceção

• Nem sempre um comportamento modelado

executa aquilo que esperamos: Podem acontecer anomalias devido entradas

indevidas

Anomalias que levam a erros

Erros que diminuem a qualidade da aplicação

• Quando este comportamento executa algo

inesperado, dizemos que houve uma exceção

41

Page 42: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Mas para quê tratá-las?

• Programas se tornam: Mais fáceis de desenvolver

Mais fáceis de manter

Menos propenso a bugs

Mais tolerante a falhas

42

Page 43: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Como tratá-las?

• Java usa um mecanismo para demarcar o

escopo em que possíveis exceções serão

tratadas (bloco try/catch/finally): try: indica que o código a seguir pode lançar uma

exceção

catch(<tipo_exceção>): bloco de código usado para

tratar uma exceção lançada dentro de um bloco try

finally: código a ser executado após um try/catch;

sempre é executado

43

Page 44: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exceções: Exemplo 1

public double dividir(int a, int b){ try{ return a/b; }catch(Exception e){ e.printStackTrace(System.out); return 0; } }

44

Page 45: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exceções: Exemplo 2

public double dividir(int a, int b){ try{ return a/b; }catch(ArithmeticException e){ e.printStackTrace(System.out); return 0; } }

45

Page 46: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Relançando Exceções

• É possível relançá-la adiante

• Para isso: A declaração do método em que a exceção puder

ser lançada tem que ser marcada como “lançadora

de exceção” (throws)

O método em si tem que relançar a exceção

adiante

Na classe de último nível utilizada a exceção deve

ser tratada

46

Page 47: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exceções: Exemplo 3

public double dividir(int a, int b) throws ArithmeticException { try{ return a/b; }catch(Exception e){ log.log(e.getMessage()); throw(new ArithmeticException(e.toString())); } }

47

Page 48: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Dicas

• Jamais uma exceção Nunca deixe o bloco catch vazio

• Não transforme exceções em um controle de fluxo

• Inclua mensagens com detalhes sobre as possíveis

causas da exceção

• Documente as exceções lançadas por um método e em que situações elas podem ser lançadas

• Prefira usar exceções-padrão

48

Page 49: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Arrays

• Coleção de objetos do mesmo tipo

• Todo array é um objeto, ainda que seja de tipos primitivos, ou seja, um array de “int” por exemplo, é um objeto

• Podemos ter arrays de todos os tipos, de bean, de int, de String, etc.

49

Page 50: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Arrays - Características

• Seus elementos são do mesmo tipo

• Arrays são imutáveis, ou seja, não são redimensionáveis

• Todo array possui o atributo length, que indica o tamanho do array (necessariamente não significa quantos elementos existem no array, e sim o dimensionamento que lhe foi dado em sua criação)

• São indexados

50

Page 51: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo 1 - Array

A construção de arrays se faz com o uso de [ ]

int [] i1 = new int[3] <-- Array de inteiros com 3 pos.

int i2 [] = new int[5] <-- Array de inteiros com 5 pos.

Obs.: Os identificadores acima não são tipos primitivos.

São arrays, e dessa forma são objetos, possuindo o atributo “length” que determina o tamanho do array.

51

Page 52: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo 2- Array

Outras formas de criar e inicializar arrays:

int[] i = new int[] {1, 2, 3, 4, 5};

int[] j = {4, 5, 6}; // unidimensional c/ 3 elementos

int[][] i2 = {{1, 2}, {3, 4}}; // bidimensional ou matriz

52

Page 53: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Redimensionando Arrays

• Arrays não são redimensionáveis. Para adicionar um elemento em um array, é necessário criar um novo array contendo os elementos do array anterior, mais o novo elemento, e associá-lo ao ponteiro original

• O array original é descartado

53

Page 54: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo 1 – Redim. Array

public int[] adicionaElementoArrayInt (int[] array, int novoElemento) {

int [] novoArray = new int [array.length + 1];

for (int i=0; i < array.length; i++) {

novoArray [i] = array [i];

}

novoArray [novoArray.length -1] = novoElemento;

return novoArray;

}

54

Page 55: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo 2 – Redim. Array

public int[] removeElementoArrayInt (int[] array, int elemento) {

int[] novoArray = new int[array.length - 1]; int i = 0;

boolean encontrado = false; while (i < array.length -1) {

if (!encontrado) { if (array [i] != elemento)

novoArray [i] = array [i++]; else

encontrado = true; } else {

novoArray [i] = array [i++]; }

} if (!encontrado) {

return array; } else {

return novoArray; }

}

55

Page 56: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo 3 – Redim. Array

/**

* Redimensiona um array com um novo tamanho

* @param oldArray o array de origem, para ser redimensionado

* @param newSize o novo tamanho do array.

* @return o novo array com os mesmo conteúdo, só que com

* seu tamanha redimensionado.

*/

public static Object redimensionaArray(Object oldArray, int newSize) {

int oldSize = java.lang.reflect.Array.getLength(oldArray);

Class elementType = oldArray.getClass().getComponentType();

Object newArray = java.lang.reflect.Array.newInstance(elementType, newSize);

int preserveLength = Math.min(oldSize, newSize);

if (preserveLength > 0) {

System.arraycopy(oldArray, 0, newArray, 0, preserveLength);

}

return newArray;

}

56

Page 57: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Localização

• Capacidade de configurar um sistema para se adaptar a culturas e normas de uma certa localidade

• Locale: classe que representa certas normas de uma determinada localidade geográfica;

Determinação de uma localidade ou idioma é dada através de siglas definidas pelo padrão ISO

• java.text: pacote que contém formatadores para datas, horários, números e mensagens de maneira independente de cultura ou norma

• O uso conjunto da classe Locale com os formatadores da classe java.text resultam em sistema mais adaptáveis a outras culturas

57

Page 58: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Datas

• Java possui três classes para trabalhar com datas: ▫ Date (java.util.Date e java.sql.Date – que herda de java.util.Date):

Representa um exato instante de tempo com precisão de milissegundos

Não faz operações com datas

▫ GregorianCalendar: Implementação da classe abstrata Calendar;

Permite fazer operações com datas, além de permitir a obtenção de informações precisas a respeito de ano, mês, dia, hora, ...

58

Page 59: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo – Datas e Localização //obtém o instante em que a classe foi instanciada

Date agora = new Date();

GregorianCalendar calendar = new GregorianCalendar();

// faz com que a data apontada pelo calendário seja “hoje”

calendar.setTime(agora);

int dia = calendar.get(Calendar.DATE); // obtém o dia

int mes = calendar.get(Calendar.MONTH); // o mês

int ano = calendar.get(Calendar.YEAR); // o ano

// meu aniversário: 28/07/1982

int[] data = {28, 6, 1982}; // meses começam a partir do 0

calendar.set(data[2], data[1], data[0]);

calendar.add(Calendar.YEAR, 1); // 28.jul.1983

int diaDaSemana = calendar.get(Calendar.DAY_OF_WEEK);

Locale localeBrasil = new Locale("pt", "br");

java.text.SimpleDateFormat frmtBr = new java.text.SimpleDateFormat("EEEE',' dd 'de' MMMM 'de' yyyy", localeBrasil);

java.text.SimpleDateFormat frmtEUA = new java.text.SimpleDateFormat("EEEE',' MMMM dd yyyy", Locale.US);

System.out.println(frmtBr.format(calendar.getTime()));

System.out.println(frmtEUA.format(calendar.getTime()));

NumberFormat fmtVlrBr = NumberFormat.getCurrencyInstance(localeBrasil);

System.out.println("Preço: "+fmtVlrBr.format(10.6));

NumberFormat fmtVlrEUA = NumberFormat. getCurrencyInstance(Locale.US);

System.out.println("Preço: "+fmtVlrEUA.format(10.6));

59

Page 60: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

JavaBeans

• Um JavaBean é um componente reutilizável que tem

como finalidade representar um modelo de dados

• Utilizado para armazenar os dados de um determinado

assunto. Ex.: PessoaBean, SolicitacaoReembolsoBean,

etc.

• Deve possuir apenas atributos privados e métodos

get/set, exceto a implementação dos métodos toString,

equals, hashCode

• Devem implementar a interface Serializable ??

60

Page 61: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo de JavaBean abstract class BaseCodigoDescricao {

int codigo;

private String descricao;

public int getCodigo() {

return codigo;

}

public String getDescricao() {

return descricao;

}

public void setDescricao(String descricao) {

this.descricao = descricao;

}

public void setCodigo(int codigo) {

this.codigo = codigo;

}

public String toString() {

return new StringBuffer("Código: ").append(this.codigo)

.append("; Descrição: ").append(this.descricao).toString();

}

public int hashCode() {

final int PRIME = 31;

int result = 1;

result = PRIME * result + codigo;

return result;

}

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

final BaseCodigoDescricao other = (BaseCodigoDescricao) obj;

if (codigo != other.codigo)

return false;

return true;

}

}

61

Page 62: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções - Collection Framework

• Estrutura de dados de coleções (listas, mapas, conjuntos, pilhas)

• Coleções são estruturas de dados que permitem o armazenamento arbitrário de inúmeros objetos para diversos fins;

• Algumas permitem elementos duplicados, outras não;

• Algumas são ordenadas, outras não;

• Algumas permitem a inserção do elemento null, outras não.

• Não aceitam tipos primitivos (só empacotados)

• Em Java, existem 3 tipos de coleções: Lists;

Sets; Maps;

62

Page 63: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções

• Nas Collections, as operações de busca por elementos são realizadas com base nos métodos equals e hashCode;

• Caso estes métodos não sejam devidamente sobrescritos, não será obtido o resultado esperado quando invocados os métodos disponíveis nas Collections, como “contains, remove, indexOf…”;

• Equals deve retornar true somente quando os objetoscomparados forem iguais

• O número hashCode deve ser diferente para objetos diferentes, quando comparados;

• A collection Set baseia-se no número hashCode dos objetos para realizar buscas, ganhando em performance por isso. Números hashCode não garantem igualdade de objetos e sendo assim, quando o número hashCode de um objeto for encontrado na Colletcion, o método equals será invocado para confirmar a igualdade dos mesmos. Caso o número hashCode de um objeto não seja encontrado, o método equals não será invocado, e a busca retornará “false”.

63

Page 64: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

64

Page 65: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

65

Page 66: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

66

Page 67: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções - List

• java.util.List representa uma coleção ordenada de objetos sobre a qual se tem o controle da posição de inserção dos elementos;

• Permite a inserção de elementos repetidos (a.equals(b)) dentro da mesma coleção;

• Esta interface estende java.util.Collection;

• Classes que implementam esta interface: ArrayList – lista seqüencial/indexada; LinkedList – lista encadeada (mas pode ser usada como fila, pilha ou

de-queue); Vector – lista seqüencial sincronizada (existe uma classe Stack que

herda Vector); AbstractList – esqueleto para implementação de listas seqüenciais;

67

Page 68: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo de List

List lst = new ArrayList(); lst.add(0, "Java");

lst.add(new Integer(0)); String a = (String)lst.get(0);

System.out.println("item da posição 0: " + a); System.out.println("-------------------------------\nElementos de lst:");

for (Iterator it = lst.iterator(); it.hasNext();) { System.out.println(it.next());

} LinkedList linkedLst = new LinkedList();

linkedLst.addFirst("João"); linkedLst.addLast(null);

linkedLst.addLast("Maria"); String b = linkedLst.getFirst().toString();

System.out.println(b); System.out.println("-------------------------------\nElementos de linkedLst:");

for (Iterator it = linkedLst.iterator(); it.hasNext();) { System.out.println(it.next());

}

68

Page 69: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções – Set • java.util.Set é uma coleção (sem ordem) de elementos únicos:

ou seja, não há elementos repetidos dentro de um Set;

• Implementa a definição matemática de conjunto;

• Esta interface estende java.util.Collection;

• Classes que implementam esta interface: AbstractSet – implementação mínima da interface Set; HashSet – baseada em uma tabela hash, usa uma função hash para

espalhar os elementos através do conjunto; não garante ordem de iteração de elementos;

LinkedHashSet – define ordem de iteração; TreeSet – conjunto ordenado (implementa a interface

java.util.SortedSet) de elementos (ordem ascedente); elementos neste conjunto precisam implementar a interface java.lang.Comparable;

69

Page 70: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

70

Page 71: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo - Set

Set s1 = new HashSet();

System.out.println(s1.add("João"));

System.out.println(s1.add(new Integer(18))); //true

System.out.println(s1.add("João")); // opa! Já existe “João”: false!

System.out.println(s1.remove("João")); // true

boolean existe = s1.contains(new Integer(18)); // true

System.out.println(existe);

71

Page 72: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções – Map

• java.util.Map associa uma certa chave a um único valor específico; isto é, não pode haver chaves duplicadas em um Map;

• Não estende java.util.Collection;

• (Algumas) Classes que implementam esta interface:

HashMap – tabela hash que permite null seja na chave, seja no valor; usa função hash para espalhar os valores adequadamente pela estrutura, permitindo que as operações get/put tenham tempo constante;

Hashtable – versão sincronizada do HashMap; não permite valores nulos;

TreeMap – é uma implementação da interface SortedMap usando uma árvore red-black; chaves nesta árvore precisam implementar a interface java.lang.Comparable;

72

Page 73: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Exemplo – Map

Map map = new HashMap(); Pessoa p1 = new Pessoa(“João”, “[email protected]”); Pessoa p2 = new Pessoa(“Maria”, “[email protected]”); map.put(p1.getNome(), p1); map.put(p2.getNome(), p2); Pessoa p3 = (Pessoa) map.remove(p1.getNome()); // p3 = p1;

73

Page 74: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Coleções – Observações

• Todas as coleções (exceto Hashtable e Vector) não são sincronizadas;

Isso quer dizer que duas ou mais threads podem alterar simultaneamente a estrutura da coleção;

• Para torná-las sincronizadas, é preciso usar o método Collections.synchronizedXXX() (XXX pode ser List, Map ou Set);

Map m = Collections.synchronizedMap(new HashMap());

Set s = Collections.synchronizedSet(new HashSet());

List l = Collections.synchronizedList(new ArrayList());

74

Page 75: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

Sobre comentários

• De uma única linha // // Comentário de linha. Pode ser colocada após o final da instrução

• De uma ou mais linhas /* */ /* Comentário de mais de uma linha.

* Ocupa toda a linha até ser finalizado */

• De Documentação (JavaDoc) /** */ /**

* Documentação que será gerada automaticamente pelo JavaDoc

*/

75

Page 76: Treinamento Básico de Java · •Em Java, existe APENAS herança simples •Todos os objetos em Java são filhos de java.lang.Object •O que é “herdável”? Membros

76

Dúvidas / Perguntas