Você está na página 1de 189

Linguagem de Programao JAVA

JB100 Java Bsico

www.etcnologia.com.br

Rildo F Santos
(11) 9123-5358 (11) 9962-4260
rildo.santos@etecnologia.com.br @rildosan skype: rildo.f.santos http://rildosan.blogspot.com/

Autor: Rildo Santos (rildosan@uol.com.br)

Reviso 3.0 27/01/09


Verso: 3.0

Copyright e-tecnologia.com, 2002

Linguagem de Programao JAVA


JB100 Java Bsico
Estrutura do Curso

Introduo Fundamentos da linguagem Programao Orientada a Objetos

Apresenta arquitetura da linguagem Java Apresenta comandos e funcionalidades bsicas Principais aspectos da programao orientada a objetos

Caractersticas Apresentar caractersticas avanada da Avanadas Linguagem (Threads, networking e etc)

Introduo a UML
Utilitrios

Apresentar uma visa geral da UML e seus os principais componentes


Demonstrar os principais utilitrios da linguagem Java (Jar, JadaDoc e etc)

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Contedo
Introduo breve apresentao gerando aplicaes Instalao do JDK O primeiro programa Fundamentos da linguagem Java Estrutura da linguagem Palavras Reservadas Tipos de Dados Inicializao de variveis Operadores A classe String A classe StringBuffer Casting Fluxo de Controle Arrays Passagem de Parmetros A classe Math Empacotamento de Classes Converso de Tipos A referncia this Colees Pacotes Programao Orientada a Objetos Classes Objetos Mtodos Construtores Atributos e variveis Exemplo de classe Exerccio Abstrao de Dados Relacionamento Herana Herana Mltipla Comparao: Classes vs Interfaces A referncia Super Associao Navegao Rolename Agregao Composio Multiplicidade Constraint Encapsulamento Polimorfismo Acessibilidade Caractersticas Avanadas Instanceof Exception Formatando Nmeros e Datas Constantes Threads Serialization TCP/IP Introduo a UML Utilitrios JavaDoc Jar JDB Javap Apndice Conveno de Cdigo no Java Unicode Notao UML

