Вы находитесь на странице: 1из 143

Linguagem de Programação JAVA

JB50 Java Básico

Revisão 5.0a 20/04/03

© Copyright e-tecnologia.com, 2002


Linguagem de Programação JAVA
JB50 Java Básico
Conteúdo

Introdução Programação Orientada a Objetos


breve apresentação Classes
gerando aplicações Objetos
IDE Métodos
Instalação do J2SDK Construtores
Compilador javac, Atributos e Variáveis
JVM Abstração de Dados
O primeiro programa Relacionamento
Fundamentos da linguagem Java Herança
Estrutura da linguagem Associação
Palavras Reservadas Navegação
Tipos de Dados Role Names
Variáveis Agregação e Composição
Operadores Multiplicidade
A classe String Constraint
A classe StringBuffer Encapsulamento
Casting Polimorfismo
Fluxo de Controle JavaDoc
Arrays Jar
Passagem de Parâmetros JDB
A classe Math Javap
Wrapper de Classes Apêndice
Conversão de Tipos Convenção de Código no Java
A referência this Unicode
Coleções Notação UML
Pacotes Applets
Acessibilidade
Modificador Static
Modificador Final

2
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Objetivo

Você está preparado ?

Para aprendermos uma nova linguagem de programação é necessário ter alguns


conhecimentos como:
- Lógica de Programação;
- Conhecer um Sistema Operacional, por exemplo, Windows, Unix, Linux ou MacOS;
- Saber editar e compilar programas e;

Objetivo deste curso:

Apresentar as características básicas da linguagem Java, assim


como, sua estrutura, funcionalidades, métodos, classes, APIs
(Application Program Interface) e ferramentas.

Expectativas após o Curso:

Ao final deste curso você deverá estar apto a:


• Utilizar a linguagem Java para criar aplicações simples;
• Conhecer a estrutura da linguagem Java, principais API,
sintaxes e declarações.
• Descrever e usar as características de linguagem orientada a
objetos com Java, tais como: Herança, Abstração de Dados,
Encapsulamento e Polimorfismo;

3
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Estrutura do Curso

Introdução Apresenta arquitetura da linguagem Java

Fundamentos Apresenta comandos e funcionalidades


da linguagem básicas

Programação
Principais aspectos da programação
Orientada
orientada a objetos
a Objetos

Demonstrar os principais utilitários da


Utilitários
linguagem Java (Jar, JadaDoc e etc)

4
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Objetivo
Por que aprender Java?

Gartner diz que 62% usam Java no Brasil

Quinta-feira, 04 de
outubro de 2001 -
19h24

SÃO PAULO - Cerca de 62% dos desenvolvedores


que atuam nas empresas brasileiras usam a
tecnologia Java. É o que revela um recente
levantamento realizado pelo instituto Gartner.

A pesquisa mostrou ainda que 35% dos pesquisados


usam Java há menos de um ano e 33% há menos de
dois anos. Segundo a Sun Microsystems, que criou a
linguagem, isso indica que as empresas já passaram o
período de experimentação e realmente adotaram a
tecnologia Java para seus projetos de negócios.

A maioria dos entrevistados (80%) apontou como


principal razão para o emprego da linguagem Java o
fato de ela ser multiplataforma, enquanto 48%
citaram ainda a escalabilidade e 25%, a segurança.

O estudo mostrou ainda que 60% das pessoas já


usaram Java para projetos de Application
Development (AD); 22% ainda não usaram, mas
planejam usar; e 16% não têm planos de utilizar a
linguagem.

Vale lembrar que o levantamento "The Gartner


Survey on Java Usage in Brazil" foi realizado com
80 profissionais durante a conferência "Economia de
TI", em São Paulo, no mês de agosto.

Por Alexandrina Macedo, do TCINet

5
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

6
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Uma breve apresentação...

Tecnologia Java :

A tecnologia Java oferece um conjunto de soluções para desenvolvimento de


aplicações para diversos ambientes:

J2SE: Para o desenvolvimento de aplicações Client/Server e Applets.

J2EE: Criação de aplicações Web (distribuídas, com volumes de transações


seguras)

J2ME: Para o desenvolvimento de aplicações para dispositivos móveis, tais


como: Celular, PDA, TV set-top boxes, VDA, Smart Cards e etc.

Java

7
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

O que é a linguagem de programação Java?


Java é:
•Uma linguagem de programação;
•Um ambiente de desenvolvimento;
•Um ambiente de aplicação;
Java é o resultado de uma busca por uma plataforma de
programação que pudesse fornecer segurança, portabilidade
(independência de sistema operacional) e escalabilidade.
Os primeiros objetivos alcançados com o desenvolvimento desta
nova linguagem foram:

•Orientação a objetos: A linguagem é orientada a objetos a partir


de sua arquitetura, permitindo herança, polimorfismo,
encapsulamento, abstração de dados, persistência de objetos e
reúso de código.;
• Independência de plataforma (Portabilidade): Possibilidade do
mesmo código fonte ser executado em diversos sistemas
operacionais, tais como Solaris, AIX, Linux, MacOS, Win32,
PalmOS, OS/390 e etc);
• Dinamismo: A natureza dinâmica do Java, sendo uma extensão
natural de seu projeto orientado a objetos, permite a extensibilidade
durante a execução.
• Alto desempenho: Suporte a vários recursos, como
multithreading, compilação em Jus-in-time, atomicidade do código e
suporte a protocolos de rede (TCP/IP)
• Facilidade de manutenção de programas.

A linguagem não tem:


• Ponteiros do sistema operacional;
• Defines;
• Sobrecarga de operadores;
• Herança múltipla de classes e
• Função e/ou procedure.

Principias características:
• Cargabe Collection (gerenciamento dinâmico da memória);
• Java Virtual Machine (JVM);
• Código seguro.

8
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Diferenças entre o Java e o C++

Java é sintática e morfologicamente muito parecido com a linguagem C++,


entretanto, existem diferenças:
•Inexistência de aritméticas de ponteiros (ponteiros são apenas referências);
•Arrays são objetos;
•Strings são objetos;
•Gerenciamento automático de alocação e deslocação de memória (Garbage
Collection);
•Não há sobrecarga de operadores;
•Não há métodos com lista de argumentos de tamanho variável;
•Não existem diretivas de pré-compilação (#define, #ifde);
•Não existem Templates;
•Não existe Herança Múltiplas com classes, apenas com interfaces;
•Não existem funções, mas apenas métodos de classes;
Necessita de ambiente de execução (runtime), ou seja, a JVM (Java Virtual
Machine).

Veja abaixo um exemplo de um simples programa escrito em Java e em C++.

Java public class Hello


{
public static void main (String arg [])
{
System.out.println("Hello” + “\n”);
}
}

C++ #include <iostream.h>

int main ()
{
cout << “Hello \n" ;
return 0;
}

9
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java
Portabilidade: “A independência de plataforma”
A linguagem Java é independente de plataforma. Isto significa que o desenvolvedor não
terá que se preocupar com particularidades do sistema operacional ou de hardware,
focando o seu esforço no código em si. Mas o que isto realmente significa?

?
A maioria das linguagens é preciso gerar uma versão para cada plataforma que se
deseja utilizar, exigindo em muitos casos, alterações também no código fonte. Em Java
o mesmo programa pode ser executado em diferentes plataformas. Veja o exemplo
abaixo:

public class HelloWorldApp


{ Compilação:
public static void main (String arg []) > javac Hello.java
{
System.out.println("Hello World!");
}
} Execução:
> java Hello
O mesmo código fonte

Hello
World Hello
World
Hello
World
Sistema Operacional e
Processadores diferentes

"write once, run anywhere."


10
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java
Gerando Aplicações

Para criar aplicações ou programas na linguagem Java temos que seguir os alguns
passos como: Edição, Compilação e Interpretação.
A Edição é a criação do programa, que também é chamado de código fonte.
Com a compilação é gerado um código intermediário chamado Bytecode, que é um
código independente de plataforma.
Na Interpretação, a máquina virtual Java ou JVM, analisa e executa cada instrução do
código Bytecode.

3
Java myProgram

2
Javac myProgram.java

Na linguagem Java a compilação ocorre apenas uma vez e a interpretação ocorre a cada
vez que o programa é executado.

11
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Plataforma de Desenvolvimento
A popularidade da linguagem Java fez com que muitas empresas
desenvolvessem ferramentas para facilitar desenvolvimento de aplicações.
Estas ferramentas também são conhecidas como IDE (Ambiente de
Desenvolvimento Integrado), que embutem uma série de recursos para dar
produtividade. Todavia, cada uma delas tem suas próprias particularidades e
algumas características semelhantes.
As principais ferramentas do mercado são:

Ferramentas Fabricante Endereço na Internet (URL)

Consortium www.eclipse.org/downloads/index.php
Eclipse

JBuilder Borland www.borland.com/jbuilder/

JDeveloper (release 2) Oracle http://otn.oracle.com/products/jdev/


content.html

Sun www.netbeams.org

Dica: na hora de avaliar uma ferramenta IDE, um item que deve ser avaliado é se a
ferramenta tem suporte a especificação J2EE.

12
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Instalação do ambiente de desenvolvimento (JDK)

O J2SDK é ambiente de desenvolvimento da linguagem Java. Na verdade é conjunto


de ferramentas para compilar, depurar, executar e documentar um programa escrito
em java.
As versões para Solaris, Linux e Windows podem ser obtidas no endereço:
www.java.sun.com/j2se (Página oficial da linguagem).

Procedimentos de Instalação:
Para instalar o J2SDK basta executar o programa de instalação e seguir as
instruções. Caso o J2SDK esteja compactado será necessário descompacta-lo
primeiro, os formatos mais populares de arquivos compactados são zip (para
Windows) e tar (para Unix).
Após a instalação é necessário configurar o ambiente:

Para Win98 ou ME:


Passo 1:
No windows: Acrescentar no Autoexec.bat:
SET JAVA_HOME=C:\j2sdk1.4.0_01
PATH=%JAVA_HOME%\bin
A variável JAVA_HOME deve ter o mesmo nome do diretório onde foi instalado o
J2SDK.
Passo 2:
Classpath
O Java defini uma variável de ambiente chamada ClassPath. O Java procura pelas
classes e pacotes através desta variável. Ela deve estar presente no arquivo
Autoxecec.bat
Veja um exemplo: Set classpath=.; C:\j2sdk1.4.0_01\bin;c:\MeusPacotes
Faça um teste para verificar se tudo está funcionando adequadamente:
1 - Abra um “prompt” do DOS (janela do DOS)
2 - Digite java e seguida tecle <enter>, deverá ser apresentado uma lista de
opções da.
3 - Digite javac e seguida tecle <enter>, deverá ser apresentado uma lista
do compilador.

Se algum problema foi apresentado, faça uma revisão no passo 1 e 2.

13
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Instalação do ambiente de desenvolvimento (JDK)


Para Windows 2000:
A partir do Menu iniciar, selecione Configurações, depois selecione Painel de
Controle e enfim Sistema.
Estando em Sistema seleciona o guia “Avançado” e depois variáveis de ambiente.

Passos 1:
1 - Crie uma nova variável de ambiente chamada “JAVA_HOME” com
o seguinte valor C:\j2sdk1.4.0_01
Exemplo: JAVA_HOME = C:\j2sdk1.4.0_01;
2 Edite a variável de ambiente Path e adicione as seguintes informações:
PATH=%JAVA_HOME%\bin

A variável JAVA_HOME deve ter o mesmo nome do diretório onde foi instalado o
J2SDK.

14
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Instalação do ambiente de desenvolvimento (JDK)


Para Windows 2000:
Passo 2:
Classpath
O Java defini uma variável de ambiente chamada ClassPath. O Java procura pelas
classes e pacotes através desta variável.

1 - Crie ou edite a variável de ambiente chamada CLASSPATH, informa o seguinte


valor para ela. classpath=.; C:\j2sdk1.4.0_01\bin; (lugar onde está foi instalado o
J2SDK)
Como resultado você terá o seguinte: classpath=.;:\j2sdk1.4.0_01\bin;
Faça um teste para verificar se tudo está funcionando adequadamente:
1 - Abra um “prompt” do DOS (janela do DOS)
2 - Digite java e seguida tecle <enter>, deverá ser apresentado uma lista de opções
da.
3 - Digite javac e seguida tecle <enter>, deverá ser apresentado uma lista
do compilador.

Se algum problema foi apresentado, faça uma revisão no passo 1 e 2.

15
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Instalação do ambiente de desenvolvimento (JDK)

O próximo passo é instalar a documentação, ela geralmente está em arquivo


compactado, ao descompacta-la selecionar a unidade de disco, por exemplo: “C:\”,
pois, o diretório padrão da documentação (docs) já está definido no arquivo
compactado. Caso você tenha instalado o JDK em outro diretório que não seja o
padrão, você deverá especificar no momento da instalação. A documentação está
no formato HTML, o arquivo principal o index.html.

16
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Instalação do ambiente de desenvolvimento (JDK)

A figura demonstra uma visão do pacote de desenvolvimento J2SDK e também do


ambiente de execução (JRE). Ambos são necessários para desenvolver uma aplicação.
Para os clientes, os usuários finais, precisam apenas do ambiente de execução JRE.
Aplicativos como os Applets executam através do Browser (Internet Explorer ou
Netscape) geralmente a VM que está embutida nestes navegadores.

17
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

O Compilador javac
Sintaxe: javac [opções] NomedoArquivo.java

Veja abaixo a lista dos principais argumentos:


Argumento Descrição
-classpath path Localização das classes. Sobrepõe a variável de ambiente
Classpath.
-d dir Determina o caminho onde as classes compiladas são
armazenadas
-deprecation Faz a compilação de código em desuso, geralmente de versões
anteriores e faz aviso de advertência
-g Gera tabelas de "debugging" que serão usadas pelo pelo
deupador JDB.
-nowarm Desabilita as mensagens de advertência

-verbose Exibe informações adicionais sobre a compilação

-O Faz otimização do código

-depend Faz a compilação de todos os arquivos que dependem do arquivo


que está sendo compilado. Normalmente somente é compilado o
arquivo fonte mais as classes que este invoca.

Exemplos:

> javac Hello.java

> javac -d . Hello.java

> javac -deprecation Hello.java

> javac -O -deprecation -verbose Hello.java

> javac -O Hello.java

18
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

O Interpretador java
Sintaxe: java [opções] NomedoArquivo [lista de Argumentos]

Veja abaixo a lista das principais opções:


Argumento Descrição
-classpath path Localização das classes. Sobrepõe a variável de ambiente Classpath.

-help Exibe a lista de opções disponíveis

-version Exibe a versão do interpretador

-debug Inicia o interpretador no modo de "debug", geralmente em conjunto


com JDB.
-D propriedade= Possibilita redefinição de valores de propriedades. Pode ser usado
valor várias vezes.
-jar Indica o nome do arquivo (com extensão .jar) que contém a classe a ser
executada.
-X Exibe a lista de opções não padronizadas do interpretador

-v ou -verbose Exibe informações extras sobre a execução, tais como, mensagens


indicando que uma classe está sendo carregada e etc
Lista de Define a lista de argumentos que será enviada a aplicação
Argumentos

Alguns Exemplos:

> java Hello

> javac -version

> java -D nome=“Meu Nome” Hello

> java -verbose Hello

> javac Hello MeuNome

19
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Java Virtual Machine


A JVM é parte do ambiente de "runtime" Java e é a responsável pela
interpretação dos bytecodes (programa compilado em java), ou seja, a execução
do código.
A JVM consiste em um conjunto de instruções, conjunto de registradores, a pilha
(stack) , garbage-collected heap e a área de memória (armazenamento de
métodos).

Funcões da JVM:
• Carregar de forma segura todas as classes do programa (protegendo contra
ataques premeditados, por exemplo, Cavalos de Tróia)
• Verificar se os bytecodes aderem às especificações da JVM e se não violam a
integridade e segurança da plataforma.
• Interpretar o código.

Em tempo de execução estes bytecodes são carregados, são verificados através


do Bytecode Verifier (uma espécie de vigilante) e somente depois de verificados
serão executados.

Programa
Fonte

Javac <programafonte.java>

Programa Class Loader


Compilado

J
Byte Code Verifier
Java <programafonte> V
M
Runtime

20
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Garbage Collection

Coletor de Lixo:

A linguagem Java tem alocação dinâmica de memória em tempo de execução.


No C e C++ (e em outras linguagens) o programa desenvolvido é responsável pela
alocação e deslocamento da memória. Isto geralmente provoca alguns problemas.
Durante o ciclo de execução do programa, o Java verifica se as variáveis de
memória estão sendo utilizadas, caso não estejam o Java libera automaticamente
esta área para o uso. Veja exemplo abaixo:

import java.util.*;

class GarbageExample {

private static Vector vetor;

public static void main(String args[]) {

vetor = new Vector();


for (int a=0; a < 500; a++)
vetor.addElement(new StringBuffer("teste"));

Runtime rt = Runtime.getRuntime();

System.out.println("Memória Livre: " + rt.freeMemory());

vetor = null;

System.gc();

System.out.println("Memória Livre: " + rt.freeMemory());

}
}

21
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Escrevendo um pequeno programa

1 - Abra o editor de programas e crie o seguinte programa.

public class Hello


{
public static void main (String arg [])
{ String s = "world";
System.out.println("Hello " + s);
}
}

2 - Salvar como: Hello.java

Após terminar:

3 - Compile o programa com o seguinte comando:


javac Hello.java

4 - Para executar, digite o comando:


java Hello

Está pronto o primeiro programa em Java. Fácil!

22
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Escrevendo um pequeno programa


Dissecando o código
modificador

Nome da classe
Lista de argumentos
public class Hello
(o tipo em questão é String)
Classe {
(corresponde public static void main (String arg [])
Método { String s = "world";
ao arquivo principal Variável
que será gravado System.out.println("Hello " + s);
do disco) }
}
método
Atributo da
Classe java Classe System
Tipo de dado

Roteiro para criar um programa em Java:


1 - Fazer a assinatura da classe, isto equivale a declaração:
public class NomedaClasse {
2 - Declarar as variáveis, também chamadas de fields:
int i =0 ;
Neste caso não temos nenhum variável de classe ou field
3 - Fazer a assinatura dos métodos:
public static void main (String args[]){
4 - Escrever o corpo do método:
String s= “world”;
System.out.println(“Hello” + s);
5 - Para encerrar o método, note que o corpo do método está entre chaves “{...}“.
}
6 - Para encerrar a classe, segue o mesmo princípio do método. Use chaves “}“.
7 - Salve o arquivo. Observe que o nome do arquivo deve ser o mesmo nome da
classe.
Hello.java
8 - Compilar o programa. Sintaxe: javac <NomedaClasse.java>.
Javac Hello.java
9 - Agora execute o arquivo. Sintaxe: java <NomedaClasse>
Java Hello

23
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Introdução a linguagem Java

Escrevendo um pequeno programa

Não deu certo ???

Veja se este pequeno “Checklist” pode ajudar:

1 - Problemas com compilação: Veja o Classpath;


2 - Se o compilador não consegue encontrar o arquivo:
Verifique se o nome da classe e o nome do arquivo gravado em
disco são correspondentes, lembre-se que o java faz distinção
entre maiúscula e minúscula;
3 - Erros de sintaxes:
Verifique se os pares chaves estão corretos, ou seja, deve ter
um par para classe,
outro para cada método e para cada bloco de declarações.
Verifique se não há instruções erradas, como string quando o
correto é String (é uma classe), system ao invés de System
Verifique se há ponto e virgula “;” no final de cada instrução.

24
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

25
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Estrutura da Linguagem

Comentários:
Temos três tipos permitidos de comentários nos programas feitos em Java:
• // comentário de uma única linha
• /* comentário de uma ou mais linhas */
• /** comentário de documentação */ (este tipo de comentário é usado pelo utilitário
Javadoc, que é responsável por gerar documentação do código Java)

Exemplo Descrição
int x=10; // valor de x Comentário de linha
/*
Exemplo onde o comentário usa mais que uma linha.
A variável x é integer
Todo o texto entre "/*" e "*/", inclusive, são ignorados pelo
*/
compilador
int x;
/**
x -- um valor inteiro representa
Todo o texto entre o "/**" e "*/", inclusive, são ignorados
a coordenada x
pelo compilador mas serão usados pelo utilitário javadoc.
*/
int x;

Ponto e vírgula, Blocos e o espaço em branco:


• No Java, os comandos são terminados com o sinal de ponto e vírgula (;)
• Um bloco tem início e fim representados pelo uso das chaves { };
• O uso do espaço em branco permite uma melhor visualização dos comandos e em
conseqüência facilita a sua manutenção.
Exemplo:

public class TestEstrutura


{
public void sayHello(String hello)
{
Bloco da Classe
System.out.println("Hello ");
}
}

Ponto e virgula
Bloco do Método

26
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Estrutura da Linguagem
Identificadores:
Que são identificadores ?
Identificadores são nomes que damos as classes, aos métodos e as variáveis.

Regra: Um identificador deverá ser inicializado com uma letra, sublinhado ( _ ), ou


sinal de cifrão ($). Em Java existe uma diferença entre letras maiúsculas e
minúsculas. Veja alguns exemplos:
Classe é diferente de CLASSE
classe é diferente de Classe

Exemplos de identificadores::
Alguns identificadores válidos:
- identifier - userName - User_name - _sys_var1 - - $change
Exemplo: public class PessoaFisica

Veja alguns inválidos:


- 1nome - \TestClass - /metodoValidar

--------------------------- Compiler Output ---------------------------


TestIdentificador.java:3: illegal start of type
private 1nome;

Veja o código abaixo onde são apontados os identificadores

Identificador
(nome da classe) Identificador
public class Hello
(nome do método)
{
public static void main (String arg [])
Método { String s = "world";
Classe
principal Veja que primeiro
System.out.println("Hello " + s); foi definido
} o tipo de dado,
} String, e depois o
nome do Identificador
(nome do variável)

27
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Palavras Reservadas
Palavras Reservadas

abstract do implements private throw


boolean double import protected throws
break else instanceof public transient
byte extends int return true
case false interface short try
catch final long static void
char finally native strictfp volatile
class float new super while
continue for null switch
default if package synchronized
this

As Palavras Reservadas, quer dizer que nenhuma das palavras da lista acima podem ser
usadas como identificadores, pois, todas elas foram reservadas para a Linguagem Java.
Veja o exemplo abaixo:

public class TestPalavraReservada


{ Palavra reservada
private int return =1;
Palavra reservada
public void default(String hello)
{
System.out.println("Hello ");
}
}

Este programa provocará erros ao ser compilado:

--------------------------- Compiler Output ---------------------------


TestEstrutura.java:3: <identifier> expected
private int return =1;
^
TestEstrutura.java:6: <identifier> expected
public void default(String hello)

28
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Tipos de Dados
Existem tipos básicos ou primitivos e os tipo de referência.
Sintaxe padrão:
<Tipo de dado> <nome da variável>; ou
<Tipo de dado> <nome da variável> = valor da variável;
<Tipo de dado> <nome da variável> = valor da variável, <nome da variável> =
valor da variável... ;
Tipo Lógico - boolean: true e false
Exemplo: boolean fim = true;

Tipo Textual - char e String (String é uma classe)


Um caracter simples usa a representação do tipo char. Java usa o sistema de
codificação Unicode (Veja Apêndice B). Neste sistema o tipo char representa um
caracter de 16-bit.
O literal do tipo char pode ser representado com o uso do (‘ ‘). Exemplos:
a = ‘b’;
‘\n’ – nova linha
‘\r’ – enter
Código de escape
‘\t’ – tabulação
‘\\’ - \
‘\” ”’ - “”
‘\u????’ – especifica um caracter Unicode o qual é representado na forma
Hexadecimal.

String (String é uma classe)


O tipo String é um tipo referência que é usado para representar uma seqüência de
caracteres.
Exemplo:
String s = “Isto é uma string”,

Inteiros – byte, short, int e long


Possuem somente a parte inteira, ou seja, não suportam casas decimais.
Exemplos:
int i1 = 10, int i2 = 11;
byte b = 1;
O tipo default é int.
Quando declaramos uma variável do long é necessário acrescentar um literal L, caso
contrário esta poderá ser tratada como int, que poderia provocar problemas.
Long L = 10L;
29
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Tipos de Dados

Tamanho Tipo Faixa

8 bits byte -128 a 128


16 bits short -32.768 a 32.767
32 bits int -2.147.483.648 a 2.147.483.647
64 bits long 9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
Ponto Flutuante
São os tipos que têm suporte às casas decimais e maior precisão numérica.
Existem dois tipos em Java: o float e o double.
O valor default é double, ou seja, todo vez que for acrescentado a literal F, no
variável tipo float, ela poderá ser interpretada como variável do tipo double
Veja alguns exemplos:
3.14 Um ponto flutuante simples;
6.02E23 Um valor de ponto flutuante largo;
2.718F Um valor de ponto flutuante simples;
123.4E+306D Um valor de ponto flutuante usando o tipo double.

Exemplos de declarações:
float f = 3.1;
float div = 2.95F;
double d1 = 6.35, d2 = 6.36, d3 = 6.37;
double pi = 3.14D

Regra:
Os tipos float e double quando aparecem no mesmo programa é necessário
identificá-los, para que não comprometa a precisão numérica:
float f = 3.1F;
double d = 6.35;
Uma vez não identificado, ao tentar compilar o programa, será emitida uma
mensagem de erro.
Tamanho Tipo Faixa Precisão

32 bits IEEE 754-1985 Float 1,4E-45 a 3,4E+38 7 dígitos


64 bits IEEE 754-1985 Double 4,9E-324 a 1,7E+308 15 dígitos

30
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Inicialização de variáveis

As variáveis dentro de um método devem ser inicializadas explicitamente para


serem utilizadas. Não é permitido o uso de variáveis indefinidas ou não
inicializadas.
Exemplo:
int i;
int a = 2;
int c = i + a;
Neste caso ocorre erro, pois, o valor de i está indefinido.

public class TestVarInic {

public static void main(String[] args) {


int age;
Ocorre erro age = age + 1;
System.out.println("The age is " + age);
}
}

As variáveis ou atributos definidos dentro de uma de classe, são inicializadas


através do construtor, que usa valores default.
Valores default para boolean é false, para os tipos numéricos é 0 e tipo referencia
é null;
public class TestVarInicClasse {
private static int age;
public static void main(String[] args) {
System.out.println("The age is " + age);
}
}
Resultado: The age is 0

31
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Armazenamento de variáveis

Geralmente as variáveis são armazenadas em memória. A linguagem Java possui


dois locais para armazenamento de variáveis de acordo com as características.

Variáveis declaradas Objetos com


dentro de um método atributos

Stack Memory Heap Memory

Objetos e seus atributos e métodos são armazenados no Heap Memory. A Heap


é dinamicamente alocada para os objetos esperarem por valor.
Já Stack memory armazena as informações que serão utilizadas por um breve
intervalo de tempo,

public class Teste{


public static void main(String args[]){
int valor = 10; int valor = 10;
byte numbyte = 1; byte numbyte = 1;
}
}

Stack Memory

32
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Criando Objetos

Os objetos referências são variáveis que contém uma referência do objeto na


memória. Vejamos o exemplo:

public class Jogador {


private int numero;
private String nome;

public static void main(String[] args) {


Jogador jogador = new Jogador();
jogador.setNumero(10);
jogador.setNome("Pele");
System.out.println("O " + jogador.getNome() + " foi um dos melhores camisa " +
jogador.getNumero() + " de todos os tempos");
System.out.println("referencia do objeto " + jogador);
}
public String getNome() {
return nome;
}
public int getNumero() {
return numero;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setNumero(int numero) {
this.numero = numero;
}
}
Saída:
O Pele foi um dos melhores camisa 10 de todos os tempos
referencia do objeto Jogador@ba34f2

Referência do Objeto

33
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Operadores

Os operadores na linguagem Java, são muito similares ao estilo e funcionalidade


de outras linguagens, como por exemplo o C e o C++.

Operadores Lógicos:

> Maior que <= Menor que ou igual == Igual

< Menor que >= Maior que ou igual != Diferente

! Not (negação) && And (Short-circuit) || OR (Short-circuit)

Exemplos:
i > 10;
x == y;
“Test” != “teste”
!y
x || y

Operadores Matemáticos:

+ Adição * Multiplicação ++ Incremento

- Subtração + Positivo (unário) -- Decremento

/ Divisão - Negativo (unário) % Módulo

Exemplos:
int a = 1;
int b = a + 1;
int c = b - 1;
int d = a * b;
short s1 = -1;
short s2 = 10;
short s1++;
int c = 4 % 3;

34
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Operadores

Outros Operadores:

instanceof Faz a comparação do objeto que está “instanciado” no objeto

new Este operador é usado para criar novas “instance” de classes

Exemplos:

instanceof:
Objeto obj = new String(“Teste”);
if (obj instanceof String) System.out.println(“verdadeiro”)

new:
Hello hello = new Hello();

Precedências de Operadores:

.[]()
++ - ! ~ instanceof
new (type) expressão - O type é coerção de tipo
*/%
+-
<< >> >>>

Exemplo:
Com a precedência definida pelo Java
int c = 4 / 2 + 4;
Neste caso, primeiro ocorrerá a divisão e após a soma.

Com a precedência definida pelo desenvolvedor


int a = 4 / (2 + 4);
Já neste caso, primeiro ocorrerá a soma e depois a divisão.

35
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Operadores

Operadores Binários:

Java fornece extensa capacidade de manipulação de bits. Todos os dados são


representados internamente como uma seqüência de bits. Cada bit pode assumir o
valor de 0 ou 1. No geral uma seqüência de bits formam um byte, que é a unidade de
armazenamento padrão, para uma variável tipo byte. Os tipos de dados são
armazenados em quantidade maiores que byte. Os operadores sobre os bits são
utilizados para manipular os bits de operandos integrais (isto é aqueles do tipo byte,
char, short, int e long).
Operador Nome Descrição
& AND Mask Bit Input Bit Output Bit
1 1 1
1 0 0
0 1 0
0 0 0

AND = 1 and 1 prouz 1. Qualquer outra combinação produz 0


Exemplo: & 00110011
11110000
========
00110000
| OR Mask Bit Input Bit Output Bit
1 1 1
0 1 1
1 0 1
0 0 0

OR = 0 or 0 produz 0. Qualquer outra combinação produz 1


Exemplo: | 00110011
11110000
========
11110011
^ XOR Mask Bit Input Bit Output Bit
1 1 0
1 0 1
0 1 1
0 0 0

XOR = 1 xor 0 ou 0 xor 1 produz 1, qualquer outra combinação


produz 0
Exemplo: ^ 00110011
11110000
========
11000011

36
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Operadores

Operadores Binários:
Operador Nome Descrição
<< Deslocamento para Desloca os bits do primeiro operando para a esquerda pelo número
esquerda de bits especificado pelo segundo operando; preenche a partir da
direita com bits 0.
>> Deslocamento para Desloca os bits do primeiro operando para a direita pelo número
direita com extensão de bits especificado pelo segundo operando. Se o primeiro
de sinal operando for negativo, preenche com 1s a partir da esquerda; caso
contrário, preenche com 0s a partir da esquerda.
>>> Deslocamento para Desloca os bits do primeiro operando para a direita pelo número
direita com extensão de bits especificado pelo segundo operando; 0s são inseridos a
de zero partir da esquerda
~ Complemento de um Para cada número negativo, cada bit de cada número é invertido
(zeros são substituídos com um e vice versa).
Exemplo: int x = 45 <=> Representação em bits (00101101)
~ x <=> Representação em bits (11010010)

Manipulação de bits e os operadores sobre bits


Exemplos de manipulação do bits:
Right Shift (>>)
128 >> 1 <=> 128/21 = 64
256 >> 4 <=> 256/2 4 = 16
-256 >> 1 <=> -256/24= -16

Left Shift (<<)


128 << 1 <=> 128 * 21 = 256
16 << 2 <=> 16 * 22 = 64

37
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Operadores

Podemos realizar operações de Pré e Pós incremento e de Pré e Pós decremento.


Veja os exemplos:
x = 10; y= 1+x O valor da variável y é 11 e de x = 11
ou
x = 10; y = x++ O valor da variável y é 11 e de x= 11

Pós-incremento:
x = 10; y = x + 1; O valor da variável y é 11 e de x = 11
ou
x = 10; y = x++ O valor da variável y é 10 e de x = 11

Vamos esclarecer antes que haja confusão que para isto precisamos separar a
operação y = x++ em duas fases.

Fase 1:
y =x Nesta fase o valor de x (10) é atribuído para y, logo y(10) = x(10)
Fase 2:
x++ Nesta fase o valor de x (10) é incrementado em 1, logo x(11)

Observe que isto ocorre devido a precedência de operadores. Primeiro é feito a


atribuição e depois o incremento.

Operador Exemplo Equivalência


++ x++, ++x x = x + 1
-- x--, --x x = x - 1
+= x += y x = x + y
-= x -= y x = x - y
Lista de *= x *= y x = x * y
Exemplos /= x /= y x = x / y
&= x &= y x = x & y
|= x |= y x = x | y
^= x ^= y x = x ^ y
%= x %= y x = x % y

38
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java
String
A classe String
Objetos String são sequências de caracteres Unicode
Exemplo: String nome = “Meu nome”
Principais métodos:
Substituição: replace
Busca: endWiths, startsWith, indexOf e lastIndexOf
Comparações: equals, equalsIgnoreCase e compareTo
Outros: substring, toLowerCase, toUpperCase, trim, charAt e length
Concatenação: concat e operador +
Exemplo: O operador + é utilizado para concatenar objetos do tipo String,
produzindo uma nova String:
String PrimeiroNome = “Antonio”;
String SegundoNome = “Carlos”;
String Nome = PrimeiroNome + SegundoNome

Exemplo: public class TestString


{ public static void main(String arg[])
{
String s1 = "Hello";
String s2 = new String("hello");
//equals
if (s1.equals(s2))
{ System.out.println("São iguais"); }
else
{ System.out.println("São Diferentes"); }
//equalsIgnoreCase
System.out.println("equalsIgnoreCase");
if (s1.equalsIgnoreCase(s2))
{ System.out.println("São iguais"); }
else
{ System.out.println("São Diferentes"); }
//Alguns métodos
//indexOf, charAt, substring
String frase = "Vovo viu a uva";
System.out.println("Posição: " + frase.indexOf('a'));
System.out.println("Nova frase: " + frase.substring(0,4));
System.out.println("A letra é: " + frase.charAt(5));
//concat
String nome = "James ”, sobrenome = "Gosling ";
String nomeCompleto = nome.concat(sobrenome);
System.out.println("O nome é: " + nomeCompleto);
}
}

39
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java
StringBuffer

Objetos StringBuffer são uma seqüência mutável de caracteres Unicode


Construtores:
StringBuffer – Cria um buffer vazio
StringBuffer(int capacidade) – Cria um buffer com a capacidade especificada
StringBuffer(String initialstring) – Cria um buffer contendo uma string informada.
Principais métodos: append, insert, delete, ...

Exemplo: public class TestStringBuffer


{
public static void main(String arg[])
{
//new instance
StringBuffer b1 = new StringBuffer();
Várias formas StringBuffer b2, b3;
de declaração b2 = new StringBuffer(25);
b3 = new StringBuffer("Teste, ");
/*para exibir o conteúdo é necessário
usar o método toString */
System.out.println("b1:" + b1.toString() );
System.out.println("b2:" + b2.toString() );
System.out.println("b3:" + b3.toString() );
b3.append("vamos testar novamente");
System.out.println("b3:" + b3.toString() );
Usando os métodos b3.insert(0, "A x B ");
para manipular System.out.println("b3:" + b3.toString() );
b3.delete(0,4);
o objeto StringBuffer System.out.println("b3:" + b3.toString() );
b2.append("Teste b2");
System.out.println("b2 Capacidade: " + b2.capacity());
System.out.println("b2 Tamanho: " + b2.length());
b2.append(b3);
System.out.println("b2: " + b2.toString() );
System.out.println("b2 tamanho: " + b2.length() );
System.out.println("b2 invertida: " + b2.reverse() );
}
}

40
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Casting (coerção de tipos)

Casting Exemplo:
public class TestCasting
{
public static void main(String args[])
{

//Exemplo 1
byte a = 1;
byte b = 3;
/*Linha errada, pois a operação adição
O resultante da soma foi promovido sofre casting implicita */
para tipo int, quando atribuímos a //byte c = i + i;
variável , que é do tipo byte, a //Correção o casting explicito
operação provoca erro, pois, a faixa byte c = (byte) (a + b);
de byte é menor que a faixa de int.
Uma vez aplicado o casting a System.out.println(c);
operação de soma é realizado e
depois é convertida para o tipo byte. //Exemplo 2 Casting implícito: (a + b)
int ia = 1;
long lb = 3;
/*
Perda de Precisão - causa erro
*/
Casting explícito: //int ic = ia + lb; //linha errada -> Casting
(byte) (a + b) //Correção o casting explicito
int ic = ia + (int) lb;
System.out.println(ic);
}
}

41
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

Java como qualquer outra linguagem de programação, suporta instruções e laços


para definir o fluxo de controle. Primeiro vamos discutir as instruções condicionais
e depois as instruções de laço.
Antes, porém, vamos entender a necessidade dos blocos. Um bloco é o conjunto
de instruções delimitadas por chaves “{... }”. Exemplo:

{
int i = 10;
System.out.println(“Hello”); bloco
i++
}

Os blocos povoam métodos, instruções condicionais, laços e etc, ou seja,


podemos encontrá-los sempre dentro de um programa Java.

Construções condicionais:
if (<expressão boolean>)
<declarações>...
else
<declarações>...

switch (<expressão>) {
case <expressao char-int>:
<declarações>...
break;
case <expressao char-int>:
<declarações>...
default:
<declarações>...
}

(<expressão boolean>) ? <expressão if-true>


: <expressão if-false>

42
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução if
Sintaxes: if (expressão boolean) instrução
Exemplo: if (x>y) System.out.println(x);

if (expressão boolean) { //Bloco de instruções }


Exemplo: if (x>y) {
System.out.println(x);
y++;
}

if (expressão boolean)
{ //Bloco de instruções }
else
{ //Bloco de instruções }
Exemplo: if (x>y) {
System.out.println(x);
y++; Mais de uma instrução
} é usado a estrutura de
else { bloco
System.out.println(y);
x++;
}

if (expressão boolean)
{ //Bloco de instruções }
else if (expressão boolean)
{ //Bloco de instruções }
else if (expressão boolean)
{ //Bloco de instruções }
else if (expressão boolean)
{ //Bloco de instruções }
else
{ //Bloco de instruções }

43
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução if
Sintaxes: (continuação)
Exemplo: if (x>y) {
System.out.println(x);
y++;
}
else if (x<y) {
System.out.println(y);
x++;
}
else {
System.out.println(y);
System.out.println(x);
}

Notamos que a instrução if pode ser utilizada de várias formas, ela pode ser
aplicada de acordo com o contexto.
O exemplo abaixo demonstra a estrutura mais popular da instrução if, ou seja, if
(expressão lógica) then {...} else {... }. Veja a lógica e também a implementação
do código:

if (saldo > 0)
{
sim status = “Positivo”;
saldo > 0 status = Positivo }
else
não {
status = “Negativo”;
}
status = Negativo
OU
if (saldo > 0)
status = “Positivo”;
else
Código
status = “Negativo”;
Lógica

44
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução if
Neste exemplo apresentaremos a instrução if com múltiplas opções. Veja a
lógica e também a implementação do código:

public class ifCompostoExemplo


{
public static void main(String args[])
saldo médio sim Limite cheque {
> 5000 =1000 int limitecheque;
int saldomedio = 15000;
if (saldomedio > 5000)
não {
limitecheque = 1000;
saldo médio > sim Limite cheque }
3000 and <=5000 else if (saldomedio > 3000 &&
=800 saldomedio <= 5000)
{
não limitecheque = 800;
}
sim else if (saldomedio > 2000 &&
saldo médio > Limite cheque saldomedio <= 3000)
2000 and <= 3000
=600 {
limitecheque = 600;
}
não
else if (saldomedio > 1000 &&
saldomedio <= 2000)
saldo médio > sim Limite cheque {
1000 and <= 2000 limitecheque = 400;
=400 }
else
não {
limitecheque = 0;
}
Limite cheque System.out.println("Limite cheque
=0 especial..." + limitecheque);
}
}

Lógica Código

45
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução switch

Switch é uma alternativa para seleção múltipla de escolha, entretanto, ela tem
algumas diferenças da estrutura if - if else. Como, por exemplo, o tipo de dado
válido na expressão é somente do tipo char e os tipos inteiros (int, byte, short,
long).

Sintaxes: Exemplo:
switch (expressao char-integer) public class switchSimplesExemplo
{ {
case expressao1: public static void main(String args[])
// instruções {
case expressao2: char opcao = 'a';
// instruções String selecao = "";
case expressao3: switch (opcao)
// instruções {
default: case 'a':
// instruções selecao += ‘a’;
} case 'b':
A instrução switch selecao += 'b';
case 'c':
selecao += 'c';
default:
selecao += "d";
}
Será impresso “abcd” System.out.println(selecao);
}
}

Após a impressão do valor, achamos mais uma diferença em relação ao if - if


else, a instrução Switch executa todas as opções após uma opção válida. Por
exemplo, se valor inicial da variável opção for igual ‘c’, teremos o seguinte
resultado para a variável selecao = ‘cd’.

46
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos
Fundamentosda
daLinguagm
Linguagem
Java
Java

Fluxo de Controle

A instrução switch.

Para que a instrução switch execute apenas uma opção, desprezando as demais é
necessário incluirmos a instrução break. Bem como o próprio nome da instrução
sugere este sai da instrução switch.

Sintaxes:
switch (expressao char-integer) public class switchBreakExemplo
{ {
case expressao1: public static void main(String args[])
// instruções {
break; char opcao = 'b';
case expressao2: String selecao = "";
// instruções switch (opcao)
break {
case expressao3: case 'a':
// instruções selecao += 'a';
break break;
default: case 'b':
// instruções selecao += 'b';
} break;
case 'c':
A instrução switch com selecao += 'c';
a instrução break break;
default:
selecao += "d";
}
Será impresso “b” System.out.println(selecao);
}
}

Note que tanto a instrução default quanto a break são opcionais, depende da
lógica a utilizada.

47
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução switch.

Neste exemplo apresentaremos a instrução switch e a instrução break com


múltiplas opções. Veja a lógica e também a implementação do código:

public class switchCompostoExemplo


{
avaliacao = public static void main(String args[])
sim
case 10 “Excelente” {
String avaliacao ="";
int nota = 8;
não switch (nota)
{
sim avaliacao = case 10:
case 9
“Ótimo” avaliacao = "Excelente";
break;
não case 9:
avaliacao = "Ótimo";
sim avaliacao = break;
case 8
“Ótimo” case 8:
avaliacao = "Bom";
break;
não
case 7:
avaliacao = "Satisfatório";
sim avaliacao = break;
case 7
“Ótimo” default:
avaliacao = "Regular";
não }
System.out.println("Avaliação: "
avaliacao = + avaliacao);
“Regular” }
}

Lógica Código

48
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

Operador Ternário

E por fim o operador ternário, Java, oferece uma maneira simples de avaliar uma
expressão lógica e executar uma das duas expressões baseadas no resultado.
O operador condicional ternário (?:). É muito parecido com a instrução iif()
presente em algumas linguagens, Visual Basic, por exemplo.
Sintaxe:

(<expressão boolean>) ? <expressão true> : <expressão false>


ou
variável = (<expressão boolean>) ? <expressão true> : <expressão false>

Neste exemplo apresentaremos uma expressão condicional simples. Veja a


lógica e implementação do código. Faça uma comparação com a instrução if-else.

sim
saldo > 0 status = Positivo {
...
não Status = (saldo > 0)?
”Positivo”:“Negativo”;
...
status = Negativo }

Código
Lógica

Lembre-se que podemos aninhar operadores e condições, pois, todos suportam


a recursividade.

49
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle
Laços
O que são laços?
Laços são repetições de uma ou mais instruções até que uma condição seja
satisfeita. A linguagem Java tem dois tipos de laços: os finitos e os infinitos.
Para os laços finitos a execução está atrelada a satisfação de uma condição, por
exemplo:

Se o valor da variável a não for igual


10.
não
então
a = 10 a++ incrementar um na variável
senão
sim
imprimir a variável valor
Imprimir a
Isto quer dizer que a instrução de
incremento vai repetir dez vezes.

Já os infinitos estes executarão sempre, independente de condição.

true a++

Em Java, temos três instruções que suportam laços ou “loops”. São elas:
while, do-while e for.

Laços:

while (<boolean-expression>)
<statements>...

do
<statements>...
while (<boolean-expression>);

for (<init-stmts>...; <boolean-expression>; <exprs>...)


<statements>...

50
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle
A instrução while.

Ela executa uma instrução ou bloco de instruções, enquanto uma determinada


condição não for satisfeita. Ela faz a validação antes de executar as instruções.

Sintaxe: Exemplo:
while (expressao boolean) public class whileExemplo2
instrução java {
public static void main(String args[])
{
int d = 10;
Este código será executado 10 while (d >= 0)
vezes, ou seja até a condição System.out.println("Contagem Regressiva " + d--);
ser satisfeita }
}

Sintaxe: Exemplo:
while (expressao boolean) public class whileExemplo
{ {
//Bloco public static void main(String args[])
} {
int d = 1;
while (d<= 10)
{
A instrução while System.out.println("7 x " + d + " = " + 7*d);
d++;
}
}
}

Este código produzirá a Tabuada do 7


Neste exemplo o laço é finito, ou seja, irá
executar até a condição estar satisfeita

51
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução while.

Os exemplos abaixo demonstram como tornar um laço infinito usando a instrução


while, provavelmente isto não deverá acontecer, todavia, pode ser um pequeno erro
de lógica, inversão de valores ou uma condição que nunca será satisfeita.

Exemplo 1:
...
int d = 1;
while (d > 0)
{
System.out.println("7 x " + d + " = " + 7*d);
d++;
}
...

Exemplo 2:
...
while (true)
{
System.out.println(d++);
}
....

52
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução while.

O exemplo abaixo exibe a lógica e a implementação do código de um laço finito


usando a instrução while.

não
valor < 20 Valor++ {
...
while(valor <20) valor++
sim
System.out.println(valor);
Imprime valor ...
}
Sai do Laço

Lógica Código

53
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução do-while.

Ela tem uma pequena diferença da instrução while, enquanto a instrução while
verifica a expressão boolean (lógica) antes e somente depois executa a instrução
ou o bloco de instruções, a instrução do-while executa primeiro e depois verifica a
condição.

Sintaxe:
Exemplo:
do public class dowhileExemplo
instrução java {
while(expressão boolean) public static void main(String args[])
{
long d=10;
Este código será executado 10 do
vezes, ou seja até que a System.out.println(d++);
condição seja satisfeita while (d <=20);
}
}

Sintaxe: Exemplo:
do { public class dowhileExemplo2
//Bloco {
} public static void main(String args[])
while(expressão boolean) {
int d = 100;
do
A instrução do-while {
primeiro executa System.out.println("Faixa " + Math.random()*d);
as instruções que d++;
}
estão dentro de bloco
while (d <=110);
e depois verifica a }
expressão boolean }

54
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução do-while.

O exemplo abaixo exibe a lógica e implementação do código de laço finito usando a


declaração do-while.

...
Valor++ do
não {
valor++
System.out.println(valor);
Imprime valor }
Valor < 20 while(valor <20)
...
sim

Código
Lógica

Agora faça uma comparação entre a instrução while e do-while:

não
valor < 20 Valor++ {
...
while(valor <20) valor++
sim
System.out.println(valor);
Imprime valor ...
}
Sai do Laço

Lógica Código

55
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

A instrução for

A instrução for é a mais popular entre as instruções de laço. A instrução for como as
demais instruções de laços repetem uma instrução ou bloco de instruções até que
determinada condição seja satisfeita.

Sintaxes:
for(valor-inicial1, valor-inicial2 ; condição; valor de incremento/decremento)
instrução java;
for(valor-inicial; condição; valor de incremento/decremento)
{
//Bloco de instruções
}
for(;condição; valor de incremento);
for(l;; valor de incremento);
for();

onde:
valor-inicial - valor de inicio (esta variável que pode ser definida dentro do for ou
fora).
Exemplo:
int x;
(for x=1;x<10;x++) instrução Java
ou
(for int x=1;x<10;x++) instrução Java

condição: é expressão lógica, Exemplo:


(for x=1;x<10;x++) instrução Java

valor de incremento: valor que incrementaremos ou decrementaremos


(for x=1;x<10;x--) instrução Java

56
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle
A instrução for

Veja abaixo mais exemplos, desta vez, com algumas variações possíveis da
instrução for:

public class forExemplo1


Sem declarar {
valor-inicial public static void main(String args[])
{
int d=170;
for(;d <=190; d++) System.out.println("Faixa 180-190 : " + Math.random()*d);
Sem condição. for(d=200; ;d++)
A condição está {
associado a System.out.println("Faixa 200-210: " + Math.random()*d);
if (d>210) break;
instrução if
}
for(d=210; d < 220;)
Sem valor de {
System.out.println("Faixa 210-220: " + Math.random()*d);
incremento ou d++;
decremento. }
int i=10;
for(d=220; d <=230; d++)
{
For aninhados System.out.println("Faixa 220-230 " + Math.random()*d);
for(; i <=20; i++)
System.out.println("Valor de i " + i);
}
for(i=40; i >= 30; i-=2)
{
Decrementado
System.out.println("Valor de i 40-30 " + i);
de dois em dois }
}
}

Note que a instrução break pode ser usada para sair de instrução de laço (while,
do-while e for).

57
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle
A instrução for

O exemplo abaixo demonstra a lógica e implementação do código para a instrução


for:

i=10
..
for(i=10; i >= 0; i-=2)
{
sim System.out.println("Valor
i >=0 de i 10-0 " + i);
}
...
não
OU
Imprime i
..
for(i=10; i >= 0; i-=2)
System.out.println("Valor
de i 10-0 " + i);
i=i-2 ...

Lógica Código

Agora faça uma comparação entre a instrução do while, do-while e for. Quem
será mais rápido ?

58
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

Label (rótulo)

A linguagem Java permite a criação de rótulo (bloco) chamada Label. Este bloco tem
um conjunto de instruções que podem ser executadas.

Sintaxe:
<nome-da-label>:
instrução java
ou
<nome-da-label>:
{
//Bloco de instruçõe
}

Exemplo:

public class labelExemplo


{
public static void main(String args[])
{
int d=1;

label_one:
for(d=1; d <=10; d++)
Veja os labels System.out.println("Faixa de 0..10: " +d);
label_two:
{
for(; d <=20; d++)
System.out.println("Faixa de 10..20: " +d);
}
}
}

59
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Fluxo de Controle

Continue

Algumas vezes precisamos abandonar a execução de laço ou recomeçar um


determinado label. Para parar ou abandonar um “loop” antes do final da execução,
usamos o comando break.
Para abandonar um “loop” ou label e continuar a execução de um outro label, por
exemplo, utilizaremos o comando continue. Este comando similar uma instrução goto

Sintaxe:
continue;
or
continue label_name;

Exemplo:

public class labelExemplo1


{
public static void main(String args[])
{
label_a:
for(int d=1; d <=10; d++)
{
System.out.println("Faixa A de 0..10: " +d);
for(int i=10; i<20;i++)
{
System.out.println("Resto: " + d%i);
if ( (d%i)>0) continue label_a;
}
}
}
}

60
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Arrays

Os arrays são objetos. Eles devem possuir um tamanho definido no momento de


sua declaração, por exemplo:
int[ ] arrayInt = new int[5], ou
int[ ] arrayInt
arrayInt = new int[5]

Os elementos de array são acessados pelo índice, que sempre começa com valor
0. Não são permitidos índices inválidos,pois, estes resultam em exceção.
ArrayOutOfBoundsException.
Os arrays podem receber variáveis do tipo primitivo (int, double, char, boolean,
short e etc) ou do tipo referência, objetos, (String, Double, Integer e etc).
Quando um Array é redimensionado todos os elementos são perdidos.
Exemplo:
float ArrayReDim[ ] = new float[5];
ArrayReDim[ ] = new float[15];
Exemplo: Inicialização de Arrays

Exemplo 1 Exemplo 2
String nomes[ ]; String nomes[ ] = {"Duke", "Jane","Tarzan"};
nomes = new String[3]
names[0] = "Duke";
names[1] = "Jane";
names[2] = "Tarzan";
Exemplo 3 Exemplo 4
MinhasDatas dates[ ]; MinhasDatas dates[ ] = { new MinhasDatas[2], new
dates = new MinhasDatas[2]; MinhasDatas(22, 7, 2000) , new MinhasDatas(01, 4,
dates[0] = new MinhasDatas(22, 7, 2000); 1999); }
dates[1] = new MinhasDatas(01, 4, 1999);

Arrays Multi-Dimensionais:
Declaração correta:
double duplaDim [ ] [ ] = new double [4] [ ];
duplaDim [0] = new double [1];
duplaDim [1] = new double [2];
duplaDim [3] = new double [3];
Declaração Incorreta:
double duplaDim [ ] [ ] = new double [ ] [4 ];

61
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Arrays

Propriedades:
Length = retorna a quantidade de elementos de um Array
Exemplo:
int listaNum = new int[20]
for(int i=0; i < listaNum.length; i++ )
{ System.out.println(listaNum[i]); }

Principais Métodos:
arraycopy = faz cópia de array A para o B.

Exemplos:

public class TestArray1 {


public static void main (String args [ ])
{
Declara e atribui os
int[] thisArray = {1,2,3,4,5,6,7,8,9,10};
valores para thisArray
for (int i =0; i < thisArray.length; i++)
{ Imprime no
System.out.println("Conteúdo" + thisArray[i]); console os itens
} do thisArray
}
}

public class TestArray2 {


public static void main (String args [ ])
{
String[] estadosul = new String[3];
Declara e atribui os estadosul[0]="RS";
valores para array estadosul[1]="SC";
estadosul[2]="PR";
for (int i =0; i < estadosul.length; i++)
Imprime no console os {
itens do array System.out.println("Conteúdo " + estadosul[i]);
}
}
}

62
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Arrays

Método arraycopy:

Permite fazer cópias dos dados array de um array para outro.

Sintaxe:
arraycopy(Object origem,
int IndexOrigem,
Object destino,
int IndexDestino,
int tamanho)

Array de origem array1 J A V A L I

J A V A Array de destino array2

arraycopy(array1, 0,array2, 0, 4);

public class TestArrayCopy {


public static void main(String[] args) {
char[] array1 = { 'j', 'a', 'v', 'a', 'l', 'i'};
char[] array2 = new char[4];

System.arraycopy(array1, 0, array2, 0, 4);


System.out.println(new String(array2));
}
}

63
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Arrays

Método Sort

Para ordenar um array, usamos o método sort da classe java.util.Arrays


Exemplo:

import java.util.*;
public class TestArraySort {

public static void main(String[] args) {


int[] numero = {190,90,87,1,50,23,11,5,55,2};
//Antes da ordenação
displayElement(numero);
//Depois da ordenação
Arrays.sort(numero);
displayElement(numero);
}

public static void displayElement(int[] array)


{
for(int i=0;i < array.length; i++)
System.out.println(array[i]);
}

64
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Passagem de Parâmetros
Parâmetros de inicialização:

Podemos passar parâmetro de inicialização para o método “main” (principal) através da


linha de comando. Veja o fragmento de código:

...
public static void main(String args[]) {
System.out.println(args[0]);
}
...

Exemplo de Passagem de valores:


java NomedaClass Lista de Valores
java TestParam 01 02 03
Note que espaço em branco é a separação entre os itens, no exemplo, acima temos três
itens passados. Vale lembrar que o tipo de dado destes parâmetros é String, por
definição da linguagem.

Para passar valores que tem nome composto acrescente aspas.


java TestParam “Jose Maria” Maria Joao

65
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

A classe Math

A classe Math contém um grupo de funções matemáticas e estatísticas.

Principais métodos:
Truncar: ceil, floor e round
Variação: max, min, e abs()
Trigonométricas: sin, cos, tan, asin, acos, atan. toDegrees e toRadians
Logaritmo: log e exp
Outras: sqrt, pow e random
Exemplos:
double d = 2;
System.out.println(Math.sqrt(d));

Exemplo:

public class TestSqrt


{
public static void main(String arg[])
{
double d = 2D;
System.out.println("A raiz quadrada de "+ d + " " +
Math.sqrt(d));
System.out.println("O valor arrendondado "+ d + " " +
Math.round(Math.sqrt(d)));
}
}

66
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Empacotamento de Classes

É possível trabalhar com vários tipos de dados, inteiros, ponto flutuantes, texto, lógico
e etc. Todavia em alguns casos há a necessidade de fazer conversão de um tipo de
dado para outro. Bem, começaremos com a conversão de tipos primitivos para tipo
referência (objetos), esta operação também é chamada de Wrapper Class.

Veja abaixo a tabela que associa os tipos.

Tipo primitivo
boolean byte Char short int long float double

Boolean Byte Character Short Integer Long Float Double


Tipo referência

Exemplos:

public class TestWrapperClass {


public static void main (String args [ ])
{
int pInteger = 500; // Tipo primitivo
Integer wInteger = new Integer(pInteger); // Wrapper Class
int p1 = wInteger.intValue();
//Conversão de valores:
String valueStr = "10";
double d1 = Double.valueOf(valueStr).intValue();
//ou
double d2 = Double.parseDouble(valueStr);
}
}

67
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Conversão de Tipos

Uma lista de exemplos de conversão de um tipo para outro tipo e por aí vai...

Convertendo dados em Java de um tipo para outro.

> Convertendo String em integer:


int variavel = 42;
String str = Integer.toString(variavel);
ou
int variavel = 42;
String str = "" + variavel;
ou
int variavel = 42;
String str = String.valueOf(variavel);

> Convertendo String em Long:


long variavel = Long.parseLong(str);
ou
long variavel = Long.valueOf(str).longValue();

> Convertendo String em Double:


double variavel = Double.valueOf(str).doubleValue();

> Convertendo String em Float:


float variavel = Float.valueOf(str).floatValue();

> Convertendo Integer em String:


String str = “14”;
int var = Integer.parseInt(str);
ou
String str = “14”;
int var = Integer.parseInt(str);
ou
String str = “14”;
int var = Integer.valueOf(str).intValue();

68
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Conversão de Tipos

Mais exemplos:

> Convertendo Integer em código ASCII:


char c = 'C';
int i = (int) c;

> Convertendo Double em String:


String str = Double.toString(i);

> Convertendo Long em String:


String str = Long.toString(l);

> Convertendo Float em String:


String str = Float.toString(f);

> Convertendo Decimal em Hexadecimal:


int i = 12;
String hexstr = Integer.toString(i, 16);
ou
String hexstr = Integer.toHexString(i);

> Convertendo Decimal em Binário:


int i = 12;
String binstr = Integer.toBinaryString(i);

> Convertendo Hexadecimal em Integer:


int i = Integer.valueOf("B8DA3", 16).intValue();
ou
int i = Integer.parseInt("B8DA3", 16);

> Convertendo Boolean em Integer:


i = (b)?1:0;

69
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

A referência this
O Java associa automaticamente a todas as variáveis e métodos referenciados com a
palavra reservada this. Em alguns situações torna-se redundante o uso do this.
Aplicação: - Impedir ambigüidade de nome de variáveis e
- Fazer referência a própria classe
Restrição: Não pode ser aplicada a métodos estáticos, por exemplo, o método main.
Exemplo:
Existem casos em se faz necessário o uso da palavra this. Por exemplo, podemos
necessitar chamar apenas uma parte do método passando uma instância do argumento
do objeto. (Chamar um classe de forma localizada);
Birthday bDay = new Birthday(this);

public class PessoaJuridica extends Pessoa {


public PessoaJuridica()
{
super("ACME");
}
public static void main(String args[])
{
PessoaJuridica pf = new PessoaJuridica();
pf.setIdade(10);
System.out.println("idade: " + pf.getIdade());
}
public String getNome()
{
return "";
};
public int getIdade()
{ return idade; }
public void setIdade(int idade)
{ this.idade = idade; }
}

Na classe PessoaJuridica, o uso da palavra this é para


evitar ambigüidade. Note que no método setIdade, o
parâmetro chama-se idade e o atributo também tem o
mesmo nome, ou seja, o mesmo identificador, neste
caso o this separa o atributo do parâmetro.

70
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções
O que são coleções?

Coleções (também conhecidas como container) é um simples objeto que pode agrupar
múltiplos elementos. Coleções são utilizadas para armazenar, recuperar e manipular
dados. Os métodos são responsáveis por realizar as operações. A estrutura das
coleções inclui uma variedade de recursos que simplificam o desenvolvimento. Essa é
uma implementação da noção de reúso de código. Um exemplo de coleção poderia ser
uma lista de nomes e telefones.

Hashtable (API: Java.util)

A tabela de hash é uma estrutura de dados que permite procurar os itens armazenados
em tabela utilizando uma chave associada. O formato padrão de entrada de dados na
tabela é chave e valor.
Para construir uma tabela de hash em Java, devemos criar um objeto Hashtable,
utilizando o construtor Hashtable.
Para adicionar elementos na tabela usaremos o método put, put(object key, Object
value). Este método é da classe Hashtable. Para recuperar o elemento usado como
chave, devemos usar o método get, get(object key). Para remover um elemento
usamos o método remove.
Exemplo:
API import java.util.*;
public class TestHashTable
{
public static void main(String Arg[])
{
Hashtable table = new Hashtable();
table.put("1", "Joao");
Implementação table.put("2", "Jose");
de tabela Hash table.put("3", "Maria");
e uso dos métodos table.put("4", "Marta");
put e get table.put("5", "Pedro");
table.put("6", "Mateus");
String find = (String) table.get("4");
System.out.println(find);
}
}

71
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções

Enumeration (API: Java.util.Enumeration)

Retorna uma enumeração de uma coleção (Tabela Hash, por exemplo) especificada.
Principais métodos: hasMoreElements e nextElements.
Exemplo:

import java.util.Enumeration.*;
API
import java.util.*;
public class EnumerationExemplo
{
public static void main(String Arg[])
{
Hashtable table = new Hashtable();
table.put("1", "Joao");
table.put("2", "Jose");
Tabela Hash table.put("3", "Maria");
e métodos table.put("4", "Marta");
table.put("5", "Pedro");
table.put("6", "Mateus");

Usando a Interface Enumeration e = table.elements();


Enumeration, podemos while(e.hasMoreElements()){
imprimir todos os String valor = (String) e.nextElement();
valores contidos System.out.println(valor);
na tabela Hash }
}
}

import java.util.Iterator.*;
... Opcionalmente podemos usar
Iterator i = table.values().iterator(); Iterator que tem a funcionalidade
while(i.hasNext()){ parecida com Enumeration
String valor = (String)i.next();
System.out.println(valor);
}

72
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções
Vector

Exemplo:

API import java.util.*;

public class TestVector


{
public static void main(String Arg[])
{
Declaração do Vector Vector v = new Vector();
Integer y;
for(int x=0;x<5;x++)
Adiciona valores ao
{
Vector. Note que estes
y = new Integer(x);
valores são do tipo referência,
v.addElement(y);
ou seja, objetos
}
Object[] objArray = v.toArray();
Converte um Vector for(int x=0;x<5;x++)
para um array . {
System.out.println(objArray[x]);
}
}
}

Exercício: Use Enumeration para listar todos os elementos de Vector.

73
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções

ArrayList ( API: Java.util).


ArrayList é array dimensionável da Interface List parecido com Vector. No exemplo
abaixo é permitido que os valores sejam duplicados, porém, desordenados. Principais
métodos: add, remove, clear, size, isEmpty, get, set, iterator.

Exemplo:

API import java.util.*;


public class ListExemplo {
public static void main(String[] args) {
Declaração do ArrayList List list = new ArrayList();
list.add("um");
Inserção de valores na lista. list.add(new Integer(4));
Veja que estes valores são objetos list.add("terceiro");
list.add(new Integer(4));
System.out.println(list);
Imprime os valores da lista
Vector v = new Vector();
Integer y;
for(int x=0;x<5;x++)
Uma nova coleção {
y = new Integer(x);
v.addElement(y);
}
Uma outra construção para a
lista, neste caso ela recebe List listVector = new ArrayList( v );
uma coleção como argumento System.out.println(listVector);
}
Imprime todos os }
valores da lista

74
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções

HashSet (API: Java.util)

A classe HashSet Implementa a interface Set, ela também tem suporte da


HashTable. Ela é uma coleção que não pode conter elementos duplicados.
Principais métodos: add, clear, remove, size, iterator e isEmpty.

Exemplo:

import java.util.*;
API
//Com ordem e sem repetição
public class SetExample {
public static void main(String[] args) {
Declaração do HashSet Set set = new HashSet();
set.add(”dois");
set.add("3rd");
Inserção de valores na lista. set.add(new Float(11.1F));
Veja que estes valores são objetos set.add(”quarto");
set.add(new Float(11.1F));
System.out.println(set);
Imprime os valores da lista }
}

75
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Fundamentos da Linguagem Java

Coleções

76
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Pacotes

Pacotes

A linguagem Java é estruturada em pacotes, estes pacotes contém classes que por
sua vez contém atributos e métodos. Pacote é forma de organização da linguagem
Java, prevenindo de problemas como a repetição de identificadores (nomes) de
classes e etc.
Podemos usar a estrutura de pacotes para associar classes com semântica
semelhante, ou seja, classes que tem objetivo comum. Por exemplo, colocaremos em
único pacote todas as classes que se referem a regras de negócios.
Exemplo:

Aplicação

Interface de Usuário

Regras de Negócios Controle

Fisicamente os pacotes tem a estrutura de diretório e subdiretório, isto quer dizer


que a Aplicação terá a seguinte formato:

Aplicação

Regras de Negócios

Interface de Usuário

Controle

77
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Pacotes

Pacotes

Import
A instrução import faz importação para o arquivo fonte (.java) das classes indicadas, cujo o
diretório base deve estar configurado na variável de ambiente: CLASSPATH.
Sintaxe: import <classes>;
Exemplos:
Substituindo os pontos por barras teríamos o caminho

import java.awt.Button; import java/awt/Button;

Aqui estaríamos importando somente o objeto Button


import java.awt.*;
Neste caso estaríamos importando todos objetos contidos na classe

Package
Esta instrução deve ser declarada na primeira linha do programa fonte, esta instrução serve
para indicar que as classes compiladas fazem parte do conjunto de classes (package), ou
sejam um pacote, indicado pela notação path.name (caminho e nome do pacote).
Sintaxe: package <path.name>;

1 - Crie um subdiretório, Teste package mypck;


exemplo mkdir mypck. public class ClassPkg
mypck {
2 - Dentro deste subdiretório --- public ClassPkg()
--- ClassPck.class
escreva a classe ClassPkg {
(inclua ---
TestPck.class System.out.println("Teste de package...");
---
instrução package na primeira }
linha. (Veja exemplo ao lado) }
3 - No diretório corrente Teste, import mypck.*;
escreva a classe TestPkg, não public class TestPkg
esqueça de incluir a instrução {
“import”. public static void main(String args[])
{
4 - Faça a compilação a partir
ClassPkg p = new ClassPkg();
do diretório Teste, usando a }
seguinte linha de comando: }
java -d . TestPck.java

78
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Acessibilidade

Acessibilidade ou Visibilidade

Os níveis de controle tem o seguinte papel de tornar um atributo, um método ou classe


visível ou não.
Exemplo:
Se um atributo foi declarado dentro de uma classe chamada TestA e este atributo tem o
nível de controle private. Somente esta classe poderá fazer acesso a este atributo, ou seja,
somente classe TestA o enxergará, todas as demais, não poderão fazer acesso direto a
este atributo.

public class TestA {


private int a=1;
}

public class TestB extends


TestA{ TestB.java:3: a has private access in TestA
private int b=a;
private int b=a; ^
}

Para contornar a situação poderíamos fazer duas coisas, a primeira: alterar o nível de
controle do atributo a, na classe TestA, para public, desta forma a classe TestB o
enxergaria. Todavia, as boas práticas de programação não recomendam fazer isto.
A segunda: é uma maneira mais elegante de resolvemos o problema, podemos criar
métodos públicos na classe TestA, por exemplo, getA e setA, aí sim, através destes
métodos seria possível manipular o atributo da classe TestA.

A linguagem Java tem para os atributos e métodos quatro níveis de controles: public,
protected, default e private.
Para classes tem dois níveis: public e default (também chamado de pacote ou de
friendly).
Este níveis de controle são os responsáveis pela acessibilidade ou visibilidade de
atributos, e métodos.

79
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Acessibilidade

Acessibilidade ou Visibilidade

A tabela abaixo demonstra a acessibilidade para cada nível de controle

Modificador Mesma Mesmo SubClasse Universo


Classe Package
Public sim sim sim sim
Protected sim sim sim não
Private sim não não não
Default sim sim não não

Exemplos:

public class class protected class

public sublass public sublass public sublass

default protected
public

80
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Características Avançadas

Modificador static
Exemplo de compartilhamento de variável static. Apesar de ter dois objetos da classe
(teste1 e teste2). Quando fazemos a impressão da variável esta tem o valor que atribuído
pelo primeiro objeto teste1.
Exemplo:

public class TestVarStatic {

private static int varStatic;


private int varNoStatic;

public static void main(String[] args) {


TestVarStatic teste1 = new TestVarStatic();
System.out.println("static = " + teste1.varStatic);
System.out.println("No static = " + teste1.varNoStatic);
teste1.varNoStatic++;
teste1.varStatic++;
TestVarStatic teste2 = new TestVarStatic();
System.out.println("static = " + teste2.varStatic);
System.out.println("No static = " + teste2.varNoStatic);
}
}

Teste1:
static = 0
No static = 0
teste2:
static = 1
No static = 0

81
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Características Avançadas

Modificador static
Restrições:
- Métodos static
- não pode ter referência this.
- não pode ser substituído ("overridden") por um método não static
- pode somente fazer acesso dados static da classe. Ele não pode fazer acesso a
não static.
- pode somente chamar métodos static. Ele não pode chamar métodos não static

Exemplo:

public class TestMetodoStatic {


private static int valor;

public TesteMetodoStatic(){
valor=0;
}

public static void main(String[] args) {


addSoma(2,2);
addSoma(3,2);
addSoma(4,2);
displayTotal();
}

public static void addSoma(int a, int b){


valor += (a * b);
}

public static void displayTotal(){


System.out.println("Total = " + valor);
}
}

82
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Características Avançadas

Modificador Final (constantes)


Para declarar uma variável, um ou uma classe como constante usamos o modificador
final.
Entretanto, o uso deste modificador deve obedecer a certas restrições como:
• Uma classe constante não pode ter subclasses;
• Um método constante não pode ser sobrescrito;
• O valor para variável constante deve ser definido no momento da declaração ou através
de um construtor, para variáveis membro, uma vez atribuído o valor, este não mudará
mais.

Veja o exemplo:

public final class TestFinalPai


{
private final int VALOR;

public TestFinalPai(int V)
{
VALOR = V;
}

public class TestFinalFilho extends TestFinalPai


{
public TestFinalFilho() {
super(10);
Quando compilamos
a classe um erro é gerado }
public static void main(String args[])
{

}
}

TestFinalFilho.java:1: cannot inherit from final TestFinalPai


public class TestFinalFilho extends TestFinalPai

83
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Características Avançadas

Modificador Final (constantes)


Veja o exemplo:

• TestFinal1: O valor é atribuído através de um construtor, note que a variável é membro


da classe.
• TestFinal2: O valor é atribuído no método, pois, neste caso a variável é um local

public class TestFinal1


{
private final int VALOR;

public TestFinal1()
{
VALOR = 0;
}
public static void main(String args[])
{
TestFinal1 tf= new TestFinal1();
System.out.println(tf.VALOR);
}
}

public class TestFinal2


{
public static void main(String args[])
{
final int VAL;
VAL =0;
System.out.println(VAL);

}
}

Convenção, para variáveis constantes (final), o nome da variável deve ser escrito
em maiúsculo.

84
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

85
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Classe

O que é uma Classe?


“Uma classe descreve um conjunto de objetos com propriedades e comportamentos
semelhantes e com relacionamentos comuns com outros objetos”

As classes são a parte mais importante de um sistema orientado a objetos.


Usamos as classes para capturar o vocabulário do sistema que está em
desenvolvimento. Essas classes podem incluir abstrações que são parte do domínio do
problema, assim como as classes que fazem implementação de operações. Podemos
usar ainda as classes para representar itens de software, de hardware e até itens que
sejam somente conceituais.

Exemplo:
A classe Pessoa deverá ter atributos e métodos comuns

Nome da Classe
Pessoa
Nome
Idade Atributos
GetNome
GetIdade Métodos

O nome da classe deve ser identificador único em conjunto de classes, este nome deve
ser substantivo no singular. Exemplo: Produto, Cliente e etc

As classes:podem ser concreta ou abstrata

Sintaxe:
<modificador> class <nome da classe> {
[ <declaração de atributos>]
[ <declaração de construtores>
]
[ <declaração de método>]
}
86
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Classe

Exemplo:
A classe Pessoa. Classe concreta.

public class Pessoa { Exemplo de diagrama de classe


usando Rational Rose (notação Unified)
//Atributos
private String nome; Pes s oa
private int idade; n o m e : S tri n g
i d a d e : In te g e r
//métodos
public String getNome(){ g e tNo m e ()
return nome; } se tNo m e ()
g e tId a d e ()
se tId a d e ()
public void setNome(String
nome){
this.nome = nome; }

public int getIdade(){


return idade; }

public void setIdade(int


idade){
this.idade = idade; }
}

Classe Concreta:
É uma classe que tem assinatura e a implementação de métodos.

87
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Classe

Exemplo:
A classe Pessoa. Classe Abstrata

public abstract class Pessoa


{
protected String nome;
Se uma classe possui um método
public abstract String getnome(); abstrato a classe também será
abstrata.
public abstract void setnome(String nome);

Observe que os métodos não implementados. Simplesmente assinados.

Diferenças ente Classe Abstrata e Concreta:

Classe Abstrata Classe Concreta

Os métodos podem ser assinados e


Os métodos devem ser somente assinados
implementados

Não pode sofrer “instance” Poder sofrer “instance”

Relacionamento somente através de herança Todos os tipos de relacionamentos

Classe Abstrata:
Em um relacionamento onde a classe Pai é abstrata e a filha é uma classe
concreta esta deve implementar os métodos assinados na classe Pai.

Classe Abstrata:
Uma classe abstrata pode conter métodos abstratos (aqueles que somente tem a
assinatura de métodos sem implementação) e métodos concretos (aqueles que
tem assinatura).

88
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Objetos

O que são Objetos ?


São qualquer coisa na natureza que possua propriedades (características) e
comportamentos (operações).
Exemplo: uma pessoa, uma cão e etc

Orientação a Objetos:
O termo orientação a objetos significa organizar o mundo real como uma coleção de
objetos que incorporam estrutura de dados e um conjunto de operações que
manipulam estes dados.

Estrutura de um objeto
Objetos combinam propriedades (atributos) e comportamentos (operações).

Podemos dizer que objeto é espécie da classe, ou seja, uma “instance” da classe

Exemplos de Objetos:

Classe: Cliente e objetos

Cliente
nome
cpf
idade

Cliente: clientemulher Cliente: clientehomem


nome = Marina nome = Felipe
cpf = 022.200.708-12 cpf = 039.217.908-22
idade = 16 idade = 22
89
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Métodos

Métodos são os comportamentos de um objeto. A declaração é feita da seguinte


forma:

< modificador > < tipo de retorno > < nome > ( < lista de argumentos > )
< bloco >

< modificador > -> segmento que possui os diferentes tipos de modificações
incluíndo public, protected, private e default (neste caso não precisamos declarar o
modificador).
< tipo de retorno > -> indica o tipo de retorno do método.
< nome > -> nome que identifica o método.
< lista de argumentos > -> todos os valores que serão passados como
argumentos.

Exemplos: public void somaDias (int dias) { }


private int somaMes(int mês) { }
protected String getNome() { }
int getAge(double id) { }

public class CalculaData {


private int day, month, year;
public float calcDays(int age )
{
método
return 365.25F * age;
}
}

90
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Métodos
Método é a implementação de uma operação. As mensagens identificam os métodos
a serem executados no objeto receptor.
Para chamar um método de um objeto é necessário enviar uma mensagem para ele.
Por definição todas as mensagens tem um tipo de retorno, por este motivo em Java,
mesmo que método não retorne nenhum valor será necessário usar o tipo de retorno
chamado “void” (retorno vazio).

ContaCorrente public class ContaCorrente {


private int conta=0;
Conta private double saldo=0;
saldo
setDeposito public double getSaldo(){
getSaldo return saldo;
setSaque }

public void setDeposito(int valordeposito)


{
return saldo +=valordeposito;
}

public void setSaque(double valorsaque)


{
return saldo -=valorsaque;
}
}

91
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação
Orientação a Objetos
Orientada a Objetos

Construtores

O que são construtores?


Construtores são um tipo especial de método usado para inicializar uma “instance”
da classe.
Toda a classe Java deve ter um Construtor. Quando não declaramos o
“Construtor default”, que é inicializado automaticamente pelo Java. Mas existem
casos que se faz necessário a declaração explícita dos construtores.

O Construtor não pode ser herdado. Para chamá-lo a partir de uma subclasse
usamos a referência super.

Para escrever um construtor, devemos seguir algumas regras:


1ª O nome do construtor precisa ser igual ao nome da classe;
2ª Não deve ter tipo de retorno;
3ª Podemos escrever vários construtores para mesma classe.

Sintaxe:
[ <modificador> ] <nome da classe> ([Lista de argumentos]){
[ <declarações> ]
}

Exemplo:

public class Mamifero {


private int qdepernas;
private int idade;

public Mamifero(int idade)


{
this.idade = idade;
}

//Métodos
}

92
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Atributos e variáveis

Os atributos são pertencentes a classe, eles podem ser do tipo primitivo ou


referência (objetos), os seus modificadores podem ser: public, private, protected ou
default.
O ciclo de vida destes atributos estão vinculados ao ciclo de vida da classe.
Variáveis Locais:
São definidas dentro dos métodos. Elas têm o ciclo de vida vinculado ao ciclo do
método, também são chamadas de variáveis temporárias

Sintaxe:
[<modificador>] <tipo de dado> <nome> [ = <valor inicial>];

Exemplo:

public class Disciplina {


private int cargaHoraria;
private String nome;
Atributos

public Disciplina(String nome, int


cargaHoraria){
this.nome = nome;
this.cargaHoraria =
calcCargaHoraria(cargaHoraria);
}
public String getNome(){
return nome;
}
public int getCargaHoraria(){
return cargaHoraria;
}
public int calcCargaHoraria(int
qdeHoras) {
int horasPlanejamento = (int) ( qdeHoras * 0.1); Variáveis
return cargaHoraria = temporárias
horasPlanejamento + qdeHoras;
}
}

93
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Exemplo de Classe

1 Livro

Legenda:
1 – Objeto no mundo real
2 – Modelo de implementação da classe Livro
3 – Codificação da classe Livro

3
public class Livro extends Object {
public Livro() {
}
2 private int isbn;
L i vr o private String titulo;
private String autor;
is b n
t it u lo public int getISBN(){
a u to r return isbn;
}
g e t IS B N ( ) public void setISBN(int isbn){
this.isbn=isbn;
s e t IS B N ( ) }
g e t T it u lo () public String getTitulo(){
s e t T it u lo () return titulo;
g e t A u t o r() }
s e t A u t o r() public void setTitulo(String titulo){
this.titulo=titulo;
}
public String getAutor(){
return autor;
}
public void setAutor(String autor){
this.autor=autor;
}
}
}

Criar o objeto Livro

94
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Abstração de Dados

Para discutirmos sobre classes abstratas é necessário falarmos sobre a abstração de


dados.

O que é abstração?
Podemos dizer abstração é generalização.
Qual é a função da abstração ?
A função da abstração é capturar as propriedades e os comportamentos essenciais,
como se fosse uma fatoração, desta forma determina-se o que é importante e o que
não é.

Aeronave Mamífero

Caça Carga Passageiros Vaca Urso Cavalo

As classes Aeronave e Mamífero neste caso são abstratas e ambas representam um


domínio.

95
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Abstração de Dados

Classes Abstratas

Uma classe abstrata é uma classe que:


• Provê organização
• Não possui “instances”
• Possui uma ou mais operações (métodos) abstratas

Classe Abstrata
Pessoa
getNome()

Pessoa Pessoa
Física Jurídica
getNome() getNome()
Classe concreta

Uma operação abstrata só determina a existência de um comportamento não definindo


uma implementação. Classes Abstratas - Exemplo:

Classe Abstrata
Funcionário

Analista Programador

Classe concreta

96
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Abstração de Dados

Classes Abstratas

Classe Abstrata
Pessoa
getNome()
Classe concreta

Pessoa Pessoa
Física Jurídica
getNome() getNome()

public class PessoaFisica extends Pessoa {


public PessoaFisica(String nome)
{
super(nome);
}
public static void main(String args[])
{
PessoaFisica pf = new PessoaFisica("Duke");
pf.setIdade(10);
System.out.println("idade: " + pf.getIdade());
System.out.println("nome: " + pf.getNome());
}
public String getNome()
{ return nome; }

public int getIdade()


{ return idade; }
public void setIdade(int idade)
{ this.idade = idade; }
}

97
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Relacionamento
Ao construir as abstrações, descobrimos que são poucas as classes que trabalham
sozinhas. Em vez disso, a maioria das classes colaboram com outras classes de várias
maneiras.
Portanto, quando estamos modelando, devemos identificar as classes, atributos, métodos e
relacionamentos.
Existem alguns tipos principais de relacionamentos entre classes e objetos:
• Herança
• Associação
• Agregação
• Composição
Veja a definição de relacionamento:

Um relacionamento é a conexão entre itens. É representado graficamente como um


caminho, que tem tipos diferentes de linhas para distinguir os tipos de
relacionamentos.

Exemplo: Hierarquia de Classes

SuperClasse
Pessoa

SubClasses
Terceiro Aluno Funcionário

Professor Pessoal Pessoal


Professor
Autônomo Operacional Administrativo

Relacionamento:
1 - Pessoa é a SuperClasse de Terceiro, Aluno e de Funcionário,
estas são subclasse de Pessoa.
2 - Terceiro e Funcionário são SuperClasse de Professor e Pessoal Administrativo e de
Professor Autônomo e Pessoal Operacional respectivamente.
E estas são subclasse de Terceiro e Funcionário.

98
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Herança
Herança é o mecanismo pelo qual elementos mais específicos incorporam a estrutura e
comportamento de elementos mais gerais,

Uma classe derivada herda a estrutura de dados e métodos de sua


classe “base”, mas pode seletivamente:
• adicionar novos métodos
• estender a estrutura de dados
• redefinir a implementação de métodos já existentes

Uma classe “pai” proporciona a funcionalidade que é comum a todas as suas classes
derivadas, filhas, enquanto que uma classe derivada proporciona a funcionalidade
adicional que especializa seu comportamento.

Exemplo:

Curso
Universitário
extends

Graduação Pós-Graduação

extends

Especialização Extensão

Hierarquia de Classes

Podemos dizer que Graduação é tipo de Curso Universitário, assim como Curso de
Especialização ou de Extensão.

99
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Herança

Exemplo: Implementação- Pessoa, Aluno, Terceiro, Funcionário

public abstract class Pessoa {


protected String idPessoa;
protected int idade;
protected String nome;
public Pessoa(String nome)
{
this.nome = nome;
}
public abstract String getNome();
public void setidPessoa()
{ }
public abstract int getIdade();
public void setIdade(int idade)
{}
}

public class Terceiro extends Pessoa{ public class Aluno extends Pessoa{ public class Funcionario extends Pessoa{
private int codigoTerceiro; public Aluno(String nome) private int codigofuncionario;
public Terceiro(String nome) { public Funcionario(String nome)
{ super(nome); {
super(nome); } super(nome);
} public int getIdade() }
public int getIdade() { public int getIdade()
{ return 0; {
return 0; } return 0;
} public String getNome() }
public String getNome() { public String getNome()
{ return ""; {
return ""; }; return "";
}; } };
} }

Pessoal
Professor
Administrativo
Professor Pessoal
Autônomo Operacional

100
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Herança

Exemplo de Herança: Implementação: ProfessorAutonomo, PessoalOperacional,


Professor e Pessoal Administrativo

Pessoa

Terceiro Aluno Funcionário

public class ProfessorAutonomo public class Professor


extends Terceiro{ extends Funcionario{
public ProfessorAutonomo( public Professor(
String nome) String nome)
{ {
super(nome); super(nome);
} }
} }

public class PessoalOperacional


public class PessoalAdministrativo
extends Terceiro{
extends Funcionario{
public PessoalOperacional(
public PessoalAdministrativo(
String nome)
String nome)
{
{
super(nome);
super(nome);
}
}
}
}

101
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Simulação de Herança Múltipla

Podemos usar Interfaces para simular Herança Múltipla. O que é herança múltipla ?
Herança múltipla é quando uma classe tem mais que uma Superclasse associada e que
herde as características de todas elas. Veja a figura abaixo:

Superclasse
<<interface>> Superclasse
Mamífero Pessoa

Pessoa Física Pessoa Jurídica

Relacionamento:
Pessoa Física é tipo de pessoa, mas também é mamífero.

Na linguagem Java:
A Herança múltipla é somente permitida por contrato, neste caso a Mamífero é uma
Interface, podemos dizer que é tipo especial de classe, que não pode
ter métodos implementados, apenas as assinaturas.

<<interface>>
Mamífero

Interface:
O que é interface ?
Podemos dizer que Interface é forma mais pura de abstração. A interface fornece um
contrato entre ela a classe cliente, que pode ser classe concreta ou abstrata.
Este contrato é garantia que todos os métodos assinados na interface serão
implementados na classe cliente.
Nota: Na interface também podemos declarar constantes (public static final).

interface IProduct
{
Exemplo de Interface String getName ();
double getCost ();
}
102
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Herança Múltipla
Exemplo: Implementação da classe Pessoa, PessoaFisica e PessoaJuridica e a
interface Mamifero

public abstract class Pessoa {


protected String idPessoa;
protected int idade;
protected String nome;

public Pessoa(String nome)


{
this.nome = nome;
}
public abstract String getNome();
public interface Mamifero {
public abstract int getIdade();
final int qdeOlhos=2;
public void setIdade(int idade){ }
}
public int getQdePernas();
}

extends

implements extends public class PessoaJuridica1 extends Pessoa


{
public class PessoaFisica1 extends Pessoa public PessoaJuridica1(String nome)
implements Mamifero { {
public PessoaFisica (String nome) super(nome);
{ }
super(nome); public int getIdade()
} {
public int getQdePernas(){ return 0;
return 2; } }
public String getNome(){ public String getNome()
return “”; } {
public int getIdade(){ return "";
return 0; } };
} }

Exercício:
1 - Podemos implementar a herança múltipla na Classe Pessoa? Por que ?
2 - Por que somos obrigado a assinar ou implementar os métodos da Interface Mamifero
na classe PessoaFisica

103
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Transformando diagramas UML em código Java

Herança Múltipla
Simulação de Herança Múltipla Vejamos a codificação Java:
public class Cliente
{
String nome; Atributo
public String getNome()
{
return this.nome;
}
Métodos public void setNome(String nome)
{
this.nome = nome;
}
}

public class ClientePessoaJuridica extends Cliente public interface Pessoa


{ {
public ClientePessoaJuridica() public boolean getDependente(int dependente);
{ }
System.out.println("Nome: " + getNome());
} Assinatura do método
}

public class ClientePessoaFisica extends Cliente implements Pessoa


{
public ClientePessoaFisica()
{
setNome("Duke");
System.out.println("Nome: " + getNome());
System.out.println("Tem dependente: " + getDependente(0));
}
public boolean getDependente(int dependente)
{ Implementação do
return (dependente>0)?true:false; método assinado
} na Interface Pessoa
}

104
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

A referência super
A palavra super é usada para referenciar a super classe (classe pai), na verdade o
construtor da classe hierarquicamente superior, podemos usa-lo também para fazer
referência aos membros (atributos e métodos), da super classe.
Desta forma temos uma extensão do comportamento.

Exemplo:

public class Empregado { Super classe


private double salario;

public Empregado(){
salario=0.00;
}

public double getSalario(){


return this.salario;
}
}

public class Gerente extends Empregado { Subclasse


private double bonus = .15;
public Gerente(){
//referência ao Construtor
super();
}
public double getSalario(){
//referência ao método getSalario
return super.getSalario() +
(super.getSalario()*this.bonus);
}
}

105
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Associação
Definição de Associação:

Um relacionamento estrutural que descreve um conjunto de vínculos, em que o vínculo é


uma conexão entre objetos; o relacionamento semântica entre dois ou mais classificadores
que envolve as conexões entre seus objetos

Associação
classe classe
U s u a ri o S en ha

public class Usuario { public class Senha {


public Senha m_Senha; public Usuario m_Usuario;

Usuario() { Senha() {
} }
} }

106
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Navegação

Navegação
Seta de navegação indica o direção do relacionamento.

Pedido
Pedido tem a responsabilidade de identificar
quais são seus itens. Já os itens não tem a
responsabilidade de saber a qual pedido que
* eles pertencem.
ItemPedido

Exemplo do código Java:

public class Pedido public ItemPedido


{ {
public ItemPedido item[];
public ItemPedido()
public Pedido() {
{ }
} }
}

107
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Rolename
Definição de Role Name:

É um identificador nome do papel da associação, podendo cada ponta ter um nome


especifico.

public class Empresa {


public Pessoa Empregado;
Empresa() {
}
}

P e sso a + E m p re g a d o + E m p re g a d o r E m p re s a

1 1 ..*

public class Pessoa {


public Empresa Empregador[];

Pessoa() {
}
}

As role name neste caso são usadas identificadores dos atributos (das classes).

108
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Agregação

Definição de Agregação:

Um forma especial de associação, que especifica o relacionamento parte-todo entre o


agregado (o todo) e o componente (a parte).

Veja o exemplo abaixo: public class Roda {


public Pneu pneu;

Roda() {
}

Roda(int aro, String modelo) {


pneu = new Pneu(aro,modelo)

Roda Todo }

roda

pneu

Pneu
Parte de

public class Pneu {


public Roda roda;
Pneu() {
}
}

109
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Composição

Definição de Composição:
Uma forma de agregação com propriedade bem-definida e tempo de via coincidente das
partes pelo todo; as partes com multiplicidade não fixada poderão ser criadas após a
própria composição, mas, uma vez criadas, vivem e morrem com elas; essas partes
também podem ser removidas explicitamente antes da morte do elemento composto.

Cliente Pedido
Todo

Dados do Pedido
N• 19069 Parte de
Cliente 1 – Cliente A ItemPedido
um todo
Data: 01/01/2002

Produto

It Descrição Qt Preço
--------------------------------
01 Produto A 10 12,40
02 Produto B 01 2,40
03 Produto C 11 5,60
04 Produto D 09 2,23

110
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Multiplicidade

Definição de Multiplicidade:
A especificação de uma faixa de números cardinais, que um conjunto pode assumir.

C lie n t e P e d id o
Todo
1 0 ..*
1

Dados do Pedido 1 ..*


N• 19069 Parte de
It e m P e d i d o
Cliente 1 – Cliente A um todo
Data: 01/01/2002
*
1
P ro d u to

It Descrição Qt Preço
--------------------------------
01 Produto A 10 12,40
02 Produto B 01 2,40
03 Produto C 11 5,60
04 Produto D 09 2,23

111
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Exemplo de implementação de Composição e multiplicidade

public class Cliente { public class Pedido {


public Pedido m_Pedido[]; public ItemPedido m_ItemPedido[];
Pedido() {
Cliente() { }
} }
}

C lie n t e P e d id o
public class ItemPedido {
1 0 ..*
1
public Pedido m_Pedido;
1 ..*
It e m P e d i d o
public Produto
* m_Produto;
1
P ro d u t o

ItemPedido() {
}

public class Produto { }

public ItemPedido m_ItemPedido[];


Produto() {
}
}

112
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Exemplo de modelo de classes

<<negócio>>
<<negócio>> Produto
Cliente
<<negócio>>
Vendedor QtdeEmEstoque
SituacaoFinanceira

PercentualDeComissao
1
1

1 é realizada para
corresponde

1..*
*
<<negócio>> <<negócio>>
Venda ItemDeVenda
é realizada por é composta de
DataDaVenda QtdeVendida
* 1 1..*

<<negócio>> <<negócio>>
VendaAPrazo Prestacao
compreende
DataDeVencimento
1 1..* ValorDaPrestacao

113
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Exercício

public class NotaFiscal


{
public NotaFiscalLinha nflinha[] = new NotaFiscalLinha[3];

public static void main(String args[])


{

NotaFiscal nf = new NotaFiscal();

nf.nflinha[0] = new NotaFiscalLinha("1010","Teste item 0", 5, 200.53);


nf.nflinha[2] = new NotaFiscalLinha("2020","Teste item 1", 15, 50.43);
nf.nflinha[1] = new NotaFiscalLinha("3030","Teste item 3", 25, 30.23);

double valortotal=0;
double quantidadetotal =0;

for(int i=0;i< nf.nflinha.length ;i++)


{
System.out.print(nf.nflinha[i].item + " ");
System.out.print(nf.nflinha[i].descricao + " ");
System.out.print(nf.nflinha[i].quantidade + " ");
System.out.print(nf.nflinha[i].valor + "\n");
quantidadetotal =+ nf.nflinha[i].quantidade;
valortotal =+ nf.nflinha[i].valor * quantidadetotal;
}
System.out.println("Quantidade total..." + quantidadetotal);
System.out.println("Valor total........" + valortotal);
}
}

Complete a classe que falta e faça o diagrama de classe correspondente com seus
respectivos relacionamentos.

114
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Encapsulamento

É uma proteção adicional dos dados do objeto de possíveis modificações impróprias,


forçando o acesso a um nível mais baixo para tratamento do dados.

Operações/métodos/interface
Classe Empregado e método
pública
getSalario

Dados/Atributos/propriedades
privada O atributo salario

public class Empregado { O atributo salario somente poderá ter


private double
private double salario;
salario; um valor atribuído ou alterado,
através de método público.
public Empregado(){
salario=0.00;
}

public double getSalario(){ Através do método getSalario, que


return this.salario; tem modificador public, podemos
} manipular ou recuperar o valor do
} atributo salario.

Encapsulamento (“data hiding”)


Encapsulamento é definido como uma técnica para minimizar dependências entre
“módulos” através da definição de interfaces externas. Também conhecido como:
O fenômeno da “caixa preta”

115
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Encapsulamento
A interface (pública) de um objeto declara todas as operações permitidas (métodos)

public class Empregado {


private double salario;

public Empregado(){
salario=0.00;
}

public double getSalario(){


return this.salario;
}
}

public class Gerente1 extends Empregado


{
private double bonus = .15;
public double getSalario(){
//referência ao método getSalario
return super.getSalario() +
(super.getSalario()*this.bonus);
}
}

Todo o acesso aos dados do objeto é feito através da chamada a uma operação (método)
da sua interface.

Encapsulamento - Benefícios
- Segurança:
Protege os atributos dos objetos de terem seus valores corrompidos por outros
objetos.
- Independência:
“Escondendo” seus atributos, um objeto protege outros objetos de complicações de
dependência de sua estrutura interna

116
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Polimorfismo

Definição:
“Polimorfismo” é uma operação que pode assumir múltiplas formas, a propriedade
segundo o qual uma operação pode comportar-se diferentemente em classes diferentes”
(Rumbaugh)
O polimorfismo é o responsável pela extensibilidade em programação orientada a
objetos.

overloading

Polimorfismo

overriding

Overloading:
Possibilidade de reúso do nome do método para diferentes implementações, em tempo de
execução, a aplicação, escolherá o método adequado para cada chamada, veja o
exemplo.

TesteSoma Soma
somar(int a, int b)
somar(float a, float b)
somar(char a, char b)
somar(long a, long b))

Para cada tipo de dados existe um método, o reúso do nome do método é permitido,
entretanto a lista de argumentos deve ser diferente, veja o exemplo acima: o método
somar é definido várias vezes, entretanto com a lista de argumentos diferente, desta
forma evitaremos problemas como ambigüidade.

117
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Polimorfismo

Overrinding - Exemplo:
Empregado
setSalario()
getSalario()

Engenheiro Gerente Secretária


getSalario() getSalario() getSalario()

Diretor
getSalario()

O método setSalario é herdado da Superclasse (Empregado), entretanto para cada cargo


(tipo de empregado) ele tem uma implementação diferente. Por exemplo:
- Para Engenheiro e Secretária salário = (Dias Trabalhados x Valor hora)
- Para Gerente salário = (Dias Trabalhados x Valor hora) + Bônus
- Para Diretor salário = (Dias Trabalhados x Valor hora) + Bônus + Participação nos
lucros.

public class EmpregadoExemplo {


private double salario;

public void setSalario(int diastrabalhados,


double valorhora ){
this.salario = diastrabalhados *
valorhora * 8; public class Engenheiro extends
} EmpregadoExemplo {
public double getSalario(){ public static void main(String args[])
return this.salario; {
} Engenheiro eng = new Engenheiro();
} eng.setSalario(22, 35.00);
System.out.println(eng.getSalario());
}
}

118
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Polimorfismo

O método setSalario (continuação)

public class GerenteExemplo extends EmpregadoExemplo {


private double bonus = .15;
public static void main(String args[])
{
GerenteExemplo g = new GerenteExemplo();
g.setSalario(22, 35.00);
System.out.println(g.getSalario());
}
public double getSalario(){
return super.getSalario() + (super.getSalario()*this.bonus);
}
}

public class Secretaria extends EmpregadoExemplo {


public static void main(String args[])
{
Secretaria sec = new Secretaria();
sec.setSalario(22, 35.00);
System.out.println(sec.getSalario());
}
}

public class Diretor extends GerenteExemplo {


private double lucros = 1000.00;

public static void main(String args[])


{
Diretor d = new Diretor();
d.setSalario(22, 35.00);
System.out.println(d.getSalario());
}
public double getSalario(){
return super.getSalario() + this.lucros;
}
}

119
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Programação Orientada a Objetos

Polimorfismo

Overrinding
Uma subclasse pode mudar o comportamento herdado da Superclasse, ou seja, um método
herdado poderá ser alterado. Veja o exemplo abaixo:

Conta Bancária

getSaldo()

Conta Corrente Conta Poupança Investimentos

getSaldo() getSaldo() getSaldo()

O método getSaldo é herdado da Superclasse (Conta Bancária), entretanto para cada


tipo de Conta ele tem uma implementação diferente. Por exemplo:
- Para apurar o saldo da Conta Corrente saldo atual = (soma dos depósitos + saldo
anterior) - saques
Para a conta poupança seria saldo atual = (soma dos depósitos + saldo anterior + juros)
- saques
Para a conta de investimentos seria saldo atual = (soma dos aplicações + saldo anterior
+ juros) - resgates - ir

As subclasse podem modificar o comporamento de método herdado da super classe,


entretanto temos que seguir algumas regras:
- Manter o mesmo nome do método
- Manter o mesmo tipo de retorno
- Manter a lista de argumentos.

Exercício:
Faça a implementação das classes acima.

120
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

121
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

JavaDoc (Documentação)

Javadoc
É uma utilitário do JDK que gera a documentação dos programas java, geralmente
em formato HTML.
Localização JDK1.X/BIN/Javadoc.
Sintaxe padrão: javadoc <arquivofonte.java>

Opção Valor Descrição


-d path de saída Diretório onde será gerado os arquivos HTML
-sourcepath path Especifica o diretório raiz dos fontes ou dos Package
-public Documenta apenas variáveis e métodos públicos
-private Documenta todas as variáveis e métodos

Sintaxe: Javadoc [Opções] package/arquivo < package/arquivo>

Exemplo: javadoc M inhasClasses.class

Tags para Documentação: Usar: /** e */

Tag Declaração Class e Construtor M étodo Atributo


Interface
@see Cria um link com outra X X X X
página HTML
@deprecated Informa quais métodos X X X X
estão ultrapassados
@author Nome do Autor X
@param Documenta o parametro X X
@throws Documenta Exceções X X
@Exception
@return Documenta o returno (valor X
e tipo)

122
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

JavaDoc (Documentação)
Javadoc
usage: javadoc [options] [packagenames] [sourcefiles] [classnames]
[@files]
-overview <file> Read overview documentation from HTML file
-public Show only public classes and members
-protected Show protected/public classes and members
(default)
-package Show package/protected/public classes and
members
-private Show all classes and members
-help Display command line options
-doclet <class> Generate output via alternate doclet
-docletpath <path> Specify where to find doclet class files
-1.1 Generate output using JDK 1.1 emulating doclet
-sourcepath <pathlist> Specify where to find source files
-classpath <pathlist> Specify where to find user class files
-bootclasspath <pathlist> Override location of class files loaded
by the bootstrap class loader
-extdirs <dirlist> Override location of installed extensions
-verbose Output messages about what Javadoc is doing
-locale <name> Locale to be used, e.g. en_US or en_US_WIN
-encoding <name> Source file encoding name
-J<flag> Pass <flag> directly to the runtime system

Provided by Standard doclet:


-d <directory> Destination directory for output files
-use Create class and package usage pages
-version Include @version paragraphs
-author Include @author paragraphs
-splitindex Split index into one file per letter
-windowtitle <text> Browser window title for the documenation
-doctitle <html-code> Include title for the package index(first)
page
-header <html-code> Include header text for each page
-footer <html-code> Include footer text for each page
-bottom <html-code> Include bottom text for each page
-link <url> Create links to javadoc output at <url>
-linkoffline <url> <url2> Link to docs at <url> using package list at
<url2>
-group <name> <p1>:<p2>.. Group specified packages together in overview
page
-nodeprecated Do not include @deprecated information
-nosince Do not include @since information
-nodeprecatedlist Do not generate deprecated list
-notree Do not generate class hierarchy
-noindex Do not generate index
-nohelp Do not generate help link
-nonavbar Do not generate navigation bar
-serialwarn Generate warning about @serial tag
-charset <charset> Charset for cross-platform viewing of
generated documentation.
-helpfile <file> Include file that help link links to
-stylesheetfile <path> File to change style of the generated
documentation
-docencoding <name> Output encoding name

123
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

JavaDoc (Documentação)
Este exemplo exibe como implementar as tags de documentação que serão usados
pelo utilitário Javadoc

import java.util.List;
/**
* @author YourName
* @version 2.0
*/
public class DocExemplo {

/** Declaração e atribuição de x. */


private int x;
/**
* This variable a list of stuff.
* @see #getStuff()
*/
private List stuff;
/**
* O construtor inicia a variavel x.
* @param int x
*/
public DocExemplo(int x) {
this.x = x;
}
/**
* Este método retorna algum valor.
* @throws IllegalStateException se nenhum retorno for encontrado
* @return A lista de valores
*/
public List getStuff()
throws IllegalStateException {
if ( stuff == null ) {
throw new java.lang.IllegalStateException("Erro, sem valor");
}
return stuff;
}
}

124
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

JavaDoc (Documentação)

Exemplo:
Para gerar a documentação digite o seguinte comando:
c:\jdk1.3\bin\javadoc.exe -version -author DocExemplo.java...
Depois chame a página principal “index.html” via Browser.

A figura acima é exemplo de documentação gerada pelo Javadoc.

125
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

Jar (Compactação, Agrupamento e Distribuição)


Jar
É um utilitário do JDK que faz agrupamento de arquivos em único, um arquivo .jar,
geralmente com compressão. Localização JDK1.X/BIN/Jar. É usado também para
fazer a distribuição de aplicação.

Sintaxe: jar opções [meta-arq] nome-arquivo-destino [nome-arquivo-entrada]

Argumento Descrição
meta-arquivo Arquivo que contém as informações sobre o arquivo destino gerado.
Este argumento é opcional, entretanto um arquivo meta-arquivo é
gerado, default, META-INF/MANIFEST.INF
arquivo-destino Nome do arquivo jar. A extensão .jar não é automatica, deve ser
especificada
arquivo-entrada Nome dos arquivos a serem agrupados e/ou compactados

Opções Descrição
c Cria um novo arquivo
t Mostra o conteúdo de um arquivo existente
x Extrai todos os arquivos
x <arquivo> Extrai o arquivo especificado
f Indica que a operação (c,t ou x) será executada sobre o arquivo e não
sobre a entrada/saída padrão.
v Mostra o status da operação (verbose)
m Suprime a geração do meta-arquivo
o Faz apenas o agrupamento, sem compactação. Deve ser utilizado
para arquivos jar na variável de ambiente Classpath

Exemplos:
jar cvf Classes.jar ClassA.class ClassB.class ClassC.class
Para ver o conteúdo do arquivo jar, gerado: jar tvf Classes.jar
Para extrair arquivo: Jar xvf Classes.jar

Obs: a opção f é sempre utilizada em operações com arquivos.

Os arquivos Jar podem conter um aplicação inteira, por isso, ele é usado para fazer
distribuição de aplicações. Também é bastante usado com componente Javabeans e
Applet.

126
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários
JDB (debug)

É um utilitário do JDK, para fazer depuração de código. O primeiro passo é escrever


um programa em Java e depois aplicar o depurador de código. Principais comandos:
run (chama a máquina virtual),
cont (continução) e
quit ou exit (sai do JDB). Veja o exemplo abaixo:

public class Hello Esta classe Java requer um parâmetro


{ que deve ser passando na chamada
public static void main (String arg []) da classe, se o parâmetro não for
{ String s = "world"; informado, isto provocará
System.out.println("Hello " + arg[0]); uma exceção
}
}

O próximo passa é abrir uma janela “DOS”, chame o depurador jdb


<nomedoprograma> <enter>.
Então ferramenta será inicializada, veja abaixo toda a seqüência de depuração.

Por fim a exceção é localizada, ocorrerá na linha 5.

127
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Utilitários

Javap (Desmontagem)
Javap
Faz a desmontagem de código ou descompilação. Sintaxe:
javap <opções> <classes>
Lista das principais opções:
Argumento Descrição
-c Desmonta o código

-classpath <pathlist> Especifica onde encontrar as classes

-help Imprime as mensagens de ajuda


-public Exibe somente as classe e membros públicos
-protected Exibe somente as classe e membros protegidos
-package Exibe somente as classe e membros pacotes (default) sem
modificador
-private Exibe somente as classe e membros privates
-s Imprime tipo de assinatura interna
-verbose Imprime a pilha e detalhes, tais como tamanho e etc.
Código fonte

Código fonte, veja exemplo abaixo:


public class Hello
{
public static void main (String arg [])
{
System.out.println("Hello”);
}
}

Após compilar o programa fonte. Você poderá fazer a desmontagem do arquivo


Hello.class. Para desmontar digite o comando: javap Hello
Compiled from Hello.java
public class Hello extends java.lang.Object {
public Hello();
public static void main(java.lang.String[]);
}

128
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

129
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Apêndices

A - Convenção de Código no Java


B - Sistema de Codificação Unicode
C - Notação UML
D - Applet

130
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Apêndice A

Convenção de Código no Java

Classe - Os nome da classes devem um substantivo e ter a primeira letra


maiúscula o restante em minúsculo. Exemplo: public class Pessoa.
No caso de nome composto o primeiro e segundo nome deve começar com letras
maiúscula. Exemplo: public class PessoaFisica.
Não devemos usar espaço em branco para separa os nomes e nem usar o
sublinhado.

Interfaces - Seguir as mesmas regras para nome de classe

Métodos - Os nomes dos métodos podem ser verbos no infinitivo,


devendo ser escrito em letras minúscula. Exemplo: public int calcular.
Para nome composto usar a seguinte regra a o primeiro nome em minúsculo e a
primeira letra do segundo nome em maiúsculo, veja o exemplo: public int
calcularArea

Constantes - Nomes de constantes devem escritos em letras maiúsculas.


Exemplo: public static final VALOR

Atributos e Variáveis - Os nome dos atributos e/ou variáveis devem ser escritos
em letras minúsculas.

Controles de Estruturas: Através de { } (chaves);

*Espaços - Convencionou-se o uso de quatro espaços para indentações;

Comentários - Vide o capitulo sobre documentação

Para maiores detalhes veja:http://java.sun.com/docs/books/jls/index.html

131
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Apêndice B

Sistema de Codificação Unicode


O que é Unicode?
Unicode é sistema de codificação que fornece um número único para cada
caracter, Não importa a plataforma, não importa o programa, não importa a língua.

Fundamentalmente, os computadores lidam com números. Gravam letras e outros caracteres na


memória designando um número para cada um deles. Antes de o Unicode ser inventado, havia
centenas de sistemas diferentes de codificação . Nenhum destes sistemas de codificação, no
entanto, poderia conter caracteres suficientes: por exemplo, a União Européia por si só requer vários
sistemas de codificação diferentes para cobrir todas a línguas. Mesmo para uma única língua como o
inglês não havia sistema de codificação adequado para todas as letras, pontuação e símbolos
técnicos em uso corrente.

Estes sistemas de codificação são também conflitantes entre si. Em outras palavras, dois
codificadores podem usar o mesmo número para dois caracteres diferentes ou usar números
diferentes para o mesmo caracter. Qualquer computador em particular (especialmente os servidores)
precisam suportar muitos codificadores diferentes; ainda assim toda as vezes que se passam dados
entre codificadores ou plataformas diferentes, estes dados sempre correm o risco de serem
corrompidos.

O Unicode está mudando tudo isso!

O Unicode fornece um único número para cada caracter, não importa a plataforma, não importa o
programa, não importa a língua. O Padrão Unicode tem sido adotado por líderes do setor de
informática tais como a Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys e
muitos outros. O Unicode é necessário para padrões modernos tais como o XML, Java, ECMAScript
(JavaScript), LDAP, CORBA 3.0, WML, etc. e é a maneira oficial de implementar o ISO/IEC 10646. É
suportado por muitos sistemas operacionais, todos os browsers modernos e muitos outros produtos.
O surgimento do Padrão Unicode Standard e a disponibilidade de instrumentos para suportá-lo está
entre as tendências recentes mais significativas das tecnológicas mundiais de software.

Incorporar o Unicode aos servidores de clientes, aplicações de faixas múltiplas e websites oferece
uma redução significativa nos custos quando comparado ao uso de conjuntos de caracteres legacy.
O Unicode possibilita que um único software ou website seja alvejado através de plataformas,
línguas e países múltiplos sem a necessidade de reengenharia. Isto permite com que dados sejam
transportados através de muitos sistemas diferentes sem que sejam corrompidos.

Mais informações: www.unicode.org

132
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice C JB50 Java Básico
Notação UML

DIAGRAMAS EM QUE MODELO A QUE


SÍMBOLO GRÁFICO NOME
APARECE USUALMENTE PERTENCEM

ASSOCIAÇÂO DE Diagrama de Classes, Classes de Objetos


AGREGAÇÃO Diagrama de Componentes. Componentes

Diagrama de Classes, Classes de Objetos


ASSOCIAÇÂO DE
COMPOSIÇÃO Diagrama de Componentes. Componentes

Diagrama de Casos de Uso, Caso de Uso


ASSOCIAÇÂO DE Diagrama de Classes, Classes de Objetos
DEPENDÊNCIA Diagrama de Componentes, Componentes
Diagrama de Implantação. Componentes

Diagrama de Casos de Uso, Caso de Uso


ASSOCIAÇÂO DE
GENERALIZAÇÃO
Diagrama de Classes. Classes de Objetos

Diagrama de Casos de Uso, Caso de Uso


ASSOCIAÇÂO Diagrama de Classes, Classes de Objetos
REGULAR Diagrama de Componentes, Componentes
Diagrama de Implantação. Componentes
Diagrama de Casos de Uso, Caso de Uso
ATOR Diagrama de Seqüência. Caso de Uso

CASO DE USO Diagrama de Casos de Uso. Caso de Uso

Nome da Classe

Atributos

CLASSE Diagrama de Classes. Classes de Objetos


Operações

Nome do Componente COMPONENTE Diagrama de Componentes Componentes

Diagrama de Estados, Classes de Objetos


Nome do Estado
ESTADO
Diagrama de Atividades. Caso de Uso

Diagrama de Estados, Classes de Objetos


ESTADO FINAL
Diagrama de Atividades Caso de Uso

133
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice C JB50 Java Básico

Notação UML

Diagrama de Estados, Classes de Objetos


ESTADO INICIAL Diagrama de Atividades. Caso de Uso

<<interface>>
Nome da “Interface” ou Nome da “Interface”

Operação1 ()
Operação2 ()
Operação3 () “INTERFACE” Diagrama de Componentes Componentes

INTERVALO DE
EXECUÇÃO DE Diagrama de Seqüência Caso de Uso
OPERAÇÂO

MENSAGEM DE
Diagrama de Seqüência Caso de Uso
RETORNO
MENSAGEM E
CHAMADA DE
Diagrama de Seqüência Caso de Uso
OPERAÇÂO
“Síncrona”
MENSAGEM E
CHAMADA DE
Diagrama de Seqüência Caso de Uso
OPERAÇÃO
“Assíncrona”

NÓ Diagrama de Implantação Componentes

texto NOTA Em qualquer diagrama

Diagrama de Seqüência, Caso de Uso


identificador:Classe ou :Classe
OBJETO
Diagrama de Atividades Caso de Uso
Em qualquer diagrama em que é
necessário representar um
Nome do Pacote PACOTE conjunto de coisas que devem
estar agrupadas para efeito de
uma organização apropriada
Diagrama de Estados, Classes de Objetos
TRANSIÇÃO DE
ESTADO
Diagrama de Atividades Caso de Uso

AUTODELEGAÇÃO Diagrama de Seqüência Caso de Uso

134
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico

Applets

135
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

O que é um Applet?
Applet são pequenos programas Java que são executado através de um browser.
Opcionalmente podemos usar o Appleviewer (visualizador de Applet do JDK) para
executá-los.
Para um browser executar um applet é necessário que ele esteja habilitado para tal
tarefa, ou seja tenha uma máquina virtual embutida ou um plug-in.
Um applet é carregado por uma página HTML, através de utilização do tag <APPLET>.
A figura abaixo exibe as etapas de construção de um Applet.

1 public class 4
2
Tapplet
extends
Applet { Compilação
}

Código fonte Bytcode


(java) (java) <HTML>
<body>
..
</body>
</HTML>
3
Arquivo
HTML
Principais m étodos:
Método Descrição
Init() Executado apenas uma vez após a carga do applet pelo
browser
start() Executado após init() e cada vez que o applet se torna ativo.
stop() Final de execução do applet, toda vez o applet for
desativado
destroy() Executado toda vez que applet for complementamente
descartado, utilizado para liberar recursos alocados pelo
applet, quando ativo.
paint(graphics g) Executado toda vez que o applet for redesenhado, algo
similar ao "refresh"

136
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

Principais tag HTML:


Tag Descrição
<APPLET Especifica o endereço URL do diretório onde o arquivo
CODEBASE= path .class pode ser encontrado
Code = "NomeClass Especifica o nome da classe que vai ser carregada
Applet.class"
Width= largura Especifica a largura do applet (em pixel)
Heigth= alttura Especifica a altura do applet (em pixel)
Archive="NomeClass Especifica o nome do arquivo jar onde estão as classes
Applet.jar" utilizadas pelo Applet.
<Param name = Passagem de parâmetros para Applet. onde name é
"nome" Value = nome do parâmetro e value o valor.
"valor">
</Applet> Fecha a tag Applet

Exemplo:
O exemplo demonstra um arquivo HTML com tags Applet. A chamada
do Applet fica embutido dentro arquivo.

<HTML>
<CENTER>
<TABLE BORDER=2>
<CAPTION>Hello Applet</CAPTION>
<TR><TD>
<APPLET CODE="Hello.class" WIDTH=300 HEIGHT=300></APPLET>
</TD></TR>
</TABLE>
</CENTER>
</HTML>

A tag responsável por chamar o Applet

137
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

O exemplo mostra um arquivo Java Applet. Note que este arquivo tem alguns métodos
diferente dos demais programas Java, por exemplo, a ausência do método main, ao
invés disto, esta assinado o init().

import java.awt.*;
API import java.applet.*;

public class TestApplet extends Applet


{
public void init()
{
System.out.println("Executando o Init");
}
public void start()
{
System.out.println("Executando o Star");
Os métodos }
public void stop()
{
System.out.println("Executando o Stop");
}
public void destroy()
{
System.out.println("Executando o destroy");
}
}

138
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

Este é um exemplo completo. São exibidos os código do arquivo Java Applet e do


arquivo HTML. Para executar chame através do Browser ou use AppletViewer.

Arquivo: Hello.html

<HTML>
<CAPTION>Hello</CAPTION>
<TR><TD>
<APPLET CODE="Hello.class" WIDTH=100 HEIGHT=100></APPLET>
</TD></TR>
</HTML>

Arquivo: Hello.java

import java.awt.Graphics;
import java.applet.Applet;

public class Hello extends Applet {


private int paintCount;
public void init() {
paintCount = 0;
}
public void paint(Graphics g){
g.drawString("Hello", 25, 25);
++paintCount;
g.drawString("Quantidade de vezes paint: " + paintCount, 25, 50);
}
}

139
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

Este é um exemplo completo. São exibidos os código do arquivo Java Applet e do


arquivo HTML. Para executar chame através do Browser ou use AppletViewer.

Arquivo: TestApplet2.html
<HTML>
<CAPTION>Hello</CAPTION>
<TR><TD>
<APPLET CODE=" TestApplet2.class" WIDTH=100 HEIGHT=100>
</APPLET>
</TD></TR>
</HTML>

Arquivo: TestApplet2.java

import java.awt.event.*;
import java.awt.*;
import java.applet.*;
public class TestApplet2 extends Applet implements
Runnable,ActionListener
{
TextField b1,b2;
String x;
Thread k;
public void init()
{
setLayout(new FlowLayout());
b1 = new TextField(10);
b2 = new TextField(10);
b1.addActionListener(this);
b2.addActionListener(this);
add(b1);
add(b2);
k = new Thread(this);
k.start();
}

140
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet

Exemplo:
continuação..
Arquivo: TestApplet2.java

public void paint(Graphics g)


{
if ( x != null)
g.drawString(x,50,50);
}
public void run()
{
int cont = 0;
while(true)
{ cont = cont + 1;
b1.setText(""+cont);}
}
public void stop()
{ k.stop(); }
public void start()
{ k.resume(); }
public void actionPerformed(ActionEvent e)
{
x = b2.getText();
repaint();
}
}

141
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
Apêndice D JB50 Java Básico

Applet
Exemplo:
Este outro exemplo demonstra como passar parâmetro para Applet a partir de um arquivo
HTML.
Arquivo: Parameters.html
<html>
<applet code=Parameters.class width=200
height=200>
Passagem de <param name=speed value="12">
parâmetros <param name=distance value="500m">
</applet>
</html>

Arquivo: Parameters.class
import java.applet.Applet;
import java.awt.Graphics;

public class Parameters extends Applet {


private String toDisplay;
private int speed;

public void init() {


Captura os String pv;
parâmetros pv = getParameter("speed");
if (pv == null){
speed = 10;
} else {
speed = Integer.parseInt (pv);
}
toDisplay = "Speed given: " + speed;
}

public void paint(Graphics g) {


g.drawString(toDisplay, 25, 25);
}
}

142
© Copyright e-tecnologia.com, 2002
Linguagem de Programação JAVA
JB50 Java Básico
Notas

Você encontrou algum problema neste documento


avise ao autor:suporte_java@uol.com.br

Qualquer contribuição será aceita, pois, nosso


objetivo é melhorar cada vez mais este trabalho.

Todas as marcas e/ou produtos citados neste


trabalho são de uso exclusivo de seus proprietários
ou detentores.

143
© Copyright e-tecnologia.com, 2002