Nota
Verso do JSDK 1.3
Este material foi preparado para trabalhar com a verso JSDK 1.3 (veja: http://java.sun.com/j2se/1.3/index.jsp), entretanto todos os exemplos funcionam perfeitamente na verso 6 (verso atual)

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Objetivo
Voc est preparado ?
Para aprendermos uma nova linguagem de programao necessrio ter alguns conhecimentos como: - Lgica de Programao; - Conhecer um Sistema Operacional, por exemplo, Windows, Unix, Linux ou MacOS; - Saber editar e compilar programas e; Conhecer uma outra Linguagem de Programao importante, porm no imprescindvel.

Objetivo deste curso:

Apresentar as caractersticas bsicas da linguagem Java, assim como, sua estrutura, funcionalidades, mtodos, classes, APIs (Application Program Interface) e recursos avanados.

Expectativas aps o Curso:


Ao final deste curso voc dever estar apto a: Utilizar a linguagem Java para criar aplicaes simples; Descrever e usar as caractersticas de linguagem orientada a objetos com Java, tais como: Herana, Abstrao de Dados, Encapsulamento e Polimorfismo; Conhecer o tratamento de excees; Descrever e usar sockets para fazer acesso a servidores e clientes; Conhecer UML bsica;

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Uma breve apresentao...
Surgimento: Java uma linguagem de programao criada em 1995 por James Gosling e sua equipe. A linguagem de propriedade da Sun Microsystem. Logo Java ganhou popularidade, um bom exemplo disto so os Applets, aqueles pequenos aplicativos que executam nos navegadores, que durante muito tempo foi o foco da linguagem Java. Com o passar do tempo, o nmero de desenvolvedores aumentou e a linguagem amadureceu sendo hoje considerada o principal ambiente de desenvolvimento, tanto para Internet quanto para ambiente cliente/servidor tradicional. Algumas das caractersticas da linguagem Java: Orientao a objetos Portabilidade (isto que dizer que o mesmo programa criado no Windows2000, pode ser executado em Linux, por exemplo, ou qualquer outro Sistema Operacional, sem a necessidade de fazer ajustes). Entretanto, a linguagem Java vai alm da computadores, sendo executada em diversos dispositivos como telefone celulares, televisores, cartes inteligentes e etc. O Java reconhecido como a principal linguagem no mundo dos Servidores de Aplicaes e ambiente sem fio (wireless).

Java

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
O que o Java?
Java : Uma linguagem de programao; Um ambiente de desenvolvimento; Um ambiente de aplicao; Java o resultado de uma busca por uma plataforma de programao que pudesse fornecer segurana, portabilidade (independncia de sistema operacional) e escalabilidade. Os primeiros objetivos alcanados com o desenvolvimento desta nova linguagem foram: Orientao a objetos: A linguagem orientada a objetos a partir de sua arquitetura, permitindo herana, polimorfismo, encapsulamento, abstrao de dados, persistncia de objetos e reso de cdigo.; Independncia de plataforma (Portabilidade): Possibilidade do mesmo cdigo fonte ser executado em diversos sistemas operacionais, tais como Solaris, AIX, Linux, MacOS, Win32, PalmOS, OS/390 e etc); Dinamismo: A natureza dinmica do Java, sendo uma extenso natural de seu projeto orientado a objetos, permite a extensibilidade durante a execuo. Alto desempenho: Suporte a vrios recursos, como multithreading, compilao em Jus-in-time, atomicidade do cdigo e suporte a protocolos de rede (TCP/IP) Facilidade de manuteno de programas. A linguagem no tem: Ponteiros do sistema operacional; Defines; Sobrecarga de operadores; Herana mltipla de classes e Funo e/ou procedure. Principias caractersticas: Cargabe Collection (gerenciamento dinmico da memria); Java Virtual Machine (JVM); Cdigo seguro.

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Diferenas entre o Java e o C++
Java sinttica e morfologicamente muito parecido com a linguagem C++, entretanto, existem diferenas: Inexistncia de aritmticas de ponteiros (ponteiros so apenas referncias); Arrays so objetos; Strings so objetos; Gerenciamento automtico de alocao e deslocao de memria (Garbage Collection); No h sobrecarga de operadores; No h mtodos com lista de argumentos de tamanho varivel; No existem diretivas de pr-compilao (#define, #ifde); No existem Templates; No existe Herana Mltiplas com classes, apenas com interfaces; No existem funes, mas apenas mtodos de classes; Necessita de ambiente de execuo (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; }

Copyright e-tecnologia.com, 2002

Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Portabilidade: A independncia de plataforma
O Java independente de plataforma. Isto significa que o desenvolvedor no ter que se preocupar com particularidades do sistema operacional ou do hardware, focando o seu esforo no cdigo em si. Mas o que isto realmente significa?

?
Na maioria das linguagens preciso gerar uma verso para cada plataforma que se deseja utilizar, exigindo em muitos casos, alteraes tambm no cdigo fonte. Em Java o mesmo programa pode ser executado em diferentes plataformas. Veja o exemplo abaixo:
public class HelloWorldApp { public static void main (String arg []) { System.out.println("Hello World!"); } }

Compilao: > javac Hello.java


Execuo: > java Hello

O mesmo cdigo fonte

Hello World

Hello World Hello World

Sistema Operacional e Processadores diferentes

"write once, run anywhere."


Copyright e-tecnologia.com, 2002 Verso: 3.0

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Gerando Aplicaes
Para criarmos aplicaes ou programas na linguagem Java temos que executar os alguns passos: Edio, Compilao e Interpretao. A Edio a criao do programa, que tambm chamado de cdigo fonte. Com a compilao gerado um cdigo intermedirio chamado Bytecode, que um cdigo independente de plataforma. Na Interpretao, a mquina virtual Java ou JVM, analisa e executa cada instruo do cdigo Bytecode.

3
Java myProgram 1

Javac myProgram.java Na linguagem Java a compilao ocorre apenas uma vez e a interpretao ocorre a cada
vez que o programa executado.

Copyright e-tecnologia.com, 2002

Verso: 3.0

10

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Instalao do ambiente de desenvolvimento (JDK)
O Java Development Kid (JDK) conjunto de ferramentas para compilar, depurar, executar e documentar um programa escrito em java. As verses para Solaris, Linux e Windows podem ser obtidas no endereo: www.java.sun.com (Pgina oficial da linguagem).

Procedimentos de Instalao: Para instalar o JDK, basta executar o programa de instalao e seguir as instrues. Caso o JDK esteja compactado ser necessrio descompact-lo primeiro, os formatos mais populares de arquivos compactados so zip (para Windows) e tar (para Unix). Aps a instalao necessrio configurar o ambiente: No windows: Acrescentar no Autoexec.bat: SET JAVA_HOME=C:\JDK1.3 PATH=%JAVA_HOME%\bin A varivel JAVA_HOME deve ter o mesmo nome do diretrio onde foi instalado o JDK.
Classpath O Java defini uma varivel de ambiente chamada ClassPath. O Java procura pelas classes e pacotes atravs desta varivel. Ela deve estar no Autoxecec. Veja um exemplo: Set classpath=,;c:\JDK1.3;c:\MeusPacotes O prximo passo instalar a documentao, ela geralmente est em arquivo compactado, ao descompacta-la selecionar a unidade de disco, por exemplo: C:\, pois, o diretrio padro da documentao (docs) j est definido no arquivo compactado. Caso voc tenha instalado o JDK em outro diretrio que no seja o padro, voc dever especificar no momento da instalao. A documentao est no formato HTML, o arquivo principal o index.html.

Copyright e-tecnologia.com, 2002

Verso: 3.0

11

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Instalao do ambiente de desenvolvimento (JDK)
Aps a instalao, voc dever ter uma estrutura de diretrios como aparece na figura:

Resumo:

bin: Onde esto todos os arquivos necessrios para compilar (javac), depurar (jdb) e executar (java).
demo: Onde esto os arquivos de demonstrao e exemplos da linguagem Java. docs: Onde est a documentao do ambiente da Linguagem Java no formato HTML include: Onde esto os arquivos escritos em linguagem C, os header, que so usados na integrao de Java e a Linguagem C. Include-old: Onde esto os arquivos escrito em linguagem C, os header, entretanto, os arquivos so de verso mais antiga. documentao jre: Ambiente de execuo do Java necessrio para distribuir a aplicao aos clientes. lib: Onde esto as bibliotecas Java, tambm chamadas de APIs. A extenso dos arquivos .jar.

Copyright e-tecnologia.com, 2002

Verso: 3.0

12

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Instalao do ambiente de desenvolvimento (JDK)

Sistema Operacional

Ambiente para os desenvolvedores

Ambiente necessrio nos Clientes (usurios finais)

A figura demonstra uma viso do pacote de desenvolvimento JDK e tambm do ambiente de execuo (JRE). Ambos so necessrios para desenvolver uma aplicao. Para os clientes, os usurios finais, precisam apenas do ambiente de execuo JRE. Aplicativos como os Applets executam atravs do Browser (Internet Explorer ou Netscape) geralmente a VM que est embutida nestes navegadores.

Copyright e-tecnologia.com, 2002

Verso: 3.0

13

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
O Compilador javac
Sintaxe: javac [opes] NomedoArquivo.java

Veja abaixo a lista dos principais argumentos:


Argumento -classpath path -d dir -deprecation -g -nowarm -verbose -O -depend Descrio Localizao das classes. Sobrepe a varivel de ambiente Classpath. Determina o caminho onde as classes compiladas so armazenadas Faz a compilao de cdigo em desuso, geralmente de verses anteriores e faz aviso de advertncia Gera tabelas de "debugging" que sero usadas pelo pelo deupador JDB. Desabilita as mensagens de advertncia Exibe informaes adicionais sobre a compilao Faz otimizao do cdigo Faz a compilao 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

Copyright e-tecnologia.com, 2002

Verso: 3.0

14

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
O Interpretador java
Sintaxe: java [opes] NomedoArquivo [lista de Argumentos]

Veja abaixo a lista das principais opes: Argumento Descrio -classpath path Localizao das classes. Sobrepe a varivel de ambiente Classpath.
-help -version -debug -D propriedade= valor -jar -X -v ou -verbose Lista de Argumentos
Alguns Exemplos:

Exibe a lista de opes disponveis Exibe a verso do interpretador Inicia o interpretador no modo de "debug", geralmente em conjunto com JDB. Possibilita redefinio de valores de propriedades. Pode ser usado vrias vezes. Indica o nome do arquivo (com extenso .jar) que contm a classe a ser executada. Exibe a lista de opes no padronizadas do interpretador Exibe informaes extras sobre a execuo, tais como, mensagens indicando que uma classe est sendo carregada e etc Define a lista de argumentos que ser enviada a aplicao

> java Hello


> javac -version > java -D nome=Meu Nome Hello

> java -verbose Hello


> javac Hello MeuNome

Copyright e-tecnologia.com, 2002

Verso: 3.0

15

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Java Virtual Machine
A JVM parte do ambiente de "runtime" Java e a responsvel pela interpretao dos bytecodes (programa compilado em java), ou seja, a execuo do cdigo. A JVM consiste em conjunto de instrues, conjunto de registradores, a pilha (stack) , garbage-collected heap e a rea de memria (armazenamento de mtodos). Funces da JVM: Carregar de forma segura todas as classes do programa (protegendo contra ataques premeditados, por exemplo, Cavalos de Tria) Verificar se os bytecodes aderem s especificaes da JVM e se no violam a integridade e segurana da plataforma. Interpretar o cdigo.

Em tempo de execuo estes bytecodes so carregados, so verificados atravs do Bytecode Verifier (uma espcie de vigilante) e somente depois de verificados sero executados.

Programa Fonte
Javac <programafonte.java>

Programa Compilado
Java <programafonte>

Class Loader J Byte Code Verifier V M Runtime

Copyright e-tecnologia.com, 2002

Verso: 3.0

16

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Garbage Collection
Coletor de Lixo: A linguagem Java tem alocao dinmica de memria em tempo de execuo. No C e C++ (e em outras linguagens) o programa desenvolvido responsvel pela alocao e deslocamento da memria. Isto geralmente provoca alguns problemas. Durante o ciclo de execuo do programa, o Java verifica se as variveis de memria esto sendo utilizadas, caso no estejam o Java libera automaticamente esta rea para o uso.

Copyright e-tecnologia.com, 2002

Verso: 3.0

17

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo 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 Aps 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. Fcil!

Copyright e-tecnologia.com, 2002

Verso: 3.0

18

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Escrevendo um pequeno programa
Dissecando o cdigo modificador Nome da classe

Classe (corresponde ao arquivo que ser gravado do disco)

Tipo de dado

Lista de argumentos public class Hello (o tipo em questo String) { public static void main (String arg []) Mtodo { String s = "world"; Varivel principal System.out.println("Hello " + s); } } mtodo Atributo da Classe System Classe java

Roteiro para criar um programa em Java: 1 - Fazer a assinatura da classe, isto equivale a declarao: public class NomedaClasse { 2 - Declarar as variveis, tambm chamadas de fields: int i =0 ; Neste caso no temos nenhum varivel de classe ou field 3 - Fazer a assinatura dos mtodos: public static void main (String args[]){ 4 - Escrever o corpo do mtodo: String s= world; System.out.println(Hello + s); 5 - Para encerrar o mtodo, note que o corpo do mtodo est entre chaves {...}. } 6 - Para encerrar a classe, segue o mesmo princpio do mtodo. 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

Copyright e-tecnologia.com, 2002

Verso: 3.0

19

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a linguagem Java
Escrevendo um pequeno programa

No deu certo ???


Veja se este pequeno Checklist pode ajudar: 1 - Problemas com compilao: Veja o Classpath; 2 - Se o compilador no consegue encontrar o arquivo: Verifique se o nome da classe e o nome do arquivo gravado em disco so correspondentes, lembre-se que o java faz distino entre maiscula e minscula; 3 - Erros de sintaxes: Verifique se os pares chaves esto corretos, ou seja, deve ter um par para classe, outro para cada mtodo e para cada bloco de declaraes. Verifique se no h instrues erradas, como string quando o correto String ( uma classe), system ao invs de System Verifique se h ponto e virgula ; no final de cada instruo.

Copyright e-tecnologia.com, 2002

Verso: 3.0

20

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

21

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Estrutura da Linguagem
Comentrios: Temos trs tipos permitidos de comentrios nos programas feitos em Java: // comentrio de uma nica linha /* comentrio de uma ou mais linhas */ /** comentrio de documentao */ (este tipo de comentrio usado pelo utilitrio Javadoc, que responsvel por gerar documentao do cdigo Java)
Exemplo int x=10; // valor de x /* A varivel x integer */ int x; /** x -- um valor inteiro representa a coordenada x */ int x; Descrio Comentrio de linha Exemplo onde o comentrio usa mais que uma linha. Todo o texto entre "/*" e "*/", inclusive, so ignorados pelo compilador

Todo o texto entre o "/**" e "*/", inclusive, so ignorados pelo compilador mas sero usados pelo utilitrio javadoc.

Ponto e vrgula, Blocos e o espao em branco: No Java, os comandos so terminados com o sinal de ponto e vrgula (;) Um bloco tem incio e fim representados pelo uso das chaves { }; O uso do espao em branco permite uma melhor visualizao dos comandos e em conseqncia facilita a sua manuteno. Exemplo:

Bloco da Classe

public class TestEstrutura { public void sayHello(String hello) { System.out.println("Hello "); } } Bloco do Mtodo Ponto e virgula

Copyright e-tecnologia.com, 2002

Verso: 3.0

22

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Estrutura da Linguagem
Identificadores: Que so identificadores ? Identificadores so nomes que damos as classes, aos mtodos e as variveis. Regra: Um identificador dever ser inicializado com uma letra, sublinhado ( _ ), ou sinal de cifro ($). Em Java existe uma diferena entre letras maisculas e minsculas. Veja alguns exemplos: Classe diferente de CLASSE classe diferente de Classe Exemplos de identificadores:: Alguns identificadores vlidos: - identifier - userName - User_name - _sys_var1 - - $change Exemplo: public class PessoaFisica Veja alguns invlidos: - 1nome - \TestClass

- /metodoValidar

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

Veja o cdigo abaixo onde so apontados os identificadores Identificador (nome da classe) public class Hello { public static void main (String arg []) { String s = "world"; Mtodo principal System.out.println("Hello " + s); } }

Identificador (nome do mtodo)

Classe

Veja que primeiro foi definido o tipo de dado, String, e depois o nome do Identificador (nome do varivel)

Copyright e-tecnologia.com, 2002

Verso: 3.0

23

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Palavras Reservadas
Palavras Reservadas abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try void volatile while

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 { 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)

Palavra reservada

Copyright e-tecnologia.com, 2002

Verso: 3.0

24

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Tipos de Dados
Existem tipos bsicos ou primitivos e os tipo de referncia. Sintaxe padro: <Tipo de dado> <nome da varivel>; ou <Tipo de dado> <nome da varivel> = valor da varivel; <Tipo de dado> <nome da varivel> = valor da varivel, <nome da varivel> = valor da varivel... ; Tipo Lgico - boolean: true e false Exemplo boolean fim = true;

Tipo Textual - char e String (String uma classe) Um caracter simples usa a representao do tipo char. Java usa o sistema de codificao Unicode (Veja Apndice 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 \u???? especifica um caracter Unicode o qual representado na forma Hexadecimal. Cdigo de escape \t tabulao \\ - \ \ -
String (String uma classe) O tipo String um tipo referncia que usado para representar uma seqncia de caracteres. Exemplo: String s = Isto uma string, s1; Inteiros byte, short, int e long Possuem somente a parte inteira, ou seja, no suportam casas decimais. Exemplos: int i1 = 10, int i2 = 11; byte b = 1;

Copyright e-tecnologia.com, 2002

Verso: 3.0

25

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Tipos de Dados
Tamanho 8 bits 16 bits 32 bits 64 bits Tipo byte short int long Faixa -128 a 128 -32.768 a 32.767 -2.147.483.648 a 2.147.483.647 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Ponto Flutuante So os tipos que tm suporte s casas decimais e maior preciso numrica. Existem dois tipos em Java: o float e o 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 declaraes: float f = 3.1;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 necessrio identific-los, para que no comprometa a preciso numrica: float f = 3.1F; double d = 6.35; Uma vez no identificado, ao tentar compilar o programa, ser emitida uma mensagem de erro. Tamanho 32 bits IEEE 754-1985 64 bits IEEE 754-1985 Tipo Float Double Faixa 1,4E-45 a 3,4E+38 4,9E-324 a 1,7E+308 Preciso 7 dgitos 15 dgitos

Nota (1) Toda vez que uma varivel tipo float no tem a literal F, esta varivel internamente tratada como se fosse um inteiro

Copyright e-tecnologia.com, 2002

Verso: 3.0

26

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Inicializao de variveis
No permitido o uso de variveis indefinidas ou no inicializadas. Exemplo: int i; int a = 2; int c = i + a; Neste caso ocorre erro, pois, o valor de i est indefinido. As variveis definidas dentro do mtodo so chamadas de variveis automticas, locais ou temporrias e devem ser inicializadas antes do uso.

Copyright e-tecnologia.com, 2002

Verso: 3.0

27

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Operadores
Os operadores na linguagem Java, so muito similares ao estilo e funcionalidade de outras linguagens, como por exemplo o C e o C++. Operadores Lgicos: > < ! Maior que Menor que Not (negao) <= >= && Menor que ou igual Maior que ou igual And == != || Igual Diferente OR

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

Operadores Matemticos:
+ / Adio Subtrao Diviso * + Multiplicao Positivo (unrio) Negativo (unrio) ++ -% Incremento Decremento Mdulo

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;

Copyright e-tecnologia.com, 2002

Verso: 3.0

28

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Operadores
Outros Operadores: instanceof new Exemplos: instanceof: Objeto obj = new String(Teste); if (obj instanceof String) System.out.println(verdadeiro) new: Hello hello = new Hello(); Faz a comparao do objeto que est instanciado no objeto Este operador usado para criar novas instance de classes

Precedncias de Operadores: .[]() ++ - ! ~ instanceof new (type) expresso */% +<< >> >>>

- O type coero de tipo

Exemplo: Com a precedncia definida pelo Java int c = 4 / 2 + 4; Neste caso, primeiro ocorrer a diviso e aps a soma. Com a precedncia definida pelo desenvolvedor int a = 4 / (2 + 4); J neste caso, primeiro ocorrer a soma e depois a diviso.

Copyright e-tecnologia.com, 2002

Verso: 3.0

29

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Operadores
Operadores Binrios:

Java fornece extensa capacidade de manipulao de bits. Todos os dados so representados internamente como uma seqncia de bits. Cada bit pode assumir o valor de 0 ou 1. No geral uma seqncia de bits formam um byte, que a unidade de armazenamento padro, para uma varivel tipo byte. Os tipos de dados so armazenados em quantidade maiores que byte. Os operadores sobre os bits so utilizados para manipular os bits de operandos integrais (isto aqueles do tipo byte, char, short, int e long).
Operador & | ^ << Nome AND sobre bits OR inclusive sobre bits OR exclusivo sobre bits Deslocamento para esquerda Deslocamento para direita com extenso de sinal Deslocamento para direita com extenso de zero Complemento de um Descrio Os bits no resultado so configurados como 1 se os bits correspondentes nos dois operandos forem ambos 1 Os bits no resultado so configurados como 1 se pelo menos um dos bits correspondentes nos dois operandos for 1 Os bits no resultado so configurados como 1 se somente um dos bits correspondentes nos dois operandos for 1 Desloca os bits do primeiro operando para a esquerda pelo nmero de bits especificado pelo segundo operando; preenche a partir da direita com bits 0. Desloca os bits do primeiro operando para a direita pelo nmero de bits especificado pelo segundo operando. Se o primeiro operando for negativo, preenche com 1s a partir da esquerda; caso contrrio, preenche com 0s a partir da esquerda. Desloca os bits do primeiro operando para a direita pelo nmero de bits especificado pelo segundo operando; 0s so inseridos a partir da esquerda Todos os bits so configurados como 1 e todo os bits so configurados como 0.

>>

>>>

Manipulao de bits e os operadores sobre bits Exemplos de manipulao do bits: Right Shift (>>) 128 >> 1 <=> 128/21 = 64 256 >> 4 <=> 256/24 = 16 4 -256 >> 1 <=> -256/2 = -16 Left Shift (<<) 128 << 1 <=> 128 * 21 = 256 16 << 2 <=> 16 * 22 = 64

Copyright e-tecnologia.com, 2002

Verso: 3.0

30

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Operadores
Podemos realizar operaes de Pr e Ps incremento e de Pr e Ps decremento. Veja os exemplos: Pr-incremento: Pr-incremento = ++a; Ps-incremento = a++;

Exemplo: a = 10, b = 11, c = a + ++b => c = 22 Exemplo: a = 10, b = 11, c = a + b++ => c = 21

Ps-decremento: Pr-decremento = --x; Exemplo: x = 1, y = 1, z = x + --b => z = 1 Ps-decremento = x--; Exemplo: x = 1, y = 1, z = x - b-- => z = 0

Exemplo: public class TesteOperador {


public static void main(String args[]) { int x = 1; int y = 1; int z = x - y--; System.out.println("o valor z: " + z); } } Observe que isto ocorre devido a precedncia de operadores. Primeiro feito a atribuio e depois o incremento.
Operador ++ -+= -= *= /= &= |= ^= %= Exemplo x++, ++x x--, --x x += y x -= y x *= y x /= y x &= y x |= y x ^= y x %= y Equivalncia x = x + 1 x = x - 1 x = x + y x = x - y x = x * y x = x / y x = x & y x = x | y x = x ^ y x = x % y

Lista de Exemplos

Copyright e-tecnologia.com, 2002

Verso: 3.0

31

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
String
A classe String Objetos String so sequncias de caracteres Unicode Exemplo: String nome = Meu nome Principais mtodos: Substituio: replace, Busca: endWiths, startsWith, indexOf e lastIndexOf Comparaes: equals, equalsIgnoreCase e compareTo Outras: substring, toLowerCase, toUpperCase, trim, charAt e length Concatenao: 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("So iguais"); } else { System.out.println("So Diferentes"); } //equalsIgnoreCase System.out.println("equalsIgnoreCase"); if (s1.equalsIgnoreCase(s2)) { System.out.println("So iguais"); } else { System.out.println("So Diferentes"); } //Alguns mtodos //indexOf, charAt, substring String frase = "Vovo viu a uva"; System.out.println("Posio: " + frase.indexOf('a')); System.out.println("Nova frase: " + frase.substring(0,4)); System.out.println("A letra : " + frase.charAt(5)); //concat String nome = "James ; String sobrenome = "Gosling "; String nomeCompleto = nome.concat(sobrenome); System.out.println("O nome : " + nomeCompleto); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

32

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
StringBuffer
Objetos StringBuffer so uma seqncia mutvel 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 mtodos: append, insert, delete, ...

Exemplo:

Vrias formas de declarao

Usando os mtodos para manipular o objeto StringBuffer

public class TestStringBuffer { public static void main(String arg[]) { //new instance StringBuffer b1 = new StringBuffer(); StringBuffer b2, b3; b2 = new StringBuffer(25); b3 = new StringBuffer("Teste, "); /*para exibir o contedo necessrio usar o mtodo 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() ); b3.insert(0, "A x B "); System.out.println("b3:" + b3.toString() ); b3.delete(0,4); 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() ); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

33

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Casting (coero de tipos)
Java faz a promoo de tipos para garantir que os valores sejam suportados pelas faixas, contudo, a linguagem Java no suporta converses arbitrrias de tipos de variveis. Devemos explicitar a converso entre tipos de variveis. Veja o exemplo abaixo: public class TestCasting { public static void main(String args[]) { byte a = 1; byte b = 3; byte c = a + b; /* Linha errad, pois a operao adio sofre casting implicita */ //Correo o casting explicito byte c = (byte) (a + b); System.out.println(c); } } Hierarquia de converso:

Casting implcito Por fora do operador matemtico o Java promoveu a valor resultante de a + b para um valor inteiro, o que provoca estouro da faixa de byte, e por sua vez provoca um erro

Casting explcito aps a soma de a + b, o valor da soma convertido para byte

byte short int long float char

Converso Implcita

double

Converso Explcita

Copyright e-tecnologia.com, 2002

Verso: 3.0

34

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Casting (coero de tipos)
Objetos Os objetos no so convertidos, mas sim suas referncias. Uma referncia de uma classe qualquer pode ser sempre usada para fazer referncia a um objeto de uma de suas subclasses. Quando isso acontece, a referncia somente poder ser utilizada para acesso aos membros da classe, ficando os membros da subclasse inacessveis, embora com seus valores mantidos. A converso desse tipo (de subclasse para classe) chamada de implcita. Veja os exemplos abaixo:

import java.awt.*; public class CastObjeto { public CastObjeto() { Window janela = new Frame(); janela.pack(); janela.setTitle("Titulo da Janela"); ... } }

Converso ilegal, pois, o objeto janela no enxerga os mtodos de Frame, embora o mtodo exista, pois o objeto do tipo Frame

Hierarquia de classes:

SuperClasse

Window

SubClasse

Frame

Copyright e-tecnologia.com, 2002

Verso: 3.0

35

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Casting (coero de tipos)
Casting ( Converso de tipos ) Objetos import java.awt.*; public class CastObjeto { public CastObjeto() { Window janela =new Frame(); Frame janela1 = (Frame) janela; janela1.setTitle("Titulo da Janela"); } }

Converso legal, pois, a janela um objeto do tipo Frame e est sendo atribudo a uma referncia do mesmo tipo

A converso contrria, ou seja, de referncia a classe para referncia a subclasse, possvel. Entretanto, essa converso somente ser vlida se a referncia subclasse passar a apontar para um objeto compatvel com ela.

SuperClasse

Converso implcita

SubClasse

Converso explcita

As Interfaces seguem a mesma regra das classes.

Copyright e-tecnologia.com, 2002

Verso: 3.0

36

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Casting (coero 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 operao adio sofre casting implicita */ //byte c = i + i; //Correo o casting explicito byte c = (byte) (a + b); System.out.println(c);

O resultante da soma foi promovido para tipo int, quando atribumos a varivel , que do tipo byte, a operao provoca erro, pois, a faixa de byte menor que a faixa de int. Uma vez aplicado o casting a operao de soma realizado e depois convertida para o type byte.

Casting explcito: (byte) (a + b)

//Exemplo 2 Casting implcito: (a + b) int ia = 1; long lb = 3; /* Perda de Preciso - causa erro */ //int ic = ia + lb; //linha errada -> Casting //Correo o casting explicito int ic = ia + (int) lb; System.out.println(ic);
} }

Copyright e-tecnologia.com, 2002

Verso: 3.0

37

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
Java como qualquer outra linguagem de programao, suporta instrues e laos para definir o fluxo de controle. Primeiro vamos discutir as instrues condicionais e depois as instrues de lao. Antes, porm, vamos entender a necessidade dos blocos. Um bloco o conjunto de instrues delimitadas por chaves {... }. Exemplo:

int i = 10; System.out.println(Hello); i++


}

bloco

Os blocos povoam mtodos, instrues condicionais, laos e etc, ou seja, podemos encontr-los sempre dentro de um programa Java.

Construes condicionais: if (<expresso boolean>) <declaraes>... else <declaraes>... switch (<expresso>) { case <expressao char-int>: <declaraes>... break; case <expressao char-int>: <declaraes>... default: <declaraes>... } (<expresso boolean>) ? <expresso if-true> : <expresso if-false>

Copyright e-tecnologia.com, 2002

Verso: 3.0

38

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo if Sintaxes: if (expresso boolean) instruo Exemplo: if (x>y) System.out.println(x); if (expresso boolean) { //Bloco de instrues } Exemplo: if (x>y) { System.out.println(x); y++; } if (expresso boolean) { //Bloco de instrues } else { //Bloco de instrues } Exemplo: if (x>y) { System.out.println(x); y++; } else { System.out.println(y); x++; }

Mais de uma instruo usado a estrutura de bloco

if (expresso boolean) { //Bloco de instrues } else if (expresso boolean) { //Bloco de instrues } else if (expresso boolean) { //Bloco de instrues } else if (expresso boolean) { //Bloco de instrues } else { //Bloco de instrues }

Copyright e-tecnologia.com, 2002

Verso: 3.0

39

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo if Sintaxes: (continuao) 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 instruo if pode ser utilizada de vrias formas, ela pode ser aplicada de acordo com o contexto. O exemplo abaixo demonstra a estrutura mais popular da instruo if, ou seja, if (expresso lgica) then {...} else {... }. Veja a lgica e tambm a implementao do cdigo:

sim saldo > 0 no status = Negativo

status = Positivo

if (saldo > 0) { status = Positivo; } else { status = Negativo; }


OU if (saldo > 0) status = Positivo; else Cdigo status = Negativo;

Lgica

Copyright e-tecnologia.com, 2002

Verso: 3.0

40

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo if Neste exemplo apresentaremos a instruo if com mltiplas opes. Veja a lgica e tambm a implementao da do cdigo:

saldo mdio > 5000

sim

Limite cheque =1000

no
saldo mdio > 3000 and <=5000

sim

Limite cheque =800

no
saldo mdio > 2000 and <= 3000

sim

Limite cheque =600

no
saldo mdio > 1000 and <= 2000

sim

Limite cheque =400

no Limite cheque =0

public class ifCompostoExemplo { public static void main(String args[]) { int limitecheque; int saldomedio = 15000; if (saldomedio > 5000) { limitecheque = 1000; } else if (saldomedio > 3000 && saldomedio <= 5000) { limitecheque = 800; } else if (saldomedio > 2000 && saldomedio <= 3000) { limitecheque = 600; } else if (saldomedio > 1000 && saldomedio <= 2000) { limitecheque = 400; } else { limitecheque = 0; } System.out.println("Limite cheque especial..." + limitecheque); } }

Lgica

Cdigo

Copyright e-tecnologia.com, 2002

Verso: 3.0

41

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo switch Switch uma alternativa para seleo mltipla de escolha, entretanto, ela tem algumas diferenas da estrutura if - if else. Como, por exemplo, o tipo de dado vlido na expresso somente do tipo char e os tipos inteiros (int, byte, short, long).

Sintaxes: switch (expressao char-integer) { case expressao1: // instrues case expressao2: // instrues case expressao3: // instrues default: // instrues } A instruo switch

Ser impresso abcd

Exemplo: public class switchSimplesExemplo { public static void main(String args[]) { char opcao = 'a'; String selecao = ""; switch (opcao) { case 'a': selecao += a; case 'b': selecao += 'b'; case 'c': selecao += 'c'; default: selecao += "d"; } System.out.println(selecao); } }

Aps a impresso do valor, achamos mais uma diferena em relao ao if - if else, a instruo Switch executa todas as opes aps uma opo vlida. Por exemplo, se valor inicial da varivel opo for igual c, teremos o seguinte resultado para a varivel selecao = cd.

Copyright e-tecnologia.com, 2002

Verso: 3.0

42

Linguagem de Programao JAVA


JB100 Java Bsico
Fluxo de Controle
A instruo switch.

Fundamentos Fundamentos da daLinguagm Linguagem Java Java

Para que a instruo switch execute apenas uma opo, desprezando as demais necessrio incluirmos a instruo break. Bem como o prprio nome da instruo sugere este sai da instruo switch.
Sintaxes: switch (expressao char-integer) { case expressao1: // instrues break; case expressao2: // instrues break case expressao3: // instrues break default: // instrues } A instruo switch com a instruo break

Ser impresso b

public class switchBreakExemplo { public static void main(String args[]) { char opcao = 'b'; String selecao = ""; switch (opcao) { case 'a': selecao += 'a'; break; case 'b': selecao += 'b'; break; case 'c': selecao += 'c'; break; default: selecao += "d"; } System.out.println(selecao); } }

Note que tanto a instruo default quanto a break so opcionais, depende da lgica a utilizada.

Copyright e-tecnologia.com, 2002

Verso: 3.0

43

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo switch. Neste exemplo apresentaremos a instruo switch e a instruo break com mltiplas opes. Veja a lgica e tambm a implementao do cdigo:

sim
case 10

avaliacao = Excelente

no sim
case 9

avaliacao = timo

no

sim
case 8

avaliacao = timo

no sim avaliacao = timo

case 7

no avaliacao = Regular

public class switchCompostoExemplo { public static void main(String args[]) { String avaliacao =""; int nota = 8; switch (nota) { case 10: avaliacao = "Excelente"; break; case 9: avaliacao = "timo"; break; case 8: avaliacao = "Bom"; break; case 7: avaliacao = "Satisfatrio"; break; default: avaliacao = "Regular"; } System.out.println("Avaliao: " + avaliacao); } } Cdigo

Lgica

Copyright e-tecnologia.com, 2002

Verso: 3.0

44

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo switch. Neste exemplo apresentaremos a instruo switch sem o break com mltiplas opes. Veja a diferena:

sim
case S

Ar condicionado

no
case L

sim

Direo hidrulica

no sim
case S

Trio Eltrico

no Alarme

public class switchSemBreakExemplo { public static void main(String args[]) { char opcao = 'B'; String selecao = ""; switch (opcao) { case 'S': //Super luxo selecao += " Ar condicionado +"; case 'L': //Luxo selecao += " Direo hidrulica +"; case 'B': //Bsico selecao += " Trio Eltrico +"; default: selecao += " Alarme"; } System.out.println(selecao); } } Cdigo

Lgica

Copyright e-tecnologia.com, 2002

Verso: 3.0

45

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
Operador Ternrio

E por fim o operador ternrio, Java, oferece uma maneira simples de avaliar uma expresso lgica e executar uma das duas expresses baseadas no resultado. O operador condicional ternrio (?:). muito parecido com a instruo iif() presente em algumas linguagens, Visual Basic, por exemplo. Sintaxe: (<expresso boolean>) ? <expresso true> : <expresso false> ou varivel = (<expresso boolean>) ? <expresso true> : <expresso false>
Neste exemplo apresentaremos uma expresso condicional simples. Veja a lgica e implementao do cdigo. Faa uma comparao com a instruo if-else.

sim saldo > 0 no

status = Positivo

status = Negativo

{ ... Status = (saldo > 0)? Positivo:Negativo; ... }

Lgica

Cdigo

Lembre-se que podemos aninhar operadores e condies, pois, todos suportam a recursividade.

Copyright e-tecnologia.com, 2002

Verso: 3.0

46

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
Laos O que so laos? Laos so repeties de uma ou mais instrues at que uma condio seja satisfeita. A linguagem Java tem dois tipos de laos: os finitos e os infinitos. Para os laos finitos a execuo est atrelada a satisfao de uma condio, por exemplo: Se o valor da varivel a no for igual 10. ento incrementar um na varivel seno imprimir a varivel valor Isto quer dizer que a instruo de incremento vai repetir dez vezes. J os infinitos estes executaro sempre, independente de condio.

no a = 10 a++

sim
Imprimir a

true

a++

Em Java, temos trs instrues que suportam laos ou loops. So elas: while, do-while e for.
Laos: while (<boolean-expression>) <statements>... do <statements>... while (<boolean-expression>); for (<init-stmts>...; <boolean-expression>; <exprs>...) <statements>...

Copyright e-tecnologia.com, 2002

Verso: 3.0

47

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo while. Ela executa uma instruo ou bloco de instrues, enquanto uma determinada condio no for satisfeita. Ela faz a validao antes de executar as instrues.

Sintaxe: while (expressao boolean) instruo java

Este cdigo ser executado 10 vezes, ou seja at a condio ser satisfeita

Exemplo: public class whileExemplo2 { public static void main(String args[]) { int d = 10; while (d >= 0) System.out.println("Contagem Regressiva " + d--); } }

Sintaxe: while (expressao boolean) { //Bloco }

A instruo while

Exemplo: public class whileExemplo { public static void main(String args[]) { int d = 1; while (d<= 10) { System.out.println("7 x " + d + " = " + 7*d); d++; } } }

Este cdigo produzir a Tabuada do 7 Neste exemplo o lao finito, ou seja, ir executar at a condio estar satisfeita

Copyright e-tecnologia.com, 2002

Verso: 3.0

48

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo while. Os exemplos abaixo demonstram como tornar um lao infinito usando a instruo while, provavelmente isto no dever acontecer, todavia, pode ser um pequeno erro de lgica, inverso de valores ou uma condio 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++); } ....

Copyright e-tecnologia.com, 2002

Verso: 3.0

49

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo while. O exemplo abaixo exibe a lgica e a implementao do cdigo de um lao finito usando a instruo while.

no
valor < 20 sim

Valor++

Imprime valor
Sai do Lao

{ ... while(valor <20) valor++ System.out.println(valor); ... }

Lgica

Cdigo

Copyright e-tecnologia.com, 2002

Verso: 3.0

50

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo do-while. Ela tem uma pequena diferena da instruo while, enquanto a instruo while verifica a expresso boolean (lgica) antes e somente depois executa a instruo ou o bloco de instrues, a instruo do-while executa primeiro e depois verifica a condio. Sintaxe: do instruo java while(expresso boolean)

Este cdigo ser executado 10 vezes, ou seja at que a condio seja satisfeita

Exemplo: public class dowhileExemplo { public static void main(String args[]) { long d=10; do System.out.println(d++); while (d <=20); } }

Sintaxe: do { //Bloco } while(expresso boolean)

A instruo do-while primeiro executa as instrues que esto dentro de bloco e depois verifica a expresso boolean

Exemplo: public class dowhileExemplo2 { public static void main(String args[]) { int d = 100; do { System.out.println("Faixa " + Math.random()*d); d++; } while (d <=110); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

51

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo do-while. O exemplo abaixo exibe a lgica e implementao do cdigo de lao finito usando a declarao do-while.

Valor++ no

Imprime valor

Valor < 20 sim

... do { valor++; System.out.println(valor); } while(valor <20) ...

Lgica

Cdigo

Agora faa uma comparao entre a instruo while e do-while:

valor < 20 sim

no

Valor++

Imprime valor
Sai do Lao

{ ... while(valor <20) valor++; System.out.println(valor); ... }

Lgica

Cdigo

Copyright e-tecnologia.com, 2002

Verso: 3.0

52

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo for

A instruo for a mais popular entre as instrues de lao. A instruo for como as demais instrues de laos repetem uma instruo ou bloco de instrues at que determinada condio seja satisfeita.
Sintaxes: for(valor-inicial1, valor-inicial2 ; condio; valor de incremento/decremento) instruo java; for(valor-inicial; condio; valor de incremento/decremento) { //Bloco de instrues } for(;condio; valor de incremento); for(l;; valor de incremento); for();

onde: valor-inicial - valor de inicio (esta varivel que pode ser definida dentro do for ou fora). Exemplo: int x; for(x=1;x<10;x++) instruo Java ou For(int x=1;x<10;x++) instruo Java
condio: expresso lgica, Exemplo: For(x=1;x<10;x++) instruo Java

valor de incremento: valor que incrementaremos ou decrementaremos For(x=1;x<10;x--) instruo Java

Copyright e-tecnologia.com, 2002

Verso: 3.0

53

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo for

Veja abaixo alguns exemplos da implementao da instruo for:


public class forExemplo { public static void main(String args[]) { int d; for(d=180; d <=190; d++) System.out.println("Faixa 180-190 : " + Math.random()*d); for(d=200; d <=210; d++) { System.out.println("Faixa 200-210: " + Math.random()*d); } int i; for(d=220,i=10; d <=230; d++, i++) { System.out.println("Faixa 220-230 " + Math.random()*d); System.out.println("Valor de i " + i); } for(d=230,i=20; d <=240 && i < 35; d++, i++) { System.out.println("Faixa 230-240 " + Math.random()*d); System.out.println("Valor de i " + i); } for(i=40; i >= 30; i--) { System.out.println("Valor de i 40-30 " + i); } } }

Sem bloco
Com bloco

Trabalhando com valores Trabalhando com valores e condio composta Trabalhando com ordem decresente

Copyright e-tecnologia.com, 2002

Verso: 3.0

54

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo for Veja abaixo mais exemplos, desta vez, com algumas variaes possveis da instruo for:

Sem declarar valor-inicial

Sem condio. A condio est associado a instruo if Sem valor de incremento ou decremento.

For aninhados

Decrementado de dois em dois

public class forExemplo1 { public static void main(String args[]) { int d=170; for(;d <=190; d++) System.out.println("Faixa 180-190 : " + Math.random()*d); for(d=200; ;d++) { System.out.println("Faixa 200-210: " + Math.random()*d); if (d>210) break; } for(d=210; d < 220;) { System.out.println("Faixa 210-220: " + Math.random()*d); d++; } int i=10; for(d=220; d <=230; d++) { 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) { System.out.println("Valor de i 40-30 " + i); } } }

Note que a instruo break pode ser usada para sair de instruo de lao (while, do-while e for).

Copyright e-tecnologia.com, 2002

Verso: 3.0

55

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
A instruo for O exemplo abaixo demonstra a lgica e implementao do cdigo para a instruo for:

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

sim

i >=0 no

i=i-2

Lgica

Cdigo

Agora faa uma comparao entre a instruo do while, do-while e for. Quem ser mais rpido ?

Copyright e-tecnologia.com, 2002

Verso: 3.0

56

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
Label (rtulo)

Em Java temos uma estrutura de bloco chamada Label. Esta defini um bloco de instrues que podem ser executadas, devido sua lgica, que similar ao comando goto da Linguagem Basic. Esta estrutura no muito usual.
Sintaxe: <nome-da-label>: instruo java ou <nome-da-label>: { //Bloco de instrue } Veja a label e a instruo for que parte da label_one

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

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

Copyright e-tecnologia.com, 2002

Verso: 3.0

57

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Fluxo de Controle
Label (rtulo)

Outro exemplo de Label, desta vez usando a instruo continue


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; } } } }

A instruo continue s vezes precisamos pular para aquela ou esta parte do programa sem passar pelo resto das instrues.

Copyright e-tecnologia.com, 2002

Verso: 3.0

58

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Arrays
Os arrays so objetos. Devem possuir um tamanho definido no momento de sua instanciao, por exemplo: int[ ] arrayInt = new int[5], ou int[ ] arrayInt arrayInt = new int[5] Os elementos de array so acessados pelo ndice, que sempre dever comear em 0. No so permitidos ndices invlidos, que resultam em exceo. ArrayOutOfBoundsException. Os arrays podem receber variveis do tipo primitivo (int, double, char, boolean, short e etc) ou do tipo referncia, objetos, (String, Double, Integer e etc). Quando um Arrays redimensionado todos os elementos so perdidos. Exemplo: float ArrayReDim[ ] = new float[5]; ArrayReDim[ ] = new float[15]; Exemplo: Inicializao de Arrays
Exemplo 1 String nomes[ ]; nomes = new String[3] names[0] = "Duke"; names[1] = "Jane"; names[2] = "Tarzan"; Exemplo 3 MinhasDatas dates[ ]; dates = new MinhasDatas[2]; dates[0] = new MinhasDatas(22, 7, 2000); dates[1] = new MinhasDatas(01, 4, 1999); Exemplo 2 String nomes[ ] = {"Duke", "Jane","Tarzan"};

Exemplo 4 MinhasDatas dates[ ] = { new MinhasDatas[2], new MinhasDatas(22, 7, 2000) , new MinhasDatas(01, 4, 1999); }

Arrays Multi-Dimensionais: Declarao correta: double duplaDim [ ] [ ] = new double [4] [ ]; duplaDim [0] = new double [1]; duplaDim [1] = new double [2]; duplaDim [3] = new double [3]; Declarao Incorreta: double duplaDim [ ] [ ] = new double [ ] [4 ];

Copyright e-tecnologia.com, 2002

Verso: 3.0

59

Linguagem de Programao JAVA


JB100 Java Bsico
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 Mtodos: arraycopy = faz cpia de array A para o B. Exemplos: public class TestArray1 { public static void main (String args [ ]) { int[] thisArray = {1,2,3,4,5,6,7,8,9,10}; for (int i =0; i < thisArray.length; i++) { System.out.println("Contedo" + thisArray[i]); } } }

Declara e atribui os valores para thisArray Imprime no console os itens do thisArray

Declara e atribui os valores para array

Imprime no console os itens do array

public class TestArray2 { public static void main (String args [ ]) { String[] estadosul = new String[3]; estadosul[0]="RS"; estadosul[1]="SC"; estadosul[2]="PR"; for (int i =0; i < estadosul.length; i++) { System.out.println("Contedo " + estadosul[i]); } } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

60

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Passagem de Parmetros
A passagem de parmetros em Java somente por valor. Passando por Valor A passagem de argumentos na linguagem Java somente por valor isto , o argumento no podem ser mudados pelo mtodo chamado. Quando uma instance do objeto passado como um argumento a um mtodo, o valor do argumento referncia ao objeto. O contedo do objeto pode ser alterado no mtodo chamado, mas a referncia do objeto jamais mudada.

Copyright e-tecnologia.com, 2002

Verso: 3.0

61

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Passagem de Parmetros
Parmetros de inicializao: Podemos passar parmetro de inicializao para o mtodo principal. Veja o fragmento de cdigo:

... 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 espao em branco a separao entre os itens, no exemplo, acima temos trs itens passados. Vale lembrar que o tipo destes parmetros do tipo String, por definio da linguagem. Para passar valores que tem nome composto acrescente aspas. java TestParam Jose Maria Maria Joao

Copyright e-tecnologia.com, 2002

Verso: 3.0

62

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
A classe Math
A Math contm um grupo de funes matemticas e estatsticas.

Principais mtodos:
Truncar: ceil, floor e round Variao: max, min, e abs() Trigonomtricas: 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))); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

63

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Empacotamento de Classes
possvel trabalhar com vrios tipos de dados, desde nmeros binrios, hexadecimal, boolean, string, etc. Em muitos casos h a necessidade de fazer converso de um tipo de dado para outro. Bem, comearemos com a converso de tipos primitivos para tipo referncia (objetos), esta operao tambm 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 referncia

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(); //Converso de valores: String valueStr = "10"; double d1 = Double.valueOf(valueStr).intValue(); //ou double d2 = Double.parseDouble(valueStr); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

64

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Converso de Tipos
Uma lista de exemplos de converso 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: int variavel = 14; String str = Integer.toString(variavel); ou int variavel = 14; String str = "" + variavel

Copyright e-tecnologia.com, 2002

Verso: 3.0

65

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Converso de Tipos
Mais exemplos: > Convertendo Integer em cdigo 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 Binrio: 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;

Copyright e-tecnologia.com, 2002

Verso: 3.0

66

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
A referncia this
O Java associa automaticamente a todas as variveis e mtodos referenciados com a palavra reservada this. Por isso, na maioria dos casos torna-se redundante o uso em todas as variveis da palavra this. Aplicao: Impedir ambigidade de nome de variveis. Restrio: No pode ser aplicada a mtodos estticos, por exemplo, o mtodo main. Exemplo: Existem casos em se faz necessrio o uso da palavra this. Por exemplo, podemos necessitar chamar apenas uma parte do mtodo passando uma instncia 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 ambigidade. Note que no mtodo setIdade, o parmetro chama-se idade e o atributo tambm tem o mesmo nome, ou seja, o mesmo identificador, neste caso o this separa o atributo do parmetro.

Copyright e-tecnologia.com, 2002

Verso: 3.0

67

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees
O que so colees? Colees (tambm conhecidas como container) um simples objeto que pode agrupar mltiplos elementos. Colees so utilizadas para armazenar, recuperar e manipular dados. Os mtodos so responsveis por realizar as operaes. A estrutura das colees inclui uma variedade de recursos que simplificam o desenvolvimento. Essa uma implementao da noo de reso de cdigo. Um exemplo de coleo 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 padro 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 Hastable. Para adicionar elementos na tabela usaremos o mtodo put, put(object key, Object value). Este mtodo da classe Hashtable. Para recuperar o elemento usado como chave, devemos usar o mtodo get, get(object key). Para remover um elemento usamos o mtodo remove.

Exemplo:
API import java.util.*; public class TestHashTable { public static void main(String Arg[]) { Hashtable table = new Hashtable(); table.put("1", "Joao"); table.put("2", "Jose"); table.put("3", "Maria"); table.put("4", "Marta"); table.put("5", "Pedro"); table.put("6", "Mateus"); String find = (String) table.get("4"); System.out.println(find); } }

Implementao de tabela Hash e uso dos mtodos put e get

Copyright e-tecnologia.com, 2002

Verso: 3.0

68

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees
Enumeration (API: Java.util.Enumeration)

Retorna uma enumerao de uma coleo (Tabela Hash, por exemplo) especificada. Principais mtodos: hasMoreElements e nextElements.
Exemplo: API import java.util.Enumeration.*; import java.util.*; public class EnumerationExemplo { public static void main(String Arg[]) { Hashtable table = new Hashtable(); table.put("1", "Joao"); table.put("2", "Jose"); table.put("3", "Maria"); table.put("4", "Marta"); table.put("5", "Pedro"); table.put("6", "Mateus"); Enumeration e = table.elements(); while(e.hasMoreElements()){ String valor = (String) e.nextElement(); System.out.println(valor); }

Tabela Hash e mtodos

Usando a Interface Enumeration, podemos imprimir todos os valores contidos na tabela Hash

}
}

import java.util.Iterator.*; ... Iterator i = table.values().iterator(); while(i.hasNext()){ String valor = (String)i.next(); System.out.println(valor); }
Copyright e-tecnologia.com, 2002

Opcionalmente podemos usar Iterator que tem a funcionalidade parecida com Enumeration

Verso: 3.0

69

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees
Vector (API: Java.util) A classe Vector possibilita a criao de vetor dinmico para armazenamento de referncias de objetos, que pode ser indexado por nmero inteiro. Mtodos principais: addElement(), remove(), size(), element() entre outros

Exemplo: API import java.util.*; public class TestVector { public static void main(String Arg[]) { Vector v = new Vector(); Integer y; for(int x=0;x<5;x++) { y = new Integer(x); v.addElement(y); } Object[] objArray = v.toArray(); for(int x=0;x<5;x++) { System.out.println(objArray[x]); } } }

Declarao do Vector Adiciona valores ao Vector. Note que estes valores so do tipo referncia, ou seja, objetos Converte um Vector para um array .

Exerccio: Use Enumeration para listar todos os elementos de Vector.

Copyright e-tecnologia.com, 2002

Verso: 3.0

70

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees
ArrayList ( API: Java.util). ArrayList array dimensionvel da Interface List parecido com Vector. No exemplo abaixo permitido que os valores sejam duplicados, porm, desordenados. Principais mtodos: add, remove, clear, size, isEmpty, get, set, iterator.

Exemplo: API import java.util.*; public class ListExemplo { public static void main(String[] args) { List list = new ArrayList(); list.add("um"); list.add(new Integer(4)); list.add("terceiro"); list.add(new Integer(4)); System.out.println(list); Vector v = new Vector(); Integer y; for(int x=0;x<5;x++) { y = new Integer(x); v.addElement(y); } List listVector = new ArrayList( v ); System.out.println(listVector); } Imprime todos os valores da lista }

Declarao do ArrayList Insero de valores na lista. Veja que estes valores so objetos Imprime os valores da lista

Uma nova coleo

Uma outra construo para a lista, neste caso ela recebe uma coleo como argumento

Copyright e-tecnologia.com, 2002

Verso: 3.0

71

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees
HashSet (API: Java.util) A classe HashSet Implementa a interface Set, ela tambm tem suporte da HashTable. Ela uma coleo que no pode conter elementos duplicados. Principais mtodos: add, clear, remove, size, iterator e isEmpty. Exemplo: import java.util.*; //Com ordem e sem repetio public class SetExample { public static void main(String[] args) { Set set = new HashSet(); set.add(dois"); set.add("3rd"); set.add(new Float(11.1F)); set.add(quarto"); set.add(new Float(11.1F)); System.out.println(set); } }

API

Declarao do HashSet
Insero de valores na lista. Veja que estes valores so objetos

Imprime os valores da lista

Copyright e-tecnologia.com, 2002

Verso: 3.0

72

Linguagem de Programao JAVA


JB100 Java Bsico
Fundamentos da Linguagem Java
Colees

Copyright e-tecnologia.com, 2002

Verso: 3.0

73

Linguagem de Programao JAVA


JB100 Java Bsico
Pacotes
Pacotes
A linguagem Java estruturada em pacotes, estes pacotes contm classes que por sua vez contm atributos e mtodos. Pacote forma de organizao da linguagem Java, prevenindo de problemas como a repetio de identificadores (nomes) de classes e etc. Podemos usar a estrutura de pacotes para associar classes com semntica semelhante, ou seja, classes que tem objetivo comum. Por exemplo, colocaremos em nico pacote todas as classes que se referem a regras de negcios. Exemplo:

Aplicao

Interface de Usurio

Regras de Negcios

Controle

Fisicamente os pacotes tem a estrutura de diretrio e subdiretrio, isto quer dizer que a Aplicao ter a seguinte formato: Aplicao Regras de Negcios Interface de Usurio Controle

Copyright e-tecnologia.com, 2002

Verso: 3.0

74

Linguagem de Programao JAVA


JB100 Java Bsico
Pacotes
Pacotes
Import A instruo import faz importao para o arquivo fonte (.java) das classes indicadas, cujo o diretrio base deve estar configurado na varivel de ambiente: CLASSPATH. Sintaxe: import <classes>; Exemplos: Substituindo os pontos por barras teramos o caminho import java.awt.Button; import java.awt.*; Neste caso estaramos importando todos objetos contidos na classe Package Esta instruo deve ser declarado na primeira linha do programa fonte, este instruo serve para indicar que as classes compiladas faz parte do conjunto de classes (package), ou sejam uma pacote, indicado pela notao path.name (caminho e nome do pacote). Sintaxe: package <path.name>; package MyPck; public class ClassPkg { public ClassPkg() { System.out.println("Teste de package..."); } Gerar pacotes: javac -d . *.java import java/awt/Button; Aqui estaramos importando somente o objeto Button

}
Diretrio Corrente

MyPck
---------

ClassPck.class

TestPck.class

import MyPck.ClassPkg; public class TestPkg { public static void main(String args[]) { ClassPkg p = new ClassPkg(); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

75

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

76

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Classe

O que uma Classes? Uma classe descreve um conjunto de objetos com propriedades e comportamentos semelhantes e com relacionamentos comuns com outros objetos
As classes parte mais importante de um sistema orientada a objetos. Usamos as classes para capturar o vocabulrio do sistema que est em desenvolvimento. Essas classes podem incluir abstraes que so parte do domnio do problema, assim como as classes que fazem implementao de operaes. 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 mtodos comuns

Nome da Classe Pessoa nome idade getNome() getIdade()

Atributos Mtodos

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

Copyright e-tecnologia.com, 2002

Verso: 3.0

77

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Classe
Exemplo: A classe Pessoa. Classe concreta.

public class Pessoa { //Atributos private String nome; private int idade; //mtodos public String getNome(){ return nome; } public void setNome(String nome){ this.nome = nome; } public int getIdade(){ return idade; } public void setIdade(int idade){ this.idade = idade; } }

Exemplo de diagrama de classe usando Rational Rose (notao Unified)

Classe Concreta: uma classe que tem assinatura e a implementao de mtodos.

Copyright e-tecnologia.com, 2002

Verso: 3.0

78

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Classe
Exemplo: A classe Pessoa. Classe Abstrata public abstract class Pessoa { protected String nome;

public abstract String getnome();


public abstract void setnome(String nome); }

Se uma classe abstrata se mtodos tambm so

Observe que os mtodos no implementados. Simplesmente assinados.

Diferenas ente Classe Abstrata e Concreta: Classe Abstrata Os mtodos devem ser somente assinados No pode sofrer instance Relacionamento somente atravs de herana Classe Concreta Os mtodos podem ser assinados e implementados Poder sofrer instance 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 mtodos assinados na classe Pai.

Classe Abstrata: uma classe que tem apenas assinatura de mtodos sem implementao.

Copyright e-tecnologia.com, 2002

Verso: 3.0

79

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Objetos
O que so Objetos ? So qualquer coisa na natureza que possua propriedades (caractersticas) e comportamentos (operaes). Exemplo: uma pessoa, uma co e etc Orientao a Objetos: O termo orientao a objetos significa organizar o mundo real como uma coleo de objetos que incorporam estrutura de dados e um conjunto de operaes que manipulam estes dados. Estrutura de um objeto Objetos combinam propriedades (atributos) e comportamentos (operaes). Podemos dizer que objeto espcie da classe, ou seja, uma instance da classe

Exemplos de Objetos: Objeto: Pessoa Propriedades


Bonita Jovem Inteligente

Comportamentos
Andar Correr Falar Chorar Danar

Copyright e-tecnologia.com, 2002

Verso: 3.0

80

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Objetos
O que so Objetos ? So qualquer coisa na natureza que possua propriedades (caractersticas) e comportamentos (operaes). Exemplo: uma pessoa, uma co e etc Orientao a Objetos: O termo orientao a objetos significa organizar o mundo real como uma coleo de objetos que incorporam estrutura de dados e um conjunto de operaes que manipulam estes dados. Estrutura de um objeto Objetos combinam propriedades (atributos) e comportamentos (operaes). Podemos dizer que objeto espcie da classe, ou seja, uma instance da classe

Exemplos de Objetos: Classe: Cliente e objetos


Cliente nome cpf idade

Cliente: clientemulher nome = Marina cpf = 022.200.708-12 idade = 16


Copyright e-tecnologia.com, 2002

Cliente: clientehomem nome = Felipe cpf = 039.217.908-22 idade = 22


Verso: 3.0

81

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Mtodos
Mtodos so os comportamentos de um objeto. A declarao feita da seguinte forma: < modificador > < tipo de retorno > < nome > ( < lista de argumentos > ) < bloco > < modificador > -> segmento que possui os diferentes tipos de modificaes inclundo public, protected, private e default (neste caso no precisamos declarar o modificador). < tipo de retorno > -> indica o tipo de retorno do mtodo. < nome > -> nome que identifica o mtodo. < lista de argumentos > -> todos os valores que sero passados como argumentos. Exemplos: public void somaDias (int dias) { } private int somaMes(int ms) { } protected String getNome() { } int getAge(double id) { } public class CalculaData { private int day, month, year; public float calcDays(int age ) { return 365.25F * age; } }

mtodo

Copyright e-tecnologia.com, 2002

Verso: 3.0

82

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Mtodos
Mtodo a implementao de uma operao. As mensagens identificam os mtodos a serem executados no objeto receptor. Para chamar um mtodo de um objeto necessrio enviar uma mensagem para ele. Por definio todas as mensagens tem um tipo de retorno, por este motivo em Java, mesmo que mtodo no retorne nenhum valor ser necessrio usar o tipo de retorno chamado void (retorno vazio). public class ContaCorrente { private int conta=0; private double saldo=0; public double getSaldo(){ return saldo; } public void setDeposito(int valordeposito) { return saldo +=valordeposito; } public void setSaque(double valorsaque) { return saldo -=valorsaque; } }

ContaCorrente conta saldo setDeposito getSaldo setSaque

Copyright e-tecnologia.com, 2002

Verso: 3.0

83

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientao a Objetos Orientada a Objetos
Construtores
O que so construtores? Construtores so um tipo especial de mtodo usado para inicializar uma instance da classe. Toda a classe Java deve ter um Construtor. Quando no declaramos o Construtor default, inicializado automaticamente pelo Java. Mas existem casos que se faz necessrio a declarao explcita dos construtores. O Construtor no pode ser herdado. Para cham-lo a partir de uma subclasse usamos a referncia super. Para escrever um construtor, devemos seguir algumas regras: 1 O nome do construtor precisa ser igual ao nome da classe; 2 No deve ter tipo de retorno; 3 Podemos escrever vrios construtores para mesma classe.

Veja abaixo o exemplo:

public class Mamifero { private int qdepernas; private int idade; public Mamifero(int idade) { this.idade = idade; } public Mamifero(int idade, int pernas) { this.idade = idade; this.qdepernas = pernas; }

Construtores Podemos ter mais de um construtor na mesma classe.

//Mtodos
}

Copyright e-tecnologia.com, 2002

Verso: 3.0

84

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Atributos e variveis
Os atributos so pertencentes a classe, eles podem ser do tipo primitivo ou referncia (objetos), os seus modificadores podem ser: public, private, protected ou default. O ciclo de vida destes atributos esto vinculados ao ciclo de vida da classe. Variveis Locais: So definidas dentro dos mtodos. Elas tm o ciclo de vida vinculado ao ciclo do mtodo, tambm so chamadas de variveis temporrias

public class Disciplina { private int cargaHoraria; private String nome; 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); return cargaHoraria = horasPlanejamento + qdeHoras; } }

Atributos

Modificador

Variveis temporrias

Copyright e-tecnologia.com, 2002

Verso: 3.0

85

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Exemplo de Classe

Livro Legenda: 1 Objeto no mundo real 2 Modelo de implementao da classe Livro 3 Codificao da classe Livro 3
public class Livro extends Object { public Livro() { } private int isbn; private String titulo; private String autor; public int getISBN(){ return isbn; } public void setISBN(int isbn){ this.isbn=isbn; } public String getTitulo(){ return titulo; } 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

Copyright e-tecnologia.com, 2002

Verso: 3.0

86

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Exerccio sobre modelo de Classe
1 (Identifique o objeto no mundo real)

Descreva o conceito:

Faa o desenho da classe: Nome da Classe

Faa a codificao do modelo de classe:

Atributos 1 Atributos 2 Atributos 3 Mtodos 1 Mtodos 2 Mtodos 3

public class <nome da classe> { public <nome da classe> () { } private <tipo> atributo; private <tipo> atributo; private <tipo> atributo; public <tipo> <nome mtodo(lista de param...){ return <tipo de retorno>; } public <tipo> <nome mtodo(lista de param...) { this.atributo=valor param; } public <tipo> <nome mtodo(lista de param...){ return <tipo de retorno>; } public <tipo> <nome mtodo(lista de param...) { this.atributo=valor param; } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

87

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Abstrao de Dados
Para discutirmos sobre classes abstratas necessrio falarmos sobre a abstrao de dados. O que abstrao? Podemos dizer abstrao generalizao. Qual a funo da abstrao ? A funo da abstrao capturar as propriedades e os comportamentos essenciais, como se fosse uma fatorao, desta forma determina-se o que importante e o que no .

Aeronave

Mamfero

Caa

Helicptero Passageiros

Vaca

Urso

Cavalo

As classes Aeronave e Mamfero neste caso so abstratas e ambas representam um domnio.

Copyright e-tecnologia.com, 2002

Verso: 3.0

88

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Abstrao de Dados Classes Abstratas
Uma classe abstrata uma classe que: Prov organizao No possui instances Possui uma ou mais operaes (mtodos) abstratas

Pessoa getNome()

Classe Abstrata

Pessoa Fsica getNome()


Classe concreta

Pessoa Jurdica getNome()

Uma operao abstrata s determina a existncia de um comportamento no definindo uma implementao. Classes Abstratas - Exemplo:

Funcionrio

Classe Abstrata

Analista

Programador

Classe concreta

Copyright e-tecnologia.com, 2002

Verso: 3.0

89

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Abstrao de Dados Classes Abstratas Pessoa
Classe concreta Classe Abstrata

getNome()

Pessoa Fsica getNome()

Pessoa Jurdica getNome()

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) {} }

Copyright e-tecnologia.com, 2002

Verso: 3.0

90

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Abstrao de Dados Classes Abstratas Pessoa
Classe concreta

Classe Abstrata

getNome()

Pessoa Fsica getNome()

Pessoa Jurdica 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; } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

91

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Relacionamento
Ao construir as abstraes, descobrimos que so poucas as classes que trabalham sozinhas. Em vez disso, a maioria das classes colaboram com outras classes de vrias maneiras. Portanto, quando estamos modelando, devemos identificar as classes, atributos, mtodos e relacionamentos. Existem alguns tipos principais de relacionamentos entre classes e objetos: Herana Associao Agregao Composio Veja a definio de relacionamento:

Um relacionamento a conexo 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

Funcionrio

Professor Autnomo

Pessoal Operacional

Professor

Pessoal Administrativo

Relacionamento: 1 - Pessoa a SuperClasse de Terceiro, Aluno e de Funcionrio, estas so subclasse de Pessoa. 2 - Terceiro e Funcionrio so SuperClasse de Professor e Pessoal Administrativo e de Professor Autnomo e Pessoal Operacional respectivamente. E estas so subclasse de Terceiro e Funcionrio.

Copyright e-tecnologia.com, 2002

Verso: 3.0

92

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Herana
Herana o mecanismo pelo qual elementos mais especficos incorporam a estrutura e comportamento de elementos mais gerais, Uma classe derivada herda a estrutura de dados e mtodos de sua classe base, mas pode seletivamente: adicionar novos mtodos estender a estrutura de dados redefinir a implementao de mtodos 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 Universitrio extends Graduao Ps-Graduao extends

Especializao
Hierarquia de Classes

Extenso

Podemos dizer que Graduao tipo de Curso Universitrio, assim como Curso de Especializao ou de Extenso.

Copyright e-tecnologia.com, 2002

Verso: 3.0

93

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Herana
Exemplo: Implementao- Pessoa, Aluno, Terceiro, Funcionrio
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{ private int codigoTerceiro; public Terceiro(String nome) { super(nome); } public int getIdade() { return 0; } public String getNome() { return ""; }; }

public class Aluno extends Pessoa{ public Aluno(String nome) { super(nome); } public int getIdade() { return 0; } public String getNome() { return ""; }; }

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

Professor Professor Autnomo Pessoal Operacional

Pessoal Administrativo

Copyright e-tecnologia.com, 2002

Verso: 3.0

94

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Herana
Exemplo de Herana: Implementao: ProfessorAutonomo, PessoalOperacional, Professor e Pessoal Administrativo
Pessoa

Terceiro

Aluno

Funcionrio

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

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

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

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

Copyright e-tecnologia.com, 2002

Verso: 3.0

95

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Herana Mltipla
A herana mltipla quando uma classe tem mais que uma Superclasse associada e que herde as caractersticas de todas elas. Veja a figura abaixo: Superclasse <<interface>> Mamfero

Pessoa

Superclasse

Pessoa Fsica

Pessoa Jurdica

Relacionamento: Pessoa Fsica tipo de pessoa, mas tambm mamfero. Na linguagem Java: A Herana mltipla somente permitida por contrato, neste caso a Mamfero uma Interface, podemos dizer que tipo especial de classe, que no pode ter mtodos implementados, apenas as assinaturas. <<interface>> Mamfero Interface: O que interface ? Interface um contrato entre o cliente, que pode ser classe concreta ou abstrata, e a interface. Este contrato garantia que o mtodos assinados na interface sero implementados na classe cliente. Nota: Na interface tambm podemos declarar constantes (public static final).

Exemplo de Interface

interface Product { String getName (); double getCost (); }

Copyright e-tecnologia.com, 2002

Verso: 3.0

96

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Herana Mltipla
Exemplo: Implementao 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 abstract int getIdade(); public void setIdade(int idade){ } }

public interface Mamifero { final int qdeOlhos=2; public int getQdePernas(); }

extends implements extends


public class PessoaJuridica1 extends Pessoa { public PessoaJuridica1(String nome) { super(nome); } public int getIdade() { return 0; } public String getNome() { return ""; }; }

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

Exerccio: 1 - Podemos implementar a herana mltipla na Classe Pessoa? Por que ? 2 - Por que somos obrigado a assinar ou implementar os mtodos da Interface Mamifero na classe PessoaFisica

Copyright e-tecnologia.com, 2002

Verso: 3.0

97

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Comparao: classes e interfaces
Tipo Classe Concreta Classe Abstrata Interface

Herana Permite a implementao de Mtodos Permite a declarao de Dados

extends
(simples)

extends
(simples)

implements
(mltipla)

sim

no

no

sim

sim

sim
(somente final)

Copyright e-tecnologia.com, 2002

Verso: 3.0

98

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
A referncia super
A palavra super usada para referenciar a superclasse ou classe pai, na verdade o construtor da classe hierarquicamente superior, podemos usa-lo tambm para fazer referncia aos membros (atributos e mtodos), da superclasse. Desta forma temos uma extenso do comportamento. Exemplo: public class Empregado { private double salario; public Empregado(){ salario=0.00; } public double getSalario(){ return this.salario; } }

Superclasse

public class Gerente extends Empregado { private double bonus = .15; public Gerente(){ //referncia ao Construtor super(); } public double getSalario(){ //referncia ao mtodo getSalario return super.getSalario() + (super.getSalario()*this.bonus); } }

Subclasse

Copyright e-tecnologia.com, 2002

Verso: 3.0

99

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Associao
Definio de Associao:

Um relacionamento estrutural que descreve um conjunto de vnculos, em que o vnculo uma conexo entre objetos; o relacionamento semntica entre dois ou mais classificadores que envolve as conexes entre seus objetos

Associao classe
Usuario Senha

classe

public class Usuario { public Senha m_Senha;

public class Senha { public Usuario m_Usuario;

Usuario() {
} } }

Senha() {
}

Copyright e-tecnologia.com, 2002

Verso: 3.0

100

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Navegao
Navegao Navegao uma associao unidirecional

Pedido Pedido tem a responsabilidade de identificar quais so seus itens. J os itens no tem a responsabilidade de saber a qual pedido que eles pertencem.

ItemPedido

O Cdigo Java:

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

public ItemPedido { public ItemPedido() { } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

101

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Rolename
Definio de RoleName: um identificador (nome) do papel da associao, podendo cada ponta ter um nome especifico. public class Empresa { public Pessoa Empregado; Empresa() { } }

public class Pessoa { public Empresa Empregador[]; Pessoa() { } }

As rolename neste caso so usadas identificadores dos atributos (das classes).

Copyright e-tecnologia.com, 2002

Verso: 3.0

102

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Agregao
Definio de Agregao: Um forma especial de associao, 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() { } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

103

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Composio
Definio de Composio: Uma forma de agregao com propriedade bem-definida e tempo de via coincidente das partes pelo todo; as partes com multiplicidade no fixada podero ser criada aps a prpria composio, mas, uma vez criadas, vivem e morrem com elas; essas partes tambm podem ser removidas explicitamente antes da morte do elemento composto.

Cliente

Pedido

Todo

Dados do Pedido N 19069 Cliente 1 Cliente A Data: 01/01/2002

ItemPedido

Parte de um todo

Produto

It Descrio Qt Preo -------------------------------01 Produto A 10 12,40 02 Produto B 01 2,40 03 Produto C 11 5,60 04 Produto D 09 2,23

Copyright e-tecnologia.com, 2002

Verso: 3.0

104

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Multiplicidade
Definio de Multiplicidade: A especificao de uma faixa de nmeros cardinais, que um conjunto pode assumir.

Cliente 1 0..*

Pedido 1 1..* ItemPedido * 1 Produto

Todo

Dados do Pedido N 19069 Cliente 1 Cliente A Data: 01/01/2002

Parte de um todo

It Descrio Qt Preo -------------------------------01 Produto A 10 12,40 02 Produto B 01 2,40 03 Produto C 11 5,60 04 Produto D 09 2,23

Copyright e-tecnologia.com, 2002

Verso: 3.0

105

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Exemplo de implementao de Composio e multiplicidade
public class Cliente { public Pedido m_Pedido[]; public class Pedido { public ItemPedido m_ItemPedido[]; Pedido() {

Cliente() {
} } }

Cliente 1 0..*

Pedido 1 1..* ItemPedido * 1 Produto

public class ItemPedido {


public Pedido m_Pedido; public Produto m_Produto;

ItemPedido() { } public class Produto { public ItemPedido m_ItemPedido[]; Produto() { } } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

106

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Constraint
As constraint (restries) ampliam o vocabulrio dos elementos na UML, permitindo alterar ou incluir novas regras aos elementos do modelo.

Pedido

faz

Cliente

1 {se Pedido.Cliente.AnaliseCredito ruim, ento pedido.ePrePago deve ser verdadeiro}

* Pedido * 1 Produto

Constraint AnaliseCredito

Copyright e-tecnologia.com, 2002

Verso: 3.0

107

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Exemplo de modelo de classes

<<negcio>> Cliente <<negcio>> Vendedor PercentualDeComissao 1 1 realizada para 1..* <<negcio>> Venda realizada por DataDaVenda * 1

<<negcio>> Produto QtdeEmEstoque

SituacaoFinanceira

1 corresponde * <<negcio>> ItemDeVenda composta de QtdeVendida 1..*

<<negcio>> VendaAPrazo compreende 1 1..*

<<negcio>> Prestacao DataDeVencimento ValorDaPrestacao

Copyright e-tecnologia.com, 2002

Verso: 3.0

108

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Exerccio
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 faa o diagrama de classe correspondente com seus respectivos relacionamentos.

Copyright e-tecnologia.com, 2002

Verso: 3.0

109

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Encapsulamento
uma proteo adicional dos dados do objeto de possveis modificaes imprprias, forando o acesso a um nvel mais baixo para tratamento do dados. Operaes/mtodos/interface pblica Classe Empregado e mtodo getSalario

Dados/Atributos/propriedades privada

O atributo salario

public class Empregado { private private double double salario; salario; public Empregado(){ salario=0.00; } public double getSalario(){ return this.salario; } }

O atributo salario somente poder ter um valor atribudo ou alterado, atravs de mtodo pblico.

Atravs do mtodo getSalario, que tem modificador public, podemos manipular ou recuperar o valor do atributo salario.

Encapsulamento (data hiding)


Encapsulamento definido como uma tcnica para minimizar dependncias entre mdulos atravs da definio de interfaces externas. Tambm conhecido como: O fenmeno da caixa preta

Copyright e-tecnologia.com, 2002

Verso: 3.0

110

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Encapsulamento
A interface (pblica) de um objeto declara todas as operaes permitidas (mtodos) 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(){ //referncia ao mtodo getSalario return super.getSalario() + (super.getSalario()*this.bonus); } } Todo o acesso aos dados do objeto feito atravs da chamada a uma operao (mtodo) da sua interface. Encapsulamento - Benefcios - Segurana: Protege os atributos dos objetos de terem seus valores corrompidos por outros objetos. - Independncia: Escondendo seus atributos, um objeto protege outros objetos de complicaes de dependncia de sua estrutura interna

Copyright e-tecnologia.com, 2002

Verso: 3.0

111

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Polimorfismo
Definio: Polimorfismo uma operao que pode assumir mltiplas formas, a propriedade segundo o qual uma operao pode comportar-se diferentemente em classes diferentes (Rumbaugh) O polimorfismo o responsvel pela extensibilidade em programao orientada a objetos.

overloading

Polimorfismo

overriding

Overloading: Possibilidade de reso do nome do mtodo para diferentes implementaes, em tempo de execuo, a aplicao, escolher o mtodo 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 mtodo, o reso do nome do mtodo permitido, entretanto a lista de argumentos deve ser diferente, veja o exemplo acima: o mtodo somar definido vrias vezes, entretanto com a lista de argumentos diferente, desta forma evitaremos problemas como ambigidade.

Copyright e-tecnologia.com, 2002

Verso: 3.0

112

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Polimorfismo Overrinding - Exemplo:
Empregado setSalario() getSalario()

Engenheiro getSalario()

Gerente getSalario()

Secretria getSalario()

Diretor getSalario() O mtodo setSalario herdado da Superclasse (Empregado), entretanto para cada cargo (tipo de empregado) ele tem uma implementao diferente. Por exemplo: - Para Engenheiro e Secretria salrio = (Dias Trabalhados x Valor hora) - Para Gerente salrio = (Dias Trabalhados x Valor hora) + Bnus - Para Diretor salrio = (Dias Trabalhados x Valor hora) + Bnus + Participao 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()); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

113

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Polimorfismo
O mtodo setSalario (continuao) 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; } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

114

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Polimorfismo
Overrinding Uma subclasse pode mudar o comportamento herdado da Superclasse, ou seja, um mtodo herdado poder ser alterado. Veja o exemplo abaixo:

Conta Bancria
getSaldo()

Conta Corrente getSaldo()

Conta Poupana getSaldo()

Investimentos getSaldo()

O mtodo getSaldo herdado da Superclasse (Conta Bancria), entretanto para cada tipo de Conta ele tem uma implementao diferente. Por exemplo: - Para apurar o saldo da Conta Corrente saldo atual = (soma dos depsitos + saldo anterior) - saques Para a conta poupana seria saldo atual = (soma dos depsitos + saldo anterior + juros) - saques Para a conta de investimentos seria saldo atual = (soma dos aplicaes + saldo anterior + juros) - resgates - ir
As subclasse podem modificar o comporamento de mtodo herdado da super classe, entretanto temos que seguir algumas regras: - Manter o mesmo nome do mtodo - Manter o mesmo tipo de retorno - Manter a lista de argumentos.

Exerccio: Faa a implementao das classes acima.

Copyright e-tecnologia.com, 2002

Verso: 3.0

115

Linguagem de Programao JAVA


JB100 Java Bsico
Acessibilidade
Acessibilidade ou Visibilidade
Os nveis de controle tem o seguinte papel de tornar um atributo, um mtodo ou classe visvel ou no. Exemplo: Se um atributo foi declarado dentro de uma classe chamada TestA e este atributo tem o nvel de controle private. Somente esta classe poder fazer acesso a este atributo, ou seja, somente classe TestA o enxergar, todas as demais, no podero fazer acesso direto a este atributo.
public class TestA { private int a=1; }

public class TestB extends TestA{ private int b=a; }

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

Para contornar a situao poderamos fazer duas coisas, a primeira: alterar o nvel de controle do atributo a, na classe TestA, para public, desta forma a classe TestB o enxergaria. Todavia, as boas prticas de programao no recomendam fazer isto. A segunda: uma maneira mais elegante de resolvemos o problema, podemos criar mtodos pblicos na classe TestA, por exemplo, getA e setA, a sim, atravs destes mtodos seria possvel manipular o atributo da classe TestA.
A linguagem Java tem para os atributos e mtodos quatro nveis de controles: public, protected, default e private. Para classes tem dois nveis: public e default (tambm chamado de pacote ou de friendly). Este nveis de controle so os responsveis pela acessibilidade ou visibilidade de atributos, e mtodos.

Copyright e-tecnologia.com, 2002

Verso: 3.0

116

Linguagem de Programao JAVA


JB100 Java Bsico
Acessibilidade
Acessibilidade ou Visibilidade
A tabela abaixo demonstra a acessibilidade para cada nvel de controle

Modificador Public Protected Private Default

Mesma Classe sim sim sim sim

Mesmo Package sim sim no sim

SubClasse sim sim no no

Universo sim no no no

Exemplos: public class class protected class

public sublass public

public sublass default

public sublass protected

Copyright e-tecnologia.com, 2002

Verso: 3.0

117

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

118

Linguagem de Programao JAVA


JB100 Java Bsico
Programao Orientada a Objetos
Instanceof
O operador instanceof usado para identificar qual o tipo do objeto esta instanciado.

public class TestInstanceof { public static void main(String args[]) { Object[] obarray = new Object[4]; obarray[0] = new Integer(3); obarray[1] = new Float(3); obarray[2] = new String("Teste"); obarray[3] = new Character('a'); if (obarray[3] instanceof Character) { System.out.println("Character"); } } }

Verifica qual objeto que est contido na terceira posio do obarray

Copyright e-tecnologia.com, 2002

Verso: 3.0

119

Linguagem de Programao JAVA


JB100 Java Bsico
Excees
Exception
O que so excees ? Excees em Java so anomalias que podem acontecer durante a execuo de um programa. Existem diversos tipos de excees, desde erros de sintaxes at falha de equipamento, como, erro de leitura e gravao.

Para o tratamento de excees, usamos as declaraes try, catch e finally. A declarao try indica a parte do cdigo aonde poder ocorrer uma exception, J a declarao catch faz a captura da exceo, caso venha a ocorrer. A declarao finally, que opcional, utilizada para definir novo bloco de instrues ou finalizar objetos que esto abertos, por exemplo, conexes. A execuo desta declarao independente, da declarao catch, ou seja, mesmo que no acontea nenhuma exceo os comandos e/ou instrues dentro da declarao finally sero executados.
Exemplo: try { // cdigo que pode ocasionar uma exception } catch(Classe Exceo objeto exceo) { // tratamento do erro } finally { // cdigo } ou try { // cdigo que pode ocasionar uma exception } catch(Classe Exceo objeto exceo) { // tratamento do erro }

Copyright e-tecnologia.com, 2002

Verso: 3.0

120

Linguagem de Programao JAVA


JB100 Java Bsico
Excees
Exception
Estruturas bsica das classes de exceo: Throwable

Exception

Error

IOException

RuntimeException

AWTError

JVMError

EOFException

FileNotFoun Exception

ArithmeticException NullPointerException IndexOfBoundException

Exceptions mais comuns:

ArithmeticException - int i = 12 / 0 NullPointerException - ocorre quando um objeto no foi instanciado. NegativeArraySizeException - ocorre quando atribudo um valor nulo para um array. ArrayIndexOutOfBoundsException - ocorre quando foi violado o ndice do array, ou seja, elemento no existe. Categorias de Exceptions:
Existem trs grandes categorias de excees em Java. De fato, a classe Java.lang.Throwable age como uma classe pai , para que todos os objetos disparados possam ser capturados pela declarao catch. Podemos usar a classe Throwable, para tratar as excees, entretanto, existe uma subclasse que tratam erros especficos, por exemplo: - Exception, IOEception, SQLExceptoion, RuntimeException assim por diante Para maiores detalhes devemos consultar a documentao.

Copyright e-tecnologia.com, 2002

Verso: 3.0

121

Linguagem de Programao JAVA


JB100 Java Bsico
Excees
Exception
Declare ou Manipule as Exception:

Na construo de um cdigo, o desenvolvedor deve prever maneira para tratar possveis erros. Existem duas formas de fazer isto. A primeira com o uso da declarao try e catch, como foi visto anteriormente, e a segunda maneira indicando que a exceo no dirigida para este mtodo, neste caso usamos a palavra reservada throws para que jogar a exceo para o mtodo chamador. Sintaxe: throws <classe de exceo> Exemplo: public void troublesome( ) throws IOException
public class TestThrows { public static void main(String args[]) { try { new TestThrows().divisao(10,0); } e.printStackTrace(); { System.out.println("Deu erro " + e); } } public void divisao(int d1, int d2) throws ArithmeticException { System.out.println("Divisao: " + d1/d2); } }

Cria uma trilha da ocorrncia da exceo

Lana a exceo para o mtodo main

Criando uma Exception permitido que o desenvolvedor crie suas prprias classes de exceo.

Copyright e-tecnologia.com, 2002

Verso: 3.0

122

Linguagem de Programao JAVA


JB100 Java Bsico
Excees
Exception
Exemplo: public class ExceptionExemplo { public static void main (String args[ ]) { int status = 0; String greetings [ ] = { "Hello word" , "No, I mean it!", "HELLO WORLD!"}; try { for(int i=0; greetings.length > i;i++) System.out.println(greetings[i]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Exceo: " + e); status = 1; } finally { System.exit(status); } } }

Implementao do tratamento de exceo

Neste exemplo o cdigo funciona perfeitamente, entretanto a implementao do controle de exceo, cumpre seu papel, de preveno a falhas.

Copyright e-tecnologia.com, 2002

Verso: 3.0

123

Linguagem de Programao JAVA


JB100 Java Bsico
Excees
Exception
Exemplo: public class ExceptionBadExemplo { public static void main (String args[ ]) { int status = 0; String greetings [ ] = { "Hello word" , "No, I mean it!", "HELLO WORLD!"}; try { for(int i=0; 4 > i;i++) System.out.println(greetings[i]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Exceo: " + e); status = 1; } finally { System.exit(status); } } }

Implementao do tratamento de exceo

Neste segundo exemplo forjamos um erro na instruo for ( o valor colocando na condio maior que o ndice do array), isto resulta em uma exceo, que foi devidamente capturada, pela instruo catch, e tratada veja abaixo: Hello word No, I mean it! HELLO WORLD! Exceo: java.lang.ArrayIndexOutOfBoundsException

Copyright e-tecnologia.com, 2002

Verso: 3.0

124

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Formatando Nmeros e Datas
Para formatar ou criar uma mscara para apresentao de valores numricos, usamos a classe java.text.DecimalFormat, esta possui mtodos para formatao de valores monetrios, cientfico e percentuais entre outros. A formatao feita por strings com caracteres especiais.Veja o exemplo:

import java.text.DecimalFormat; import java.text.NumberFormat; public class DecimalFormat1 { public static void main(String args[]) { //Cientifico DecimalFormat df = new DecimalFormat("0.000E0000"); System.out.println( df.format(1234.56)); //Percentual NumberFormat nf = NumberFormat.getPercentInstance(); System.out.println(nf.format(0.67)); } }

Os valore sero exibidos no seguinte formato:

Mascara 1,235E000 3 Instancia 67%

Observe que o ponto indica a separao decimal e virgula a separao de milhar Principais smbolos:

Smbolo 0 # , (virgula) . (ponto)_ ;

Significado Representao o valor 0 Representao qualquer valor Separao de milhar Separao de decimal Representao valores negativos Separador de mascara, por exemplo: quando uma mesma mascara de duas formataes: ###.##;(00.##) Representao de valores monetrios

Copyright e-tecnologia.com, 2002

Verso: 3.0

125

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Formatando Nmeros e Datas
Formatao de Nmeros:

Este exemplo demonstra formatao para valores monetrio entre outros:


import java.text.DecimalFormat; import java.text.NumberFormat; public class DecimalFormatMask { public static void main(String args[]) { O valor sem formatao double valor = 1045.561; DecimalFormat df = null; df = new DecimalFormat("###,###.###"); System.out.println(df.format(valor)); df = new DecimalFormat("###,###.00"); System.out.println(df.format(valor)); Criando mscaras e a impresso do valor df.applyPattern("#,###.00"); System.out.println(df.format(valor)); df.applyPattern("$#,###.00"); System.out.println(df.format(valor)); df.applyPattern("###.##;(###.##)"); System.out.println(df.format(valor - 1500.54D));

APIs

}
}

Copyright e-tecnologia.com, 2002

Verso: 3.0

126

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Formatando Nmeros e Datas
Formatao de Datas: A classe java.util.Date representa a data, num formato em milissegundos. Para representar em outro formato, como em dia, por exemplo, podemos optar por usar a classe GregorianCalendar. Construtores: new Date() - Cria uma data que representa o instante de criao. new Date(long tempo) - Cria uma data com tempo em milissegundos aps 1 de janeiro de 1970.

Principais Mtodos: after(Date d) - Retorna true se data for posterior a d before(Date d) - Retorna true se data for anterior a d getTime() - Retorna os milissegundos da data (com relao a 1 de janeiro de 1970) setTime(long tempo) - Especifica a data em milissegundos (aps 1 de janeiro de 1970)
Podemos usar outros mtodos para comparar datas como: compareTo() e equals()

SimpleDateFormat A classe java.text.SimpleDateFormat possui mtodos para formatao de datas. A formatao baseado em modelo ou mascaras, ou seja, para exibirmos a data como formato de 11/09/2001 necessrio usar a seguinte mascara: dd/MM/yyyy. Principais Mtodos: format(Date data) - Formata a data conforme a mascara de formatao definida no construtor. Date parse(String texto, ParsePosition posicao) - Interpreta o texto como uma data, retornando o um objeto Date, este mtodo tambm usa mascara definida no construtor. O parmetro posicao geralmente tem o valor new ParsePosition(0)

Copyright e-tecnologia.com, 2002

Verso: 3.0

127

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Formatando Nmeros e Datas
Formatao de Datas:

Exemplo:
import java.text.SimpleDateFormat; import java.util.GregorianCalendar; public class DateFormatMask { public static void main(String args[]) { GregorianCalendar c = new GregorianCalendar(2001,9,27); SimpleDateFormat df; df = new SimpleDateFormat("yyyy/MM/d"); System.out.println(df.format(c.getTime())); //Ms df = new SimpleDateFormat("yyyy/MMM/d"); System.out.println(df.format(c.getTime())); df = new SimpleDateFormat("yyyy/MMMM/d"); System.out.println(df.format(c.getTime())); //Dia da semana df = new SimpleDateFormat("E d/MMMM/yyyy"); System.out.println(df.format(c.getTime())); df = new SimpleDateFormat("EEEE d/MMMM/yyyy"); System.out.println(df.format(c.getTime())); //Semana df = new SimpleDateFormat("E d/MMMM/yyyy 'semana' w "); System.out.println(df.format(c.getTime())); df = new SimpleDateFormat("E d/MMMM/yyyy 'semana' W "); System.out.println(df.format(c.getTime())); //Hora df = new SimpleDateFormat("E d/MMMM/yyyy 'hora ' H':'m':'s"); System.out.println(df.format(c.getTime())); //Data completa df = new SimpleDateFormat("'Sao Paulo,' EEEE d ' de ' MMMM ' de ' yyyy"); System.out.println(df.format(c.getTime())); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

128

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Constantes
Para declarar uma varivel, um mtodo, um bloco ou at mesmo uma classe como constante usamos o modificador final. Entretanto, o uso deste modificador deve obedecer a certas restries como: Uma classe constante no pode ter subclasses; Um mtodo constante no pode ser sobrescrito; O valor para varivel constante deve ser definido no momento da declarao ou atravs de um construtor, para variveis membro, uma vez atribudo o valor, este no 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); } public static void main(String args[]) {

Quando compilamos a classe um erro gerado

} }

TestFinalFilho.java:1: cannot inherit from final TestFinalPai public class TestFinalFilho extends TestFinalPai

Copyright e-tecnologia.com, 2002

Verso: 3.0

129

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas Constantes
Veja o exemplo:

TestFinal1: O valor atribudo atravs de um construtor, note que a varivel membro da classe. TestFinal2: O valor atribudo no mtodo, pois, neste caso a varivel 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); } }

Conveno, para variveis constantes (final), o nome da varivel deve ser escrito em maisculo.

Copyright e-tecnologia.com, 2002

Verso: 3.0

130

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
O que so Linhas? So linha de execuo em paralelo. Java permite que seus programas executem ao mesmo tempo vrias Threads, o processo de utilizar duas ou mais Threads de execuo no mesmo programa chamado de Multithreads. Trs Partes de uma Linha : Uma linha inclui trs partes principais. Primeiro, CPU virtual. Segundo, cdigo que esta CPU est executando. Terceiro, os dados no que o cdigo trabalha. Podemos compartilhar cdigo e dados. ----------------------------------------------------------------------------------------------------------------Observaes: -Quanto um computador tem somente um processador, as Threads so executadas em concorrncia. Entretanto quanto o computador tem mais de processado as Threads podem ser executadas em paralelo. -Um programa considerado MultiThreads quanto a mesma Thread tem vrios instances. ----------------------------------------------------------------------------------------------------------------Execuo da Threads: O mtodo thread.start() no significa que Thread ser executado imediatamente, o start apenas o habilita para a fila de execuo e que de acordo com sua prioridade e outros Threads existentes pode ser o prximo a ser executada ou no.

fila

T1.start()

t1

t3

t5

t2
Execuo

Copyright e-tecnologia.com, 2002

Verso: 3.0

131

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Principais Mtodos: Mtodo void start() void interrupt() static void sleep(long ms) Descrio Habilita uma Thread para execuo Interrompe a execuo Suspende a execuo de uma Thread pelo tempo especificado, o tempo um valor em milisegundo. Principal vantagem: Economiza processamento de CPU. Aplicao: Controle Diversos, processo de sincronizao etc Suspende a execuo da Thread corrente e d a oportunidade de execuo para a prxima Thread da fila de execuo de mesma prioridade. Verifica se a Thread est ativo (se foi iniciada e ainda seu processamento no terminou). No importa se a Thread est em execuo ou no.

static void yield()

boolean isAlive()

Prioridades: Mtodo Descrio setPriority() Ajusta o valor da prioridade da Thread getPriority() Pega o valor prioridade da Thread Obs: Podemos usar os valores constantes: Thread.MIN_PRIORITY, Thread.NORM_PRIORITY, Thread.MAX_PRIORITY,
Sincronismo: Todos os objetos em Java possuem um Monitor, que pode ser utilizado pelas Threads para evitar acessos simultneos ao mesmo trecho de cdigo, que causaria inconsistncia de dados. Uma Thread toma para si um monitor quando este est disponvel, ou seja, retm os dados, e aps a execuo os liberam. Para executar este processo preciso usar a palavra synchronized.

Exemplo: ... public int total(int valor) { synchronized (this) { valorTotal += valor; }
}

Copyright e-tecnologia.com, 2002

Verso: 3.0

132

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Principais Mtodos: Mtodo wait() notify() notifyAll() Descrio Indica que a Thread ativa deve esperar (parar a execuo) at que seja noficado (notify, por exemplo) Informa a Thread que est esperando (que foi parado pelo mtodo wait()) e o habilita a execuo Informa todos as Thread que esto esperando (que foram parados pelo mtodo wait()) e os habilita a execuo

Principal vantagens das Threads: - Incentiva o RESO de cdigo Cuidados: Evitar situao de Deadlock (travamento)

Estado de espera (Putting Threads on Hold) Vrios mecanismos existem que podem parar a execuo de uma linha temporariamente. Seguindo este tipo de suspenso, execuo pode ser retomada como se nada tivesse interrompido sua execuo, a linha aparece ter executado uma instruo muito lentamente simplesmente. O mtodo sleep foi introduzido na primeira seo e foi usado para deter uma linha para um perodo de tempo. s vezes apropriado suspender execuo de uma linha indefinidamente em qual caso alguma outra linha ser responsvel para retomar a execuo. Um par de mtodos de Linha est disponvel para isto. Eles so chamados suspend () e resume (). O mtodo join ( ) causa a linha atual para esperar at a linha em qual o mtodo join chamado termina.

Copyright e-tecnologia.com, 2002

Verso: 3.0

133

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Este exemplo demonstra a implementao de uma Thread simples

instance da Thread O mtodo start() solicita a execuo da Thread

public class TestThread { public static void main(String args[]) { Xyz r = new Xyz(); Thread t = new Thread(r); t.start(); } } class Xyz implements Runnable { int i; public void run() { i = 0; while (true) { System.out.println("Hello " + i++); if ( i == 50 ) break; } } }

No mtodo run() implementado o corpo do mtodo

Corpo do mtodo run()

A interface Runnable responsvel pelos mtodos run()

Copyright e-tecnologia.com, 2002

Verso: 3.0

134

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Este exemplo parecido com anterior, entretanto, agora demonstrado a execuo de duas Threads. public class TestThread1 { public static void main(String args[]) { Xyz r = new Xyz(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); } } class Xyz implements Runnable { int i; No mtodo run() implementado o corpo do mtodo Corpo do mtodo run() a parte do cdigo que ser repetido } Retorna a referncia da Thread corrente A interface Runnable responsvel pelos mtodos run() public void run() { i = 0; for(;;) { System.out.println(Thread.currentThread()); System.out.println(i++); if (i == 50) break; } }

instances da Thread

O mtodo start() solicita a execuo das Threads

Copyright e-tecnologia.com, 2002

Verso: 3.0

135

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Este exemplo demonstra como configurar a prioridade de execuo de uma Thread. public class TestThreadPrior { public static void main(String args[]) { Thread t0 = new Thread(new TestPrior()); Thread t1 = new Thread(new TestPrior()); t0.setPriority(Thread.MAX_PRIORITY); t0.start(); System.out.println("Prioridade t1 " + t0.getPriority()); System.out.println("----------------------------------"); t1.setPriority(Thread.MIN_PRIORITY); t1.start(); System.out.println("Prioridade t1 " + t1.getPriority()); System.out.println("----------------------------------"); } } class TestPrior implements Runnable { int i; public void run() { i = 0; try { for(;;) { Thread.sleep(5); System.out.println(Thread.currentThread()); System.out.println(i++); if ( i == 50 ) break; } }catch(Exception e) { } } }

Prioridades: Usamos o mtodo setPriority para definir e getPriority para saber qual a prioridade da Thread

Para usar: O mtodo sleep(), somos forados usar o controle de exceo: try-catch

Copyright e-tecnologia.com, 2002

Verso: 3.0

136

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Este exemplo mostra a funcionalidade do mtodo yield().

Suspende a execuo da Thread corrente e d a oportunidade de execuo a prxima Thread da fila de execuo de mesma prioridade.

public class TestThreadYield { public static void main(String args[]) { ThreadYield t = new ThreadYield(); Thread t0 = new Thread(t); Thread t1 = new Thread(t); Thread t2 = new Thread(t); t0.setPriority(Thread.MAX_PRIORITY); System.out.println("Prioridade t0 " + t0.getPriority()); t0.start(); t1.setPriority(Thread.NORM_PRIORITY); System.out.println("Prioridade t1 " + t1.getPriority()); t1.start(); t2.setPriority(Thread.MAX_PRIORITY); System.out.println("Prioridade t2 " + t2.getPriority()); t2.start(); } } class ThreadYield implements Runnable { int i; public void run() { i = 0; try { for(;;) { Thread.yield(); System.out.println(Thread.currentThread()); System.out.println(i++); if ( i == 50 ) break; } }catch(Exception e) {} } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

137

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Este exemplo divido em duas partes. A primeira parte no implementa o recurso de sincronismo.
public class ThreadContaCorrente implements Runnable { int saldo = 100; public void run() { System.out.println(Thread.currentThread().getName()); for(int x=0; x < 10; x++) { try { Thread.sleep( (int) (Math.random() * 500)); catch(Exception err) { System.err.println("Erro: " + err); } if (Thread.currentThread().getName().equals("deb")) { saldo -= 1; } else { saldo += 1; } System.out.println(Thread.currentThread().getName() + " Saldo: " + saldo); } }} public class TestSynchronized { public static void main(String args[]) { ThreadContaCorrente cc = new ThreadContaCorrente(); Thread debito = new Thread(cc); Thread credito = new Thread(cc); debito.setName("deb"); debito.start(); credito.setName("cre"); credito.start(); }}

Copyright e-tecnologia.com, 2002

Verso: 3.0

138

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Threads
Esta a segunda parte. Neste caso implementamos o recurso de sincronismo.

Implementao do sincronismo

public class TestSynchronizedON { public static void main(String args[]) { ThreadContaCorrenteON cc = new ThreadContaCorrenteON(); Thread debito = new Thread(cc); Thread credito = new Thread(cc); debito.setName("deb"); debito.start(); credito.setName("cre"); credito.start(); } } public class ThreadContaCorrenteON implements Runnable { int saldo = 100; public synchronized void run() { System.out.println(Thread.currentThread().getName()); for(int x=0; x < 10; x++) { try { Thread.sleep(5); } catch(Exception err) { System.err.println("Erro: " + err); } if (Thread.currentThread().getName().equals("deb")) { saldo -= 1; } else { saldo += 1; } System.out.println(Thread.currentThread().getName() + " Saldo: " + saldo); } }}

Copyright e-tecnologia.com, 2002

Verso: 3.0

139

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Serialization
Serialization implementao de persistncia em Java. O que persistncia ? a possibilidade de gravar mtodos virtuais em um meio fsico, por exemplo Hard Disk. Entretanto alguns recursos no suportam a persistncia so eles: THREADS, IMAGENS E CONEXES. A persistncia deve ser implementada com cuidado, pois, uma vez implementada, poderemos ter problemas com segurana., pois os mtodos podem representar as regras de negcios e estas podem acabar sendo violadas. Para especificar os recursos e/ou atributos que no devem ser persistindo, devemos usar a palavra reservada chamada transient.

Exemplos: Implementao do modificador transient import java.io.*; public class MyClass implements Serializable { public transient Thread MyThread; private String codeID; } import java.io.*; public class MyClass implements Serializable { public transient int code; private String codeID; }

Copyright e-tecnologia.com, 2002

Verso: 3.0

140

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Serialization
Este exemplo divido em duas partes. A primeira exibe como gravar um objeto em arquivo. Gravar objeto vetor no arquivo Vector.ser

Os dados do objeto

import java.io.*; import java.util.*; public class TestSerializeVector { TestSerializeVector() { Vector v = new Vector(); for(int x=0;x<5;x++) v.addElement(new Integer(x)); try { FileOutputStream f = new FileOutputStream ("vector.ser"); ObjectOutputStream s = new ObjectOutputStream (f); s.writeObject (v); s.close (); } catch (IOException e) { e.printStackTrace (); } } public static void main (String args[]) { new TestSerializeVector(); } }

Gravao

Copyright e-tecnologia.com, 2002

Verso: 3.0

141

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Serialization
A segunda parte demonstra como recuperar o objeto e os dados gravados em um arquivo. Nome do arquivo Vector.ser (objeto vector)

import java.io.*; import java.util.*; public class TestUnSerializeVector { TestUnSerializeVector () { Vector v = null; Object obj = null; try { FileInputStream f = new FileInputStream ("vector.ser"); ObjectInputStream s = new ObjectInputStream (f); System.out.println(s); v = (Vector) s.readObject (); s.close (); } catch (Exception e) { e.printStackTrace (); } System.out.println( "Unserialized Vector object from vector.ser"); Object[] objArray = v.toArray(); for(int x=0;x<5;x++) { System.out.println(objArray[x]); } } public static void main (String args[]) { new TestUnSerializeVector(); } }

Recuperao Note que necessrio fazer a coero de tipo (Vector)

Copyright e-tecnologia.com, 2002

Verso: 3.0

142

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
Serialization
Este exemplo mostra como criar um mtodo para fazer a gravao e outro para fazer a recuperao.
import java.io.*; import java.util.Date; import java.util.*; public class TestSerialize { public void doSerialize() { try { FileOutputStream ostream = new FileOutputStream("dados.ser"); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeInt(12345); p.writeObject("Today"); p.writeObject(new Date()); p.flush(); ostream.close(); } catch (Exception e) { e.printStackTrace (); }finally { System.out.println("Process ok"); } } public void unDoSerialize() { try { FileInputStream istream = new FileInputStream("dados.ser"); ObjectInputStream p = new ObjectInputStream(istream); int i = p.readInt(); String today = (String)p.readObject(); Date date = (Date)p.readObject(); System.out.println(p); istream.close(); System.out.println("String: " + today); System.out.println("Date: " + date); System.out.println("int: " + i); } catch (Exception e) { Para cada tipo e.printStackTrace (); de dados foi } } usado o mtodo TestSerialize() apropriado. { doSerialize(); Objeto = readObject unDoSerialize(); Int = readIn } public static void main(String args[]) { new TestSerialize(); } }

Gravao

Recuperao

Copyright e-tecnologia.com, 2002

Verso: 3.0

143

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
TCP/IP
TCP/IP Socket Connections API java.net possiblita a implementao de Datagram Sockets e Stream Sockets. Com Soquetes de Fluxo, podemos estabelecer conexo entre um cliente e servidor, enquanto perdurar a conexo podemos trocar mensagens, este fluxo de mensagem controlado, casa haja algum problema entre as mensagens enviadas e recebidas, elas podem ser corrigidas. Este servio chamado orientado a conexo, o protocolo utilizado TCP. J os Soquetes Datagramas, as mensagens so transmitidas em pacotes, entretanto, o fluxo de troca de mensagens no so controlados, isto quer dizer, que eles podem ser perdidos (nunca chegar ao seu destino, por exemplo) entre outras coisas. Este servio chamado servio sem conexo, o protocolo utilizado UDP. Abaixo um esquema vlido para Servio orientada a conexo (TCP)

Servidor
ServerSocket(port #) ServerSocket.accept() Sockect() (Fluxo de Mensagens)
InputStream OutputStream

Cliente
ServerSocket(host, port #) (tentativa de conexo) (Fluxo de Mensagens)
InputStream OutputStream

Socket.close()

Socket.close()

Copyright e-tecnologia.com, 2002

Verso: 3.0

144

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
TCP/IP
Principais mtodos: Mtodos ServerSocket(port number clientes) Descrio #, Estabelece a porta em que um servidor espera a conexo. O segundo parmetro para o construtor quantidade de clientes que podem esperar uma conexo e ser processada pelo servidor, se as filas estiverem repletas, as conexo so recusadas automaticamente. Espera o estabelecimento de uma conexo, retorna o objeto socket (quando estabelecido uma conexo) responsvel pelo gerenciamento dos servios baseados em conexo. Fecha a conexo Estabele um timeout em milesegundos Retorna o tempo estabelecido para timeout

accept

sockets close setSoTimeout(int timeout) public int getSoTimeout()


Classe de Exceptions:
SocketException

Copyright e-tecnologia.com, 2002

Verso: 3.0

145

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
TCP/IP
Exemplos: Este exemplo divido em duas partes. A primeira exibe como criar um Servidor. API import java.net.*; import java.io.*; public class TestServer { public static void main(String args[]) { ServerSocket s= null; Objecto ServerSocket try { Nmero da Porta

s = new ServerSocket(5432); } catch (IOException e) { e.printStackTrace(); }


for (;;) { try { Socket s1 = s.accept(); OutputStream s1out = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream(s1out);

Espera o estabelecimento de conexo Fluxo de Dados

// Envia a mensagem dos.writeUTF("Hello Net World!"); Encerra a o fluxo de dados e a conexo


dos.close(); s1.close(); } catch (IOException e) { e.printStackTrace(); } } } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

146

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
TCP/IP
Exemplos: Este segunda parte. A criao de um cliente.

API

import java.net.*; import java.io.*; public class TestClient { public static void main(String args[]) { try {

Objeto Socket, veja os parmtros no Construtor Endereo IP e Nmero da Porta do Servidor

// Endereo IP Localhost Socket s1 = new Socket("127.0.0.1", 5432);


InputStream is = s1.getInputStream(); DataInputStream dis = new DataInputStream(is);

Fluxo de Dados

System.out.println(dis.readUTF());
dis.close(); s1.close(); } catch (ConnectException connExc) { System.err.println("Could not connect to the server."); } catch (IOException e) { e.printStackTrace(); } } }

Leitura do Fluxo

Copyright e-tecnologia.com, 2002

Verso: 3.0

147

Linguagem de Programao JAVA


JB100 Java Bsico
Caractersticas Avanadas
TCP/IP
Cenrio da Conexo Servidor e Cliente

TCP/IP IP 129.1.13.1 Porta 5432 Fluxo de Dados Hello...

TestServer
Mensagem

TestClient

Copyright e-tecnologia.com, 2002

Verso: 3.0

148

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

149

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
O Qu a UML?
A UML (Linguagem de Modelagem Unificada) uma linguagem-padro para elaborao da estrutura de projetos de software. A UML poder ser usada para: Visualizao Especificao Construo de modelos e diagramas Documentao. A UML adequada para a modelagem de sistemas, cuja a abrangncia poder incluir sistemas de informao corporativos a serem distribudos a aplicao baseadas em Web e at sistemas complexos embutidos de tempo real. A UML apenas uma linguagem e, portanto, somente uma parte de um mtodo para desenvolvimento de software. Ela independente do processo, apesar de ser perfeitamente utilizada em processo orientado a casos de usos, centrado na arquitetura, iterativo e incremental.

Principais Diagramas:

Diagrama de Caso de Uso Diagrama de Seqncia Diagrama de Colaborao Diagrama de Estados Diagrama de Classes Diagrama de objetos

Diagrama de Atividades Diagrama de Componentes Diagrama de Distribuio Diagrama de Pacotes

Copyright e-tecnologia.com, 2002

Verso: 3.0

150

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Casos de Uso
O que so Caso de Uso? So diagramas de que permitem visualizar, especificar e documentar o comportamento de um elemento. Esses diagramas fazem com que sistema, subsistemas e classes fiquem acessveis e compreensveis, por apresentarem uma viso externa sobre como esses elementos podem ser utilizados no contexto. Definio: Caso de Uso uma descrio de um conjunto de seqncias de aes, inclusive variantes, que um sistema pode produzir um resultado de valor observvel por um ator. A representao grfica uma elipse. Elementos: Ator: Um ator representa um conjunto coerente de papis que os usurios de casos de uso desempenham quanto interagem com esses casos de uso. Geralmente um ator representa um papel, que pode ser de pessoa, de um sistema ou de um dispositivo. Cenrios: Podemos definir os cenrios como uma descrio de um Caso de uso. O caso de uso deve ser descrito atravs de cenrios. Devem ser construdos tantos cenrios quantos forem necessrios para se entender completamente todo o sistema. Podem ser considerados como teste informais para validao dos requisitos do sistema.

Copyright e-tecnologia.com, 2002

Verso: 3.0

151

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Casos de Uso
Diagramas de Caso de Uso e Extenses
Pedir lista dos matriculados Sistema de cobrana

Professor Matrcula nos Cursos Selecionar curso para ensinar

Aluno

Manter informao de aluno

Manter informaes dos cursos

Gerenciar Manter informao de professor Gerar catalogo

Generalizao: Entre casos de uso parecida generalizao existente entre as classes. No caso de uso a generalizao significa que o caso de uso filho herda o comportamento e o significado do caso de uso pai; o filho poder acrescentar ou sobrescrever o comportamento de seu pai; poder ser substitudo em qualquer local qual o pai aparea. Include: Quando voc estiver se repetindo em dois ou mais caso de uso separados, devemos evitar a repetio Extends: Quando estivermos descrevendo uma variao em comportamento normal, entretanto, querendo fazer uma descrio mais controlada, explicando os pontos de extenso no caso de uso. Realizes: Especifica a colaborao entre os casos de uso Use (obsoleto): Especifica que a semntica do elemento de origem depende da semntica da parte pblica do destino

Copyright e-tecnologia.com, 2002

Verso: 3.0

152

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Seqncia O que Diagramas de Seqncia?
um diagrama que exibe a colaborao dinmica entre os vrios objetos de um sistema. O principal aspecto deste diagrama que a partir dele percebe-se a seqncia de mensagens enviadas entre os objetos. Ele mostra a interao entre os objetos, alguma evento que acontecer em um ponto especfico da execuo do sistema.

formulrios de registro
Ator (Jos) entrar com chave de acesso validar acesso entrar com o semestre

formulrio de matrcula

cursos disponveis

criar nova matrcula

apresentar em tela obter cursos

Diagrama de Seqncia

Copyright e-tecnologia.com, 2002

Verso: 3.0

153

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Colaborao O que Diagramas de Colaborao?
um diagramas que mostra a colaborao dinmica entre os objetos, semelhante ao diagrama de seqncia. No diagrama de colaborao, alm de mostrar a troca de mensagens entre os objetos, percebe-se tambm os objetos com os seus relacionamentos. A interao de mensagens mostrada em ambos os diagramas. Se a nfase do diagrama for o decorrer do tempo, melhor escolher o diagrama de seqncia, mas se a nfase for o contexto do sistema, melhor dar prioridade ao diagrama de colaborao. Podemos tambm escolher ambos. O diagrama de colaborao desenhado como um diagrama de objeto, onde os diversos objetos so mostrados juntamente com seus relacionamentos. As setas de mensagens so desenhadas entre os objetos para mostrar o fluxo de mensagens entre eles. As mensagens so nomeadas, que entre outras coisas mostram a ordem em que as mensagens so enviadas. Tambm podem mostrar condies, interaes, valores de resposta e etc. O diagrama de colaborao tambm pode conter objetos ativos, que executam paralelamente com outros.

2: validar acesso 1:entrar com chave de acesso 3:entrar com o semestre formulrios de registro 4:criar nova matrcula Ator (Jos) 5:apresentar em tela

cursos disponveis 6:obter cursos

formulrio de matrcula

Diagrama de Colaborao

Copyright e-tecnologia.com, 2002

Verso: 3.0

154

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Estado O que Diagrama de Estado?
um diagrama que tipicamente complementa a descrio das classes. Pois este diagrama exibe todos os estados possveis que objetos de uma certa classe podem se encontrar. E mostra tambm quais so os eventos do sistemas que provocam tais mudanas. No necessrio escrever o diagrama de estado para todas as classes de um sistema, mas apenas para aquelas que possuem um nmero definido de estados conhecidos e onde o comportamento das classes afetado e modificado pelos diferentes estados. Diagramas de estado capturam o ciclo de vida dos objetos, subsistemas e sistemas. Eles mostram os estados que um objeto pode possuir e como os eventos (mensagens recebidas, tempo, erros, e condies sendo satisfeitas) afetam estes estados ao passar do tempo.

Adicionar Aluno

Criao faa: Crie o objeto curso

Atribuio Curso faa: Atribuir um professor ao curso cancelarCurso cancelarCurso

Matrcula aberta/inicialize nmeroDeAlunos = 0 cancelarCurso

Curso Aberto Entrada: Registre um aluno

Curso Cancelado faa: envie notificao de cancelamento

Registro fechado [nmeroDeAlunos<3] Registro fechado [nmero de alunos =10]^Curso .Criar relatrio

Registro fechado [nmeroDeAlunos>=3 ]

cancelarCurso

Curso Encerrado faa: relate curso esta cheio

Curso Completado faa: Gerar lista de alunos

Copyright e-tecnologia.com, 2002

Verso: 3.0

155

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Atividade O que Diagrama de Atividade?
um diagramas que exibe o fluxo seqencial das atividades, geralmente utilizado para demonstrar as atividades executadas por uma operao especfica do sistema, como por exemplo seleo de um item do menu principal. Consistem em estados de ao, que contm a especificao de uma atividade a ser desempenhada por uma operao do sistema. Decises e condies, como execuo paralela, tambm podem ser mostrados na diagrama de atividade. O diagrama tambm pode conter especificaes de mensagens enviadas e recebidas como partes de aes executadas. Diagramas de atividade capturam aes e seus resultados. Eles focam o trabalho executado na implementao de uma operao (mtodo), e suas atividades numa instncia de um objeto. O diagrama de atividade uma variao do diagrama de estado e possui um propsito um pouco diferente do diagrama de estado, que o de capturar aes (trabalho e atividades que sero executados) e seus resultados em termos das mudanas de estados dos objetos. Vendas Cliente Estoque

Fazer Pedido

Processar Pedido Separar Produtos Enviar Pedido

Receber Pedido

Cobrar Cliente

Pagar Fatura

Fechar Pedido

Copyright e-tecnologia.com, 2002

Verso: 3.0

156

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Pacotes Como podemos definir o diagrama de pacotes?
A definio de Pacote uma generalizao, ou seja, um agrupamento, com o propsito de organizar as Classes de Objetos em grupos. Esta abordagem facilita a anlise a medida que o nmero de Classes de Objetos cresce num do cenrio. O tipo de relacionamento linha pontilhada com uma seta que indica dependncia. A notao usada pela UML para representar pacotes :

Nome do Pacote

Exemplo: As classes pertencentes ao Sistema de Matrcula podem ser agrupadas em trs pacotes: UI (Interface com usurio) Regras de Negcio Interfaces de Banco de Dados

Interfaces com Usurio

Regras de Negcios

Interfaces de Banco de Dados {abstrata}

Interface Oracle

Interface MySQL

Copyright e-tecnologia.com, 2002

Verso: 3.0

157

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Classes O que um Diagrama de Classes?
um diagrama que demonstra a estrutura esttica das classes de um sistema e seus relacionamentos. Classes podem se relacionar com outras atravs de diversas maneiras: associao (conectadas entre si), dependncia (uma classe depende ou usa outra classe), especializao (uma classe uma especializao de outra classe), ou em pacotes (classes agrupadas por caractersticas similares). Todos estes relacionamentos so mostrados no diagrama de classes juntamente com as suas estruturas internas, que so os atributos e operaes. O diagrama de classes considerado esttico j que a estrutura descrita sempre vlida em qualquer ponto do ciclo de vida do sistema. Um sistema normalmente possui alguns diagramas de classes, j que no so todas as classes que esto inseridas em um nico diagrama e uma certa classes pode participar de vrios diagramas de classes. Pessoa

Professores

Alunos

Funcionrios Administrativo

1 1
Matricula

1
1

Curso

1..*

tem

Disciplinas

Uma classe num diagrama pode ser diretamente implementada utilizando-se uma linguagem de programao orientada a objetos que tenha suporte direto para construo de classes. Para criar um diagrama de classes, as classes tm que estar identificadas, descritas e relacionadas entre si.

Copyright e-tecnologia.com, 2002

Verso: 3.0

158

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Objetos O que um Diagrama de Objetos?
um diagrama que exibe uma variao do diagrama de classes e utiliza quase a mesma notao. A diferena que o diagrama de objetos mostra os objetos que foram instanciados das classes. O diagrama de objetos como se fosse o perfil do sistema em um determinado momento de sua execuo. A mesma notao do diagrama de classes utilizada, entretanto h duas diferenas: os objetos so escritos com seus nomes sublinhados e todas as instncias num relacionamento so mostradas. Os diagramas de objetos no tem a mesma importncia do diagramas de classes, mas eles so muito teis para exemplificar diagramas complexos de classes ajudando muito em sua compreenso. Diagramas de objetos tambm so usados como parte dos diagramas de colaborao, onde a colaborao dinmica entre os objetos do sistema so mostrados.

:Aluno Nome: Fulano de Tal Data: 23-02-2001

201-23-02-01:Matricula Matricula: 201-23-02-01 Curso: Adm Empresas

Copyright e-tecnologia.com, 2002

Verso: 3.0

159

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Componente O que um Diagrama de Componente?
um diagrama que exibe o sistema por um lado funcional, expondo as relaes entre seus componentes e a organizao de seus mdulos durante sua execuo. O diagrama de componente descreve os componentes de software e suas dependncias entre si, representando a estrutura do cdigo gerado. Os componentes so a implementao na arquitetura fsica dos conceitos e da funcionalidade definidos na arquitetura lgica (classes, objetos e seus relacionamentos). Eles so tipicamente os arquivos implementados no ambiente de desenvolvimento.

Curso.jar

Pessoa.jar

Disciplina.classr

Aluno.class

Professores.class

Copyright e-tecnologia.com, 2002

Verso: 3.0

160

Linguagem de Programao JAVA


JB100 Java Bsico
Introduo a UML
Diagrama de Distribuio O que Diagrama de Distribuio?
um diagrama que exibe a arquitetura fsica do hardware e do software no sistema. Pode apresentar os atuais computadores e perifricos, juntamente com as conexes que eles estabelecem entre si e pode mostrar tambm os tipos de conexes entre esses computadores. Especifica-se tambm os componentes executveis e objetos que so alocados para mostrar quais unidades de software so executados e em quais computadores so executados. O diagrama de distribuio demonstra a arquitetura runtime de processadores, dispositivos fsicos e de software que executam no ambiente onde o sistema desenvolvido ser utilizado. o ltimo diagrama da topologia do sistema, descrevendo a estrutura de hardware e software que executam em cada unidade.

O diagrama de distribuio composto por componentes, que possuem a mesma simbologia dos componentes do diagrama de componentes, nodes, que significam objetos fsicos que fazem parte do sistema, podendo ser uma computador cliente em uma Rede, um computador Servidor, uma impressora, um roteador, etc., e conexes entre estes nodes e componentes que juntos compem toda a arquitetura fsica do sistema.

<<TCP/IP>> <<TCP/IP>>

Cliente A

0..*

Servidor de Aplicao

Servidor de Banco de Dados

Copyright e-tecnologia.com, 2002

Verso: 3.0

161

Linguagem de Programao JAVA


JB100 Java Bsico

Transformando modelos UML em cdigo Java

Copyright e-tecnologia.com, 2002

Verso: 3.0

162

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Implementao Java
Nossa proposta apresentar o mais simples exemplo de aplicao UML e Java, por isso, no temos inteno de esgotar o tema UML. Nosso exemplo um velho conhecido, o programa Hello. Bem vamos comear pela implementao do cdigo e depois faremos uma engenharia reversa para obtermos os diagramas e demais itens UML. Veja os passos abaixo:

1 public class
Tapplet extends Applet {

2 Compilao

Cdigo fonte (java)

Bytcode (java)

<HTML> <body> .. </body> </HTML>

3 Arquivo HTML 1 O programa Java import java.awt.Graphics;

public class Hello extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hello", 15,15); } }

Primeiro Passo: Criao do programa Java, um Applet. Segundo Passo: Compilar o programa

Copyright e-tecnologia.com, 2002

Verso: 3.0

163

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Implementao Java
3

A pgina HTML, Hello.html


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

Terceiro Passo: Criao a pgina HTML, o nome ser Hello.html.

A execuo

Para encerrar Quarto Passo: Execuo do programa, podemos usar o Browser, mas neste caso usamos o AppletViewer, que utilitrio Java, que que exibe Applet, a partir de pginas HTML

Bem agora vamos para segunda parte, que a modelagem dessa aplicao usando UML.

Copyright e-tecnologia.com, 2002

Verso: 3.0

164

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem UML
A Modelagem UML. Do programa Hello: Hello paint() g.drawString (Hello, 15, 15)

O programa Hello pode ser representado graficamente pela figura acima, claro que foi omitido os detalhes e a implementao do mtodo paint feito atravs de nota Applet

Hello paint() Graphics

Agora temos um modelo de fato, veja os relacionamentos (herana e navegao) entre as classes e a definio do mtodo paint. O exemplo abaixo faz um mapeamento entre o cdigo Java e modelo UML. Applet public class Hello extends java.applet.Applet Hello public void paint(Graphics g) { g.drawString("Hello", 15,15); } paint() Graphics import java.awt.Graphics;

Copyright e-tecnologia.com, 2002

Verso: 3.0

165

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem UML - Pacotes
Bem como j dissemos, (Veja Miscelania - Pacotes) a linguagem Java estruturada em pacotes, estes pacotes contm classes que por sua vez contm atributos e mtodos. Podemos usar a estrutura de pacotes para associar classes com semnticas semelhante, ou seja, classes que tem objetivo comum. Veja a estrutura abaixo:

Principais pacotes da Linguagem Java

java

org

javax

sun

lang

applet

awt

As classes Applet (pacote applet) e Graphics (pacote) awt que colaboram com a classe Hello

beans

io

rmi

Principais subpacotes do pacote Java

net

math

security

sql

text

util

Copyright e-tecnologia.com, 2002

Verso: 3.0

166

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem Modelagem UML UML - Pacotes

java
Hello applet awt

lang

A figura acima demonstra o Diagrama de Pacotes da classe Hello, o pacote raiz (maior) o Java e outros outros pacotes (menores), que esto aninhados entro do pacote Java, so os subpacotes, o relacionamento entre eles se d atravs de dependncia (seta pontilhada). Por exemplo: A classe Hello depende do pacote java.applet. E o java.applet depende do pacote java.awt. Veja o cdigo e os respectivos pacotes: lang awt applet

import java.awt.Graphics; public class Hello extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hello", 15,15); } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

167

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem UML - Pacotes
Esta figura demonstra uma viso mais detalhada dos pacotes e as respectivas classes e atributos.

java
Hello applet

awt
lang

Component
(from awt)

Object
(from lang)

Container
(from awt) ....

Graphics
abstract void drawString(AttributedCharacterIterator iterator, int x, int y)

AudioClip

abstract void drawString(String str, int x, int y) ....

Panel

Interface

(from awt)

AppletStub

AppletConte xt

Applet

Copyright e-tecnologia.com, 2002

Verso: 3.0

168

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem UML - Diagrama de Seqncia
Podemos fazer a modelagem da ordenao de eventos usando uma Diagrama de Sequncia, Veja o diagrama logo abaixo. A sequncia se inicia com a execuo do objeto Thread que, por sua vez, 1 - invoca o mtodo run() de Toolkit. 2 - O objeto Toolkit ento chama uma de seus prprios mtodos, callbackloop() que, a seguir, chama ... 3 - handleExpose de ComponentPeer. 4 - O objeto ComponentPeer ento chama o mtodo paint() de seu alvo. O objeto ComponentPeer assume que seu atributo um Component, (Hello) e assim o mtodo paint() executado de forma polimorfica.

:Thread run run

:Toolkit

:ComponenPeer

:target Hello

callbackLoop

handleExpose
paint

Diagrama de Seqncia

Copyright e-tecnologia.com, 2002

Verso: 3.0

169

Linguagem de Programao JAVA


JB100 Java Bsico
Transformando diagramas UML em cdigo Java
Modelagem UML e Codificao em Java
Herana Mltipla Vejamos a codificao Java:
public class Cliente { String nome; public String getNome() { return this.nome; } public void setNome(String nome) { this.nome = nome; } }

Atributo

Mtodos

public class ClientePessoaJuridica extends Cliente { public ClientePessoaJuridica() { System.out.println("Nome: " + getNome()); } }

public interface Pessoa { public boolean getDependente(int dependente); }

Assinatura do mtodo

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) { return (dependente>0)?true:false; } }

Implementao do mtodo assinado na Interface Pessoa

Copyright e-tecnologia.com, 2002

Verso: 3.0

170

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

171

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
JavaDoc (Documentao)
Javadoc uma utilitrio do JDK que gera a documentao dos programas java, geralmente em formato HTML. Localizao JDK1.X/BIN/Javadoc. Sintaxe padro: javadoc <arquivofonte.java>
Opo -d -sourcepath -public -private Valor path de sada path Descrio Diretrio onde ser gerado os arquivos HTML Especifica o diretrio raiz dos fontes ou dos Package Documenta apenas variveis e mtodos pblicos Documenta todas as variveis e mtodos

Sintaxe: Javadoc [Opes] package/arquivo < package/arquivo> Exemplo: javadoc MinhasClasses.class Tags para Documentao: Usar: /** e */ Tag @see @deprecated @author @param @throws @Exception @return Declarao Cria um link com outra pgina HTML Informa quais mtodos esto ultrapassados Nome do Autor Documenta o parametro Documenta Excees Documenta o returno (valor e tipo) Class e Construtor Interface X X X X X X X X X X Mtodo Atributo X X X X

Copyright e-tecnologia.com, 2002

Verso: 3.0

172

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
JavaDoc (Documentao)
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

Copyright e-tecnologia.com, 2002

Verso: 3.0

173

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
JavaDoc (Documentao)
Este exemplo exibe como implementar as tags de documentao que sero usados pelo utilitrio Javadoc import java.util.List; /** * @author YourName * @version 2.0 */ public class DocExemplo { /** Declarao e atribuio 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 mtodo 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; } }

Copyright e-tecnologia.com, 2002

Verso: 3.0

174

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
JavaDoc (Documentao)
Exemplo: Para gerar a documentao digite o seguinte comando: c:\jdk1.3\bin\javadoc.exe -version -author DocExemplo.java... Depois chame a pgina principal index.html via Browser.

A figura acima exemplo de documentao gerada pelo Javadoc.

Copyright e-tecnologia.com, 2002

Verso: 3.0

175

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
Jar (Compactao, Agrupamento e Distribuio)
Jar um utilitrio do JDK que faz agrupamento de arquivos em nico, um arquivo .jar, geralmente com compresso. Localizao JDK1.X/BIN/Jar. usado tambm para fazer a distribuio de aplicao.
Sintaxe: jar opes [meta-arq] nome-arquivo-destino [nome-arquivo-entrada] Argumento meta-arquivo Descrio Arquivo que contm as informaes sobre o arquivo destino gerado. Este argumento opcional, entretanto um arquivo meta-arquivo gerado, default, META-INF/MANIFEST.INF Nome do arquivo jar. A extenso .jar no automatica, deve ser especificada Nome dos arquivos a serem agrupados e/ou compactados Descrio Cria um novo arquivo Mostra o contedo de um arquivo existente Extrai todos os arquivos Extrai o arquivo especificado Indica que a operao (c,t ou x) ser executada sobre o arquivo e no sobre a entrada/sada padro. Mostra o status da operao (verbose) Suprime a gerao do meta-arquivo Faz apenas o agrupamento, sem compactao. Deve ser utilizado para arquivos jar na varivel de ambiente Classpath

arquivo-destino arquivo-entrada Opes c t x x <arquivo> f v m o

Exemplos: jar cvf Classes.jar ClassA.class ClassB.class ClassC.class Para ver o contedo do arquivo jar, gerado: jar tvf Classes.jar Para extrair arquivo: Jar xvf Classes.jar Obs: a opo f sempre utilizada em operaes com arquivos.

Os arquivos Jar podem conter um aplicao inteira, por isso, ele usado para fazer distribuio de aplicaes. Tambm bastante usado com componente Javabeans e Applet.

Copyright e-tecnologia.com, 2002

Verso: 3.0

176

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
JDB (debug)
um utilitrio do JDK, para fazer depurao de cdigo. O primeiro passo escrever um programa em Java e depois aplicar o depurador de cdigo. Principais comandos: run (chama a mquina virtual), cont (continuo) e quit ou exit (sai do JDB). Veja o exemplo abaixo:
public class Hello { public static void main (String arg []) { String s = "world"; System.out.println("Hello " + arg[0]); } }

Esta classe Java requer um parmetro que deve ser passando na chamada da classe, se o parmetro no for informado, isto provocar uma exceo

O prximo passa abrir uma janela DOS, chame o depurador jdb <nomedoprograma> <enter>. Ento ferramenta ser inicializada, veja abaixo toda a seqncia de depurao.

Por fim a exceo localizada, ocorrer na linha 5.

Copyright e-tecnologia.com, 2002

Verso: 3.0

177

Linguagem de Programao JAVA


JB100 Java Bsico
Utilitrios
Javap (Desmontagem)
Javap Faz a desmontagem de cdigo ou descompilao. Sintaxe: javap <opes> <classes> Lista das principais opes:
Argumento -c -classpath <pathlist> -help -public -protected -package -private -s -verbose Descrio Desmonta o cdigo Especifica onde encontrar as classes Imprime as mensagens de ajuda Exibe somente as classe e membros pblicos Exibe somente as classe e membros protegidos Exibe somente as classe e membros pacotes (default) sem modificador Exibe somente as classe e membros privates Imprime tipo de assinatura interna Imprime a pilha e detalhes, tais como tamanho e etc. Cdigo fonte

Cdigo fonte, veja exemplo abaixo:


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

Aps 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[]); }

Copyright e-tecnologia.com, 2002

Verso: 3.0

178

Linguagem de Programao JAVA


JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

179

Linguagem de Programao JAVA


JB100 Java Bsico
Apndices
A - Conveno de Cdigo no Java B - Sistema de Codificao Unicode C - Registrando Fonte de Dados D - Notao UML

Copyright e-tecnologia.com, 2002

Verso: 3.0

180

Linguagem de Programao JAVA


JB100 Java Bsico
Apndice A
Conveno de Cdigo no Java
Classe - Os nome da classes devem um substantivo e ter a primeira letra maiscula o restante em minsculo. Exemplo: public class Pessoa. No caso de nome composto o primeiro e segundo nome deve comear com letras maiscula. Exemplo: public class PessoaFisica. No devemos usar espao em branco para separa os nomes e nem usar o sublinhado. Interfaces - Seguir as mesmas regras para nome de classe Mtodos - Os nomes dos mtodos podem ser verbos no infinitivo, devendo ser escrito em letras minscula. Exemplo: public int calcular. Para nome composto usar a seguinte regra a o primeiro nome em minsculo e a primeira letra do segundo nome em maisculo, veja o exemplo: public int calcularArea Constantes - Nomes de constantes devem escritos em letras maisculas. Exemplo: public static final VALOR Atributos e Variveis - Os nome dos atributos e/ou variveis devem ser escritos em letras minsculas. Controles de Estruturas: Atravs de { } (chaves); *Espaos - Convencionou-se o uso de quatro espaos para indentaes; Comentrios - Vide o capitulo sobre documentao

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

Copyright e-tecnologia.com, 2002

Verso: 3.0

181

Linguagem de Programao JAVA


JB100 Java Bsico
Apndice B
Sistema de Codificao Unicode
O que Unicode? Unicode sistema de codificao que fornece um nmero nico para cada caracter, No importa a plataforma, no importa o programa, no importa a lngua.

Fundamentalmente, os computadores lidam com nmeros. Gravam letras e outros caracteres na memria designando um nmero para cada um deles. Antes de o Unicode ser inventado, havia centenas de sistemas diferentes de codificao . Nenhum destes sistemas de codificao, no entanto, poderia conter caracteres suficientes: por exemplo, a Unio Europia por si s requer vrios sistemas de codificao diferentes para cobrir todas a lnguas. Mesmo para uma nica lngua como o ingls no havia sistema de codificao adequado para todas as letras, pontuao e smbolos tcnicos em uso corrente. Estes sistemas de codificao so tambm conflitantes entre si. Em outras palavras, dois codificadores podem usar o mesmo nmero para dois caracteres diferentes ou usar nmeros 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 nmero para cada caracter, no importa a plataforma, no importa o programa, no importa a lngua. O Padro Unicode tem sido adotado por lderes do setor de informtica tais como a Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys e muitos outros. O Unicode necessrio para padres 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 Padro Unicode Standard e a disponibilidade de instrumentos para suport-lo est entre as tendncias recentes mais significativas das tecnolgicas mundiais de software. Incorporar o Unicode aos servidores de clientes, aplicaes de faixas mltiplas e websites oferece uma reduo significativa nos custos quando comparado ao uso de conjuntos de caracteres legacy. O Unicode possibilita que um nico software ou website seja alvejado atravs de plataformas, lnguas e pases mltiplos sem a necessidade de reengenharia. Isto permite com que dados sejam transportados atravs de muitos sistemas diferentes sem que sejam corrompidos.

Mais informaes: www.unicode.org

Copyright e-tecnologia.com, 2002

Verso: 3.0

182

Linguagem de Programao JAVA


JB100 Java Bsico
Apndice C
Registrando Fonte de Dados
Para registrar um fonte de Dados no Windows98, clique iniciar, configuraes, painel de controle e selecione Fonte de Dados ODBC.

Selecione uma fonte de dados, por exemplo MS Access 97 Database e pressione o boto Adicionar.

Copyright e-tecnologia.com, 2002

Verso: 3.0

183

Linguagem de Programao JAVA


JB100 Java Bsico
Apndice C
Registrando Fonte de Dados

Agora selecione o drive

Informe o nome da fonte de dados. Clicar no boto Selecionar para informar o caminho onde ela se encontra. Para finalizar clique em OK

Copyright e-tecnologia.com, 2002

Verso: 3.0

184

Linguagem de Programao JAVA


Apndice D
Notao UML
SMBOLO GRFICO NOME DIAGRAMAS EM QUE APARECE USUALMENTE MODELO A QUE PERTENCEM
Classes de Objetos Componentes Classes de Objetos Componentes

JB100 Java Bsico

ASSOCIAO DE Diagrama de Classes, Diagrama de Componentes. AGREGAO Diagrama de Classes, ASSOCIAO DE COMPOSIO Diagrama de Componentes. Diagrama de Casos de Uso, ASSOCIAO DE Diagrama de Classes, DEPENDNCIA Diagrama de Componentes, Diagrama de Implantao. ASSOCIAO DE GENERALIZAO Diagrama de Casos de Uso, Diagrama de Classes. Diagrama de Casos de Uso, Diagrama de Classes, Diagrama de Componentes, Diagrama de Implantao. Diagrama de Casos de Uso, Diagrama de Seqncia.

Caso de Uso Classes de Objetos Componentes Componentes Caso de Uso Classes de Objetos Caso de Uso Classes de Objetos Componentes Componentes Caso de Uso Caso de Uso

ASSOCIAO REGULAR

ATOR

CASO DE USO

Diagrama de Casos de Uso.

Caso de Uso

Nome da Classe Atributos

CLASSE
Operaes

Diagrama de Classes.

Classes de Objetos

Nome do Componente

COMPONENTE

Diagrama de Componentes

Componentes

Diagrama de Estados,
Nome do Estado

Classes de Objetos Caso de Uso Classes de Objetos Caso de Uso

ESTADO

Diagrama de Atividades. Diagrama de Estados,

ESTADO FINAL Diagrama de Atividades

Copyright e-tecnologia.com, 2002

Verso: 3.0

185

Linguagem de Programao JAVA


Apndice D
Notao UML
ESTADO INICIAL
Nome da Interface

JB100 Java Bsico

Diagrama de Estados, Diagrama de Atividades.

Classes de Objetos Caso de Uso

ou

<<interface>> Nome da Interface Operao1 () Operao2 () Operao3 ()

INTERFACE

Diagrama de Componentes

Componentes

INTERVALO DE EXECUO DE OPERAO MENSAGEM DE RETORNO MENSAGEM E CHAMADA DE OPERAO Sncrona MENSAGEM E CHAMADA DE OPERAO Assncrona N

Diagrama de Seqncia

Caso de Uso

Diagrama de Seqncia

Caso de Uso

Diagrama de Seqncia

Caso de Uso

Diagrama de Seqncia

Caso de Uso

Diagrama de Implantao

Componentes

texto

NOTA

Em qualquer diagrama

identificador:Classe

ou

:Classe

Diagrama de Seqncia, OBJETO Diagrama de Atividades


Em qualquer diagrama em que necessrio representar um conjunto de coisas que devem estar agrupadas para efeito de uma organizao apropriada

Caso de Uso Caso de Uso

Nome do Pacote

PACOTE

TRANSIO DE ESTADO

Diagrama de Estados, Diagrama de Atividades

Classes de Objetos Caso de Uso

AUTODELEGAO

Diagrama de Seqncia

Caso de Uso

Copyright e-tecnologia.com, 2002

Verso: 3.0

186

Linguagem de Programao JAVA


Licena:

JB100 Java Bsico

Copyright e-tecnologia.com, 2002

Verso: 3.0

187

Linguagem de Programao JAVA


Notas:
Marcas Registradas:
Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial so de responsabilidade de seus proprietrios. O autor informa no estar associada a nenhum produto e/ou fornecedor apresentado neste material. No decorrer deste, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e desde j o autor informa que o uso apenas ilustrativo e/ou educativo, no visando ao lucro, favorecimento ou desmerecimento do produto/fabricante. Melhoria e Reviso: Este material esta em processo constante de reviso e melhoria, se voc encontrou algum problema ou erro envie um e-mail para ns. Criticas e Sugestes: Ns estamos abertos para receber criticas e sugestes que possam melhorar o material, por favor envie um e-mail para ns. Imagens: Google, Flickr e Banco de Imagem.

JB100 Java Bsico

Rildo F dos Santos (rildo.santos@etecnologia.com.br)

Copyright e-tecnologia.com, 2002

Verso: 3.0

188

Linguagem de Programao JAVA


JB100 Java Bsico

www.etcnologia.com.br

Rildo F Santos
(11) 9123-5358 (11) 9962-4260
rildo.santos@etecnologia.com.br @rildosan skype: rildo.f.santos http://rildosan.blogspot.com/

Autor: Rildo Santos (rildosan@uol.com.br)

Reviso 3.0 27/01/09


Verso: 3.0

Copyright e-tecnologia.com, 2002