Linguagem de Programação JAVA

JB100 Java Básico

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)

Revisão 3.0 27/01/09
Versão: 3.0

© Copyright e-tecnologia.com, 2002

Linguagem de Programação JAVA
JB100 Java Básico
Estrutura do Curso

Introdução Fundamentos da linguagem Programação Orientada a Objetos

Apresenta arquitetura da linguagem Java Apresenta comandos e funcionalidades básicas Principais aspectos da programação orientada a objetos

Características Apresentar características avançada da Avançadas Linguagem (Threads, networking e etc)

Introdução a UML
Utilitários

Apresentar uma visa geral da UML e seus os principais componentes
Demonstrar os principais utilitários da linguagem Java (Jar, JadaDoc e etc)

© Copyright e-tecnologia.com, 2002

Versão: 3.0

2

Linguagem de Programação JAVA
JB100 Java Básico
Conteúdo
Introdução breve apresentação gerando aplicações Instalação do JDK O primeiro programa Fundamentos da linguagem Java Estrutura da linguagem Palavras Reservadas Tipos de Dados Inicialização de variáveis Operadores A classe String A classe StringBuffer Casting Fluxo de Controle Arrays Passagem de Parâmetros A classe Math Empacotamento de Classes Conversão de Tipos A referência this Coleções Pacotes Programação Orientada a Objetos Classes Objetos Métodos Construtores Atributos e variáveis Exemplo de classe Exercício Abstração de Dados Relacionamento Herança Herança Múltipla Comparação: Classes vs Interfaces A referência Super Associação Navegação Rolename Agregação Composição Multiplicidade Constraint Encapsulamento Polimorfismo Acessibilidade Características Avançadas Instanceof Exception Formatando Números e Datas Constantes Threads Serialization TCP/IP Introdução a UML Utilitários JavaDoc Jar JDB Javap Apêndice Convenção de Código no Java Unicode Notação UML

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

© Copyright e-tecnologia.com, 2002

Versão: 3.0

3

2002 Versão: 3. Expectativas após o Curso: Ao final deste curso você deverá estar apto a: • Utilizar a linguagem Java para criar aplicações simples. Encapsulamento e Polimorfismo. porém não imprescindível. Objetivo deste curso: Apresentar as características básicas da linguagem Java.Saber editar e compilar programas e. funcionalidades. por exemplo. Windows.Lógica de Programação. Abstração de Dados. © Copyright e-tecnologia.0 4 . • Descrever e usar “sockets” para fazer acesso a servidores e clientes. tais como: Herança. APIs (Application Program Interface) e recursos avançados. Linux ou MacOS. • Descrever e usar as características de linguagem orientada a objetos com Java. assim como.com.Linguagem de Programação JAVA JB100 Java Básico Objetivo Você está preparado ? Para aprendermos uma nova linguagem de programação é necessário ter alguns conhecimentos como: . Unix. . • Conhecer o tratamento de exceções. sua estrutura. métodos. classes.Conhecer um Sistema Operacional. . Conhecer uma outra Linguagem de Programação é importante. • Conhecer UML básica.

Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia.com.0 5 . 2002 Versão: 3.

. pode ser executado em Linux. sem a necessidade de fazer ajustes). Com o passar do tempo. Surgimento: Java é uma linguagem de programação criada em 1995 por James Gosling e sua equipe. sendo executada em diversos dispositivos como telefone celulares. ou qualquer outro Sistema Operacional.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Uma breve apresentação. um bom exemplo disto são os “Applets”. Logo Java ganhou popularidade.0 6 . a linguagem Java vai além da computadores. televisores. que durante muito tempo foi o foco da linguagem Java. tanto para Internet quanto para ambiente cliente/servidor tradicional. O Java é reconhecido como a principal linguagem no mundo dos Servidores de Aplicações e ambiente sem fio (wireless). A linguagem é de propriedade da Sun Microsystem. por exemplo. 2002 Versão: 3. Algumas das características da linguagem Java: • Orientação a objetos • Portabilidade (isto que dizer que o mesmo programa criado no Windows2000. cartões inteligentes e etc. aqueles pequenos aplicativos que executam nos navegadores. Entretanto.com.. Java © Copyright e-tecnologia. o número de desenvolvedores aumentou e a linguagem amadureceu sendo hoje considerada o principal ambiente de desenvolvimento.

compilação em Jus-in-time. 2002 Versão: 3. AIX. persistência de objetos e reúso de código. sendo uma extensão natural de seu projeto orientado a objetos. atomicidade do código e suporte a protocolos de rede (TCP/IP)  Facilidade de manutenção de programas.com. como multithreading. Um ambiente de desenvolvimento.  Herança múltipla de classes e  Função e/ou procedure. polimorfismo. abstração de dados. A linguagem não tem:  Ponteiros do sistema operacional. OS/390 e etc). Principias características:  Cargabe Collection (gerenciamento dinâmico da memória). permitindo herança. Win32.  Código seguro. Linux.  Defines. permite a extensibilidade durante a execução.  Alto desempenho: Suporte a vários recursos.0 7 . Um ambiente de aplicação. Java é o resultado de uma busca por uma plataforma de programação que pudesse fornecer segurança. encapsulamento. Os primeiros objetivos alcançados com o desenvolvimento desta nova linguagem foram: •Orientação a objetos: A linguagem é orientada a objetos a partir de sua arquitetura.  Java Virtual Machine (JVM).  Sobrecarga de operadores.  Dinamismo: A natureza dinâmica do Java.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java O que é o Java? Java é: Uma linguagem de programação. MacOS. tais como Solaris. PalmOS.  Independência de plataforma (Portabilidade): Possibilidade do mesmo código fonte ser executado em diversos sistemas operacionais. © Copyright e-tecnologia. portabilidade (independência de sistema operacional) e escalabilidade..

Arrays são objetos. #ifde). entretanto.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Diferenças entre o Java e o C++ Java é sintática e morfologicamente muito parecido com a linguagem C++. ou seja. Gerenciamento automático de alocação e deslocação de memória (Garbage Collection).h> int main () { cout << “Hello \n" . Não há sobrecarga de operadores. Não existe Herança Múltiplas com classes. Veja abaixo um exemplo de um simples programa escrito em Java e em C++. apenas com interfaces.out.0 8 . Não existem funções. a JVM (Java Virtual Machine). Necessita de ambiente de execução (runtime). Não existem diretivas de pré-compilação (#define. mas apenas métodos de classes. } © Copyright e-tecnologia. } } C++ #include <iostream. Não há métodos com lista de argumentos de tamanho variável.com. return 0. existem diferenças: Inexistência de aritméticas de ponteiros (ponteiros são apenas referências). 2002 Versão: 3.println("Hello” + “\n”). Não existem Templates. Strings são objetos. Java public class Hello { public static void main (String arg []) { System.

" © Copyright e-tecnologia.out. focando o seu esforço no código em si. run anywhere.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Portabilidade: “A independência de plataforma” O Java é independente de plataforma. Em Java o mesmo programa pode ser executado em diferentes plataformas. 2002 Versão: 3. Isto significa que o desenvolvedor não terá que se preocupar com particularidades do sistema operacional ou do hardware. alterações também no código fonte.com.0 9 . Mas o que isto realmente significa? ? Na maioria das linguagens é preciso gerar uma versão para cada plataforma que se deseja utilizar. exigindo em muitos casos. Veja o exemplo abaixo: public class HelloWorldApp { public static void main (String arg []) { System. } } Compilação: > javac Hello.java Execução: > java Hello O mesmo código fonte Hello World Hello World Hello World Sistema Operacional e Processadores diferentes "write once.println("Hello World!").

© Copyright e-tecnologia. Na Interpretação. Com a compilação é gerado um código intermediário chamado Bytecode. 2002 Versão: 3. A Edição é a criação do programa.com.0 10 .java Na linguagem Java a compilação ocorre apenas uma vez e a interpretação ocorre a cada vez que o programa é executado. a máquina virtual Java ou JVM. que também é chamado de código fonte. analisa e executa cada instrução do código Bytecode.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Gerando Aplicações Para criarmos aplicações ou programas na linguagem Java temos que executar os alguns passos: Edição. 3 Java myProgram 1 2 Javac myProgram. que é um código independente de plataforma. Compilação e Interpretação.

ao descompacta-la selecionar a unidade de disco.3 PATH=%JAVA_HOME%\bin A variável JAVA_HOME deve ter o mesmo nome do diretório onde foi instalado o JDK.3.com (Página oficial da linguagem).. Caso você tenha instalado o JDK em outro diretório que não seja o padrão. basta executar o programa de instalação e seguir as instruções. Após a instalação é necessário configurar o ambiente: No windows: Acrescentar no Autoexec. os formatos mais populares de arquivos compactados são zip (para Windows) e tar (para Unix).c:\MeusPacotes O próximo passo é instalar a documentação. por exemplo: “C:\”. Ela deve estar no Autoxecec.0 11 .html.sun.bat: SET JAVA_HOME=C:\JDK1.com. 2002 Versão: 3. Procedimentos de Instalação: Para instalar o JDK. A documentação está no formato HTML. o arquivo principal o index. O Java procura pelas classes e pacotes através desta variável.java. Veja um exemplo: Set classpath=.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Instalação do ambiente de desenvolvimento (JDK) O Java Development Kid (JDK) é conjunto de ferramentas para compilar. ela geralmente está em arquivo compactado. executar e documentar um programa escrito em java. o diretório padrão da documentação (docs) já está definido no arquivo compactado. pois. As versões para Solaris.c:\JDK1. depurar. Caso o JDK esteja compactado será necessário descompactá-lo primeiro. você deverá especificar no momento da instalação. Linux e Windows podem ser obtidas no endereço: www. Classpath O Java defini uma variável de ambiente chamada ClassPath. © Copyright e-tecnologia.

Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Instalação do ambiente de desenvolvimento (JDK) Após a instalação. também chamadas de APIs. lib: Onde estão as bibliotecas Java. demo: Onde estão os arquivos de demonstração e exemplos da linguagem Java. os “header”.com. 2002 Versão: 3.jar. © Copyright e-tecnologia. entretanto. A extensão dos arquivos é . docs: Onde está a documentação do ambiente da Linguagem Java no formato HTML include: Onde estão os arquivos escritos em linguagem C.0 12 . os arquivos são de versão mais antiga. Include-old: Onde estão os arquivos escrito em linguagem C. você deverá ter uma estrutura de diretórios como aparece na figura: Resumo: bin: Onde estão todos os arquivos necessários para compilar (javac). que são usados na integração de Java e a Linguagem C. depurar (jdb) e executar (java). documentação jre: Ambiente de execução do Java necessário para distribuir a aplicação aos clientes. os “header”.

precisam apenas do ambiente de execução JRE. © Copyright e-tecnologia. 2002 Versão: 3.0 13 .Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Instalação do ambiente de desenvolvimento (JDK) Sistema Operacional Ambiente para os desenvolvedores Ambiente necessário nos Clientes (usuários finais) A figura demonstra uma visão do pacote de desenvolvimento JDK e também do ambiente de execução (JRE).com. Para os clientes. Ambos são necessários para desenvolver uma aplicação. os usuários finais. Aplicativos como os Applets executam através do Browser (Internet Explorer ou Netscape) geralmente a VM que está embutida nestes navegadores.

Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java O Compilador javac Sintaxe: javac [opções] NomedoArquivo. 2002 Versão: 3. Exemplos: > javac Hello. Desabilita as mensagens de advertência Exibe informações adicionais sobre a compilação Faz otimização do código Faz a compilação de todos os arquivos que dependem do arquivo que está sendo compilado. Normalmente somente é compilado o arquivo fonte mais as classes que este invoca. Hello.0 14 . geralmente de versões anteriores e faz aviso de advertência Gera tabelas de "debugging" que serão usadas pelo pelo deupador JDB. Sobrepõe a variável de ambiente Classpath.java > javac -deprecation Hello.java © Copyright e-tecnologia.java > javac -O -deprecation -verbose Hello.java > javac -O Hello.java Veja abaixo a lista dos principais argumentos: Argumento -classpath path -d dir -deprecation -g -nowarm -verbose -O -depend Descrição Localização das classes.java > javac -d . Determina o caminho onde as classes compiladas são armazenadas Faz a compilação de código em desuso.com.

2002 Versão: 3. Exibe a lista de opções não padronizadas do interpretador Exibe informações extras sobre a execução. mensagens indicando que uma classe está sendo carregada e etc Define a lista de argumentos que será enviada a aplicação > java Hello > javac -version > java -D nome=“Meu Nome” Hello > java -verbose Hello > javac Hello MeuNome © Copyright e-tecnologia. Sobrepõe a variável de ambiente Classpath. Possibilita redefinição de valores de propriedades.0 15 .com. geralmente em conjunto com JDB.jar) que contém a classe a ser executada.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java O Interpretador java Sintaxe: java [opções] NomedoArquivo [lista de Argumentos] Veja abaixo a lista das principais opções: Argumento Descrição -classpath path Localização das classes. tais como. -help -version -debug -D propriedade= valor -jar -X -v ou -verbose Lista de Argumentos Alguns Exemplos: Exibe a lista de opções disponíveis Exibe a versão do interpretador Inicia o interpretador no modo de "debug". Indica o nome do arquivo (com extensão . Pode ser usado várias vezes.

a execução do código. Em tempo de execução estes bytecodes são carregados. ou seja. garbage-collected heap e a área de memória (armazenamento de métodos). A JVM consiste em conjunto de instruções. conjunto de registradores. por exemplo. são verificados através do Bytecode Verifier (uma espécie de vigilante) e somente depois de verificados serão executados. Programa Fonte Javac <programafonte.  Interpretar o código.com. a pilha (stack) .0 16 . Cavalos de Tróia)  Verificar se os bytecodes aderem às especificações da JVM e se não violam a integridade e segurança da plataforma.java> Programa Compilado Java <programafonte> Class Loader J Byte Code Verifier V M Runtime © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Java Virtual Machine A JVM é parte do ambiente de "runtime" Java e é a responsável pela interpretação dos bytecodes (programa compilado em java). Funcões da JVM:  Carregar de forma segura todas as classes do programa (protegendo contra ataques premeditados. 2002 Versão: 3.

2002 Versão: 3. Isto geralmente provoca alguns problemas. No C e C++ (e em outras linguagens) o programa desenvolvido é responsável pela alocação e deslocamento da memória.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Garbage Collection Coletor de Lixo: A linguagem Java tem alocação dinâmica de memória em tempo de execução. caso não estejam o Java libera automaticamente esta área para o uso. o Java verifica se as variáveis de memória estão sendo utilizadas.com. © Copyright e-tecnologia. Durante o ciclo de execução do programa.0 17 .

Salvar como: Hello.out.0 18 .Compile o programa com o seguinte comando: javac Hello. Fácil! © Copyright e-tecnologia. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Escrevendo um pequeno programa 1 .Abra o editor de programas e crie o seguinte programa.com.Para executar digite o comando: java Hello Está pronto o primeiro programa em Java. System. public class Hello { public static void main (String arg []) { String s = "world". } } 2 .java 4 .println("Hello " + s).java Após terminar: 3 .

Sintaxe: javac <NomedaClasse..Para encerrar o método.0 19 .Compilar o programa. Observe que o nome do arquivo deve ser o mesmo nome da classe. Variável principal System.Fazer a assinatura da classe.out. também chamadas de fields: int i =0 .Fazer a assinatura dos métodos: public static void main (String args[]){ 4 .}“.println("Hello " + s).java>. } } método Atributo da Classe System Classe java Roteiro para criar um programa em Java: 1 .Para encerrar a classe.java 8 .Agora execute o arquivo.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Escrevendo um pequeno programa Dissecando o código 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 questão é String) { public static void main (String arg []) Método { String s = "world". Javac Hello. System.Declarar as variáveis.java 9 . isto equivale a declaração: public class NomedaClasse { 2 .Escrever o corpo do método: String s= “world”.. Hello.out.println(“Hello” + s).com. segue o mesmo princípio do método. note que o corpo do método está entre chaves “{.Salve o arquivo. 5 . Use chaves “}“. } 6 . 7 . 2002 Versão: 3. Neste caso não temos nenhum variável de classe ou field 3 . Sintaxe: java <NomedaClasse> Java Hello © Copyright e-tecnologia.

deve ter um par para classe.Erros de sintaxes: Verifique se os pares chaves estão corretos. 3 . ou seja.0 20 . © Copyright e-tecnologia. 2002 Versão: 3.com. system ao invés de System Verifique se há ponto e virgula “.Linguagem de Programação JAVA JB100 Java Básico Introdução a linguagem Java Escrevendo um pequeno programa Não deu certo ??? Veja se este pequeno “Checklist” pode ajudar: 1 .” no final de cada instrução. 2 .Se o compilador não consegue encontrar o arquivo: Verifique se o nome da classe e o nome do arquivo gravado em disco são correspondentes. Verifique se não há instruções erradas. outro para cada método e para cada bloco de declarações. como string quando o correto é String (é uma classe). lembre-se que o java faz distinção entre maiúscula e minúscula.Problemas com compilação: Veja o Classpath.

Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia. 2002 Versão: 3.com.0 21 .

um valor inteiro representa a coordenada x */ int x.com. são ignorados pelo compilador Todo o texto entre o "/**" e "*/". 2002 Versão: 3. Exemplo: Bloco da Classe public class TestEstrutura { public void sayHello(String hello) { System.) • Um bloco tem início e fim representados pelo uso das chaves { }. Todo o texto entre "/*" e "*/". // valor de x /* A variável x é integer */ int x.println("Hello ").Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Estrutura da Linguagem Comentários: Temos três tipos permitidos de comentários nos programas feitos em Java: • // comentário de uma única linha • /* comentário de uma ou mais linhas */ • /** comentário de documentação */ (este tipo de comentário é usado pelo utilitário Javadoc. } } Bloco do Método Ponto e virgula © Copyright e-tecnologia. Blocos e o espaço em branco: • No Java.0 22 . • O uso do espaço em branco permite uma melhor visualização dos comandos e em conseqüência facilita a sua manutenção. os comandos são terminados com o sinal de ponto e vírgula (. inclusive. que é responsável por gerar documentação do código Java) Exemplo int x=10. /** x -. inclusive. Descrição Comentário de linha Exemplo onde o comentário usa mais que uma linha. são ignorados pelo compilador mas serão usados pelo utilitário javadoc.out. Ponto e vírgula.

ou sinal de cifrão ($)._sys_var1 . e depois o nome do Identificador (nome do variável) © Copyright e-tecnologia.identifier .com. } } Identificador (nome do método) Classe Veja que primeiro foi definido o tipo de dado. 2002 Versão: 3.0 23 .1nome .java:3: illegal start of type private 1nome.out. Método principal System.userName . sublinhado ( _ ).\TestClass . Veja o código abaixo onde são apontados os identificadores Identificador (nome da classe) public class Hello { public static void main (String arg []) { String s = "world". String.$change Exemplo: public class PessoaFisica Veja alguns inválidos: .Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Estrutura da Linguagem Identificadores: Que são identificadores ? Identificadores são nomes que damos as classes.. Veja alguns exemplos: Classe é diferente de CLASSE classe é diferente de Classe Exemplos de identificadores:: Alguns identificadores válidos: . Em Java existe uma diferença entre letras maiúsculas e minúsculas.User_name ./metodoValidar --------------------------.println("Hello " + s). aos métodos e as variáveis. Regra: Um identificador deverá ser inicializado com uma letra.Compiler Output --------------------------TestIdentificador.

java:3: <identifier> expected private int return =1. ^ TestEstrutura.Linguagem de Programação JAVA JB100 Java Básico 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.java:6: <identifier> expected public void default(String hello) Palavra reservada © Copyright e-tecnologia. Veja o exemplo abaixo: public class TestPalavraReservada { private int return =1.Compiler Output --------------------------TestEstrutura. 2002 Versão: 3.com. todas elas foram reservadas para a Linguagem Java.out. Palavra reservada public void default(String hello) { System.println("Hello "). } } Este programa provocará erros ao ser compilado: --------------------------.0 24 . pois. quer dizer que nenhuma das palavras da lista acima podem ser usadas como identificadores.

short. © Copyright e-tecnologia. int e long Possuem somente a parte inteira. Exemplos: int i1 = 10.\ „\” ”‟ . não suportam casas decimais. 2002 Versão: 3. int i2 = 11. Java usa o sistema de codificação Unicode (Veja Apêndice B).“” String (String é uma classe) O tipo String é um tipo referência que é usado para representar uma seqüência de caracteres. ou seja. Tipo Textual .com. O literal do tipo char pode ser representado com o uso do („ „).char e String (String é uma classe) Um caracter simples usa a representação do tipo char.. . Sintaxe padrão: <Tipo de dado> <nome da variável>. „\n‟ – nova linha „\r‟ – enter „\u????‟ – especifica um caracter Unicode o qual é representado na forma Hexadecimal. Inteiros – byte.0 25 . s1.. Código de escape „\t‟ – tabulação „\\‟ .Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Tipos de Dados Existem tipos básicos ou primitivos e os tipo de referência.boolean: true e false Exemplo boolean fim = true. <Tipo de dado> <nome da variável> = valor da variável. Tipo Lógico . <nome da variável> = valor da variável. Neste sistema o tipo char representa um caracter de 16-bit. byte b = 1. Exemplos: a = „b‟. Exemplo: String s = “Isto é uma string”. ou <Tipo de dado> <nome da variável> = valor da variável.

718F Um valor de ponto flutuante simples.1F. Existem dois tipos em Java: o float e o double.7E+308 Precisão 7 dígitos 15 dígitos Nota (1) Toda vez que uma variável tipo float não tem a literal F.854. 123.483.808 a 9.768 a 32.14 Um ponto flutuante simples. Uma vez não identificado.4E+38 4.036.4E-45 a 3.854.807 Ponto Flutuante São os tipos que têm suporte às casas decimais e maior precisão numérica.02E23 Um valor de ponto flutuante largo.4E+306D Um valor de ponto flutuante usando o tipo double.223.14D Regra: Os tipos float e double quando aparecem no mesmo programa é necessário identificá-los.372.767 -2. double d1 = 6. double d = 6.647 9.036.Linguagem de Programação JAVA JB100 Java Básico 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. para que não comprometa a precisão numérica: float f = 3.95F. Exemplos de declarações: float f = 3. d3 = 6. esta variável internamente é tratada como se fosse um inteiro © Copyright e-tecnologia.483. Veja alguns exemplos: 3.372. Tamanho 32 bits IEEE 754-1985 64 bits IEEE 754-1985 Tipo Float Double Faixa 1.147.147. 2.9E-324 a 1. ao tentar compilar o programa. 6.35.1 float div = 2.37.com.1.775. double pi = 3.648 a 2.35. 2002 Versão: 3.0 26 . d2 = 6. será emitida uma mensagem de erro.223.775.36.

o valor de i está indefinido.com. locais ou temporárias e devem ser inicializadas antes do uso. pois. 2002 Versão: 3. int c = i + a.0 27 .Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Inicialização de variáveis Não é permitido o uso de variáveis indefinidas ou não inicializadas. Exemplo: int i. As variáveis definidas dentro do método são chamadas de variáveis automáticas. Neste caso ocorre erro. © Copyright e-tecnologia. int a = 2.

Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Operadores Os operadores na linguagem Java.1.com. short s1++. como por exemplo o C e o C++. © Copyright e-tecnologia. são muito similares ao estilo e funcionalidade de outras linguagens. short s1 = -1. Operadores Lógicos: > < ! Maior que Menor que Not (negação) <= >= && Menor que ou igual Maior que ou igual And == != || Igual Diferente OR Exemplos: i > 10. int b = a + 1.0 28 . 2002 Versão: 3. short s2 = 10. x == y. “Test” != “teste” !y x || y Operadores Matemáticos: + / Adição Subtração Divisão * + Multiplicação Positivo (unário) Negativo (unário) ++ -% Incremento Decremento Módulo Exemplos: int a = 1. int c = 4 % 3. int c = b . int d = a * b.

© Copyright e-tecnologia. primeiro ocorrerá a divisão e após a soma. 2002 Versão: 3.0 29 .out. Com a precedência definida pelo desenvolvedor int a = 4 / (2 + 4). Neste caso. Faz a comparação do objeto que está “instanciado” no objeto Este operador é usado para criar novas “instance” de classes Precedências de Operadores: . if (obj instanceof String) System. primeiro ocorrerá a soma e depois a divisão.[]() ++ . Já neste caso.println(“verdadeiro”) new: Hello hello = new Hello().! ~ instanceof new (type) expressão */% +<< >> >>> .com.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Operadores Outros Operadores: instanceof new Exemplos: instanceof: Objeto obj = new String(“Teste”).O type é coerção de tipo Exemplo: Com a precedência definida pelo Java int c = 4 / 2 + 4.

int e long). preenche com 1s a partir da esquerda. Os tipos de dados são armazenados em quantidade maiores que byte. para uma variável tipo byte. short. Operador & | ^ << Nome AND sobre bits OR inclusive sobre bits OR exclusivo sobre bits Deslocamento para esquerda Deslocamento para direita com extensão de sinal Deslocamento para direita com extensão de zero Complemento de um Descrição Os bits no resultado são configurados como 1 se os bits correspondentes nos dois operandos forem ambos 1 Os bits no resultado são configurados como 1 se pelo menos um dos bits correspondentes nos dois operandos for 1 Os bits no resultado são configurados como 1 se somente um dos bits correspondentes nos dois operandos for 1 Desloca os bits do primeiro operando para a esquerda pelo número de bits especificado pelo segundo operando. preenche a partir da direita com bits 0. Todos os dados são representados internamente como uma seqüência de bits. >> >>> ~ Manipulação de bits e os operadores sobre bits Exemplos de manipulação do bits: Right Shift (>>) 128 >> 1 <=> 128/21 = 64 256 >> 4 <=> 256/24 = 16 4 -256 >> 1 <=> -256/2 = -16 Left Shift (<<) 128 << 1 <=> 128 * 21 = 256 16 << 2 <=> 16 * 22 = 64 © Copyright e-tecnologia.com. preenche com 0s a partir da esquerda. 2002 Versão: 3. que é a unidade de armazenamento padrão. No geral uma seqüência de bits formam um byte. Desloca os bits do primeiro operando para a direita pelo número de bits especificado pelo segundo operando. Desloca os bits do primeiro operando para a direita pelo número de bits especificado pelo segundo operando. Se o primeiro operando for negativo. Cada bit pode assumir o valor de 0 ou 1. caso contrário.0 30 . 0s são inseridos a partir da esquerda Todos os bits são configurados como 1 e todo os bits são configurados como 0.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Operadores Operadores Binários: Java fornece extensa capacidade de manipulação de bits. Os operadores sobre os bits são utilizados para manipular os bits de operandos integrais (isto é aqueles do tipo byte. char.

b-. Veja os exemplos: Pré-incremento: Pré-incremento = ++a. z = x . b = 11.1 x = x + y x = x . Primeiro é feito a atribuição e depois o incremento. b = 11.out. System. } } Observe que isto ocorre devido a precedência de operadores.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. 2002 Versão: 3. int z = x . Exemplo: a = 10. y = 1. Operador ++ -+= -= *= /= &= |= ^= %= Exemplo x++. int y = 1. Exemplo: x = 1.com.=> z = 0 Exemplo: public class TesteOperador { public static void main(String args[]) { int x = 1.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Operadores Podemos realizar operações de Pré e Pós incremento e de Pré e Pós decremento. y = 1. ++x x--. c = a + ++b => c = 22 Exemplo: a = 10. Exemplo: x = 1. z = x + --b => z = 1 Pós-decremento = x--.y--. c = a + b++ => c = 21 Pós-decremento: Pré-decremento = --x.0 31 . Pós-incremento = a++. --x x += y x -= y x *= y x /= y x &= y x |= y x ^= y x %= y Equivalência x = x + 1 x = x .println("o valor z: " + z).

0 32 .com.charAt(5)).out. trim. String sobrenome = "Gosling ". charAt e length Concatenação: concat e operador + Exemplo: O operador + é utilizado para concatenar objetos do tipo String. if (s1.equals(s2)) { System.println("São iguais"). produzindo uma nova String: String PrimeiroNome = “Antonio”.substring(0. startsWith.out.println("São iguais"). System.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java String A classe String Objetos String são sequências de caracteres Unicode Exemplo: String nome = “Meu nome” Principais métodos: Substituição: replace.println("A letra é: " + frase.println("Posição: " + frase. } else { System. equalsIgnoreCase e compareTo Outras: substring.out. toLowerCase. //concat String nome = "James ”.println("O nome é: " + nomeCompleto).concat(sobrenome). System. String s2 = new String("hello").out. } } © Copyright e-tecnologia.indexOf('a')).println("São Diferentes"). } else { System.out. System. indexOf e lastIndexOf Comparações: equals. Busca: endWiths.out. System. String Nome = PrimeiroNome + SegundoNome Exemplo: public class TestString { public static void main(String arg[]) { String s1 = "Hello". substring String frase = "Vovo viu a uva".println("São Diferentes"). String SegundoNome = “Carlos”.out. charAt. 2002 Versão: 3. //equals if (s1. String nomeCompleto = nome. toUpperCase. } //Alguns métodos //indexOf.out.equalsIgnoreCase(s2)) { System.println("equalsIgnoreCase"). } //equalsIgnoreCase System.out.println("Nova frase: " + frase.4)).

out. b2 = new StringBuffer(25). ").println("b3:" + b3. delete.println("b2 invertida: " + b2.println("b3:" + b3..println("b3:" + b3. 2002 Versão: 3.out.insert(0.toString() ).println("b2 Capacidade: " + b2.out. b2. System. System. "A x B ").out.toString() ).println("b2: " + b2.println("b2:" + b2.capacity()). Exemplo: Várias formas de declaração Usando os métodos para manipular o objeto StringBuffer public class TestStringBuffer { public static void main(String arg[]) { //new instance StringBuffer b1 = new StringBuffer().reverse() ).toString() ). System.delete(0. b3..out. .println("b2 tamanho: " + b2. System.out. System.toString() ). b3.append("Teste b2"). System.toString() ).length() ).println("b3:" + b3.length()).out.toString() ). insert.out. b3.out. } } © Copyright e-tecnologia. b2. /*para exibir o conteúdo é necessário usar o método toString */ System. System.0 33 . System.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java StringBuffer Objetos StringBuffer são uma seqüência mutável de caracteres Unicode Construtores: StringBuffer – Cria um buffer vazio StringBuffer(int capacidade) – Cria um buffer com a capacidade especificada StringBuffer(String initialstring) – Cria um buffer contendo uma string informada. b3.4).toString() ).out.out.com. System. Principais métodos: append. StringBuffer b2. b3 = new StringBuffer("Teste.append("vamos testar novamente").append(b3).println("b1:" + b1.println("b2 Tamanho: " + b2. System.

e por sua vez provoca um erro Casting explícito após a soma de a + b. /* Linha errad.out.com.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Casting (coerção de tipos) Java faz a promoção de tipos para garantir que os valores sejam suportados pelas faixas. byte b = 3. Devemos explicitar a conversão entre tipos de variáveis. pois a operação adição sofre casting implicita */ //Correção o casting explicito byte c = (byte) (a + b). 2002 Versão: 3.0 34 . System. o que provoca estouro da faixa de byte. Veja o exemplo abaixo: public class TestCasting { public static void main(String args[]) { byte a = 1. byte c = a + b.println(c). a linguagem Java não suporta conversões arbitrárias de tipos de variáveis. } } Hierarquia de conversão: Casting implícito Por força do operador matemático o Java promoveu a valor resultante de a + b para um valor inteiro. o valor da soma é convertido para byte byte short int long float char Conversão Implícita double Conversão Explícita © Copyright e-tecnologia. contudo.

pack().com.*. mas sim suas referências.0 35 . 2002 Versão: 3. public class CastObjeto { public CastObjeto() { Window janela = new Frame(). Veja os exemplos abaixo: import java. } } Conversão ilegal. a referência somente poderá ser utilizada para acesso aos membros da classe.. ficando os membros da subclasse “inacessíveis”. embora com seus valores mantidos.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Casting (coerção de tipos) Objetos Os objetos não são convertidos. .awt. Uma referência de uma classe qualquer pode ser sempre usada para fazer referência a um objeto de uma de suas subclasses..setTitle("Titulo da Janela"). janela. Quando isso acontece. A conversão desse tipo (de subclasse para classe) é chamada de implícita. janela. embora o método exista. o objeto janela não “enxerga” os métodos de Frame. pois. pois o objeto é do tipo Frame Hierarquia de classes: SuperClasse Window SubClasse Frame © Copyright e-tecnologia.

com. 2002 Versão: 3. public class CastObjeto { public CastObjeto() { Window janela =new Frame(). é possível. Frame janela1 = (Frame) janela.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Casting (coerção de tipos) Casting ( Conversão de tipos ) Objetos import java. © Copyright e-tecnologia. } } Conversão legal.awt. essa conversão somente será válida se a referência à subclasse passar a apontar para um objeto compatível com ela.setTitle("Titulo da Janela").*. de referência a classe para referência a subclasse. a janela é um objeto do tipo Frame e está sendo atribuído a uma referência do mesmo tipo A conversão contrária.0 36 . ou seja. Entretanto. pois. SuperClasse Conversão implícita SubClasse Conversão explícita As Interfaces seguem a mesma regra das classes. janela1.

println(ic). a operação provoca erro. quando atribuímos a variável . Casting explícito: (byte) (a + b) //Exemplo 2 Casting implícito: (a + b) int ia = 1.0 37 .println(c).causa erro */ //int ic = ia + lb. byte b = 3. pois a operação adição sofre casting implicita */ //byte c = i + i.out. 2002 Versão: 3. pois.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Casting (coerção de tipos) Casting Exemplo: public class TestCasting { public static void main(String args[]) { //Exemplo 1 byte a = 1. Uma vez aplicado o casting a operação de soma é realizado e depois é convertida para o type byte. //Correção o casting explicito byte c = (byte) (a + b). //linha errada -> Casting //Correção o casting explicito int ic = ia + (int) lb. System. System. O resultante da soma foi promovido para tipo int. } } © Copyright e-tecnologia. long lb = 3. /* Perda de Precisão . /*Linha errada. que é do tipo byte. a faixa de byte é menor que a faixa de int.out.com.

vamos entender a necessidade dos blocos. laços e etc. }”. } (<expressão boolean>) ? <expressão if-true> : <expressão if-false> © Copyright e-tecnologia. porém. System.println(“Hello”). suporta instruções e laços para definir o fluxo de controle.. Exemplo: { int i = 10.. Um bloco é o conjunto de instruções delimitadas por chaves “{. podemos encontrá-los sempre dentro de um programa Java... i++ } bloco Os blocos povoam métodos.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle Java como qualquer outra linguagem de programação. break.. ou seja. Construções condicionais: if (<expressão boolean>) <declarações>.. instruções condicionais. 2002 Versão: 3.out.com. default: <declarações>.. else <declarações>..0 38 .. case <expressao char-int>: <declarações>.. Primeiro vamos discutir as instruções condicionais e depois as instruções de laço.. Antes.. switch (<expressão>) { case <expressao char-int>: <declarações>.

println(x). y++. x++.out. y++. } else { System. } Mais de uma instrução é usado a estrutura de bloco if (expressão boolean) { //Bloco de instruções } else if (expressão boolean) { //Bloco de instruções } else if (expressão boolean) { //Bloco de instruções } else if (expressão boolean) { //Bloco de instruções } else { //Bloco de instruções } © Copyright e-tecnologia. } if (expressão boolean) { //Bloco de instruções } else { //Bloco de instruções } Exemplo: if (x>y) { System.com. 2002 Versão: 3.out.out.println(x). if (expressão boolean) { //Bloco de instruções } Exemplo: if (x>y) { System.0 39 .out.println(x).Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução if Sintaxes: if (expressão boolean) instrução Exemplo: if (x>y) System.println(y).

out.com.out. y++. 2002 Versão: 3. else Código status = “Negativo”. Lógica © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução if Sintaxes: (continuação) Exemplo: if (x>y) { System. } else { System. } else if (x<y) { System. } OU if (saldo > 0) status = “Positivo”.println(x)... } Notamos que a instrução if pode ser utilizada de várias formas. if (expressão lógica) then {. x++.println(y).out. Veja a lógica e também a implementação do código: sim saldo > 0 não status = Negativo status = Positivo if (saldo > 0) { status = “Positivo”. System.out.println(x).. ela pode ser aplicada de acordo com o contexto.. O exemplo abaixo demonstra a estrutura mais popular da instrução if.println(y).} else {. } else { status = “Negativo”. }. ou seja.0 40 .

if (saldomedio > 5000) { limitecheque = 1000.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução if Neste exemplo apresentaremos a instrução if com múltiplas opções.. } } Lógica Código © Copyright e-tecnologia.com.println("Limite cheque especial. } else if (saldomedio > 2000 && saldomedio <= 3000) { limitecheque = 600. } else if (saldomedio > 1000 && saldomedio <= 2000) { limitecheque = 400. } else if (saldomedio > 3000 && saldomedio <= 5000) { limitecheque = 800. } System. 2002 Versão: 3. Veja a lógica e também a implementação da do código: saldo médio > 5000 sim Limite cheque =1000 não saldo médio > 3000 and <=5000 sim Limite cheque =800 não saldo médio > 2000 and <= 3000 sim Limite cheque =600 não saldo médio > 1000 and <= 2000 sim Limite cheque =400 não Limite cheque =0 public class ifCompostoExemplo { public static void main(String args[]) { int limitecheque." + limitecheque). int saldomedio = 15000.out.. } else { limitecheque = 0.0 41 .

ela tem algumas diferenças da estrutura if . © Copyright e-tecnologia. case 'b': selecao += 'b'.com. o tipo de dado válido na expressão é somente do tipo char e os tipos inteiros (int. achamos mais uma diferença em relação ao if . por exemplo. } System. case 'c': selecao += 'c'. entretanto. Como.out. teremos o seguinte resultado para a variável selecao = „cd‟. short. switch (opcao) { case 'a': selecao += „a‟. a instrução Switch executa todas as opções após uma opção válida. String selecao = "". byte. Sintaxes: switch (expressao char-integer) { case expressao1: // instruções case expressao2: // instruções case expressao3: // instruções default: // instruções } A instrução switch Será impresso “abcd” Exemplo: public class switchSimplesExemplo { public static void main(String args[]) { char opcao = 'a'. default: selecao += "d".if else. Por exemplo.if else. } } Após a impressão do valor.0 42 . 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução switch Switch é uma alternativa para seleção múltipla de escolha. long).println(selecao). se valor inicial da variável opção for igual „c‟.

case 'c': selecao += 'c'. break. 2002 Versão: 3.com. depende da lógica a utilizada. case 'b': selecao += 'b'. Bem como o próprio nome da instrução sugere este sai da instrução switch.println(selecao). case expressao2: // instruções break case expressao3: // instruções break default: // instruções } A instrução switch com a instrução break Será impresso “b” public class switchBreakExemplo { public static void main(String args[]) { char opcao = 'b'. } } Note que tanto a instrução default quanto a break são opcionais. Sintaxes: switch (expressao char-integer) { case expressao1: // instruções break. break. } System. break. © Copyright e-tecnologia. default: selecao += "d". desprezando as demais é necessário incluirmos a instrução break.out. Fundamentos Fundamentos da daLinguagm Linguagem Java Java Para que a instrução switch execute apenas uma opção.Linguagem de Programação JAVA JB100 Java Básico Fluxo de Controle A instrução switch. switch (opcao) { case 'a': selecao += 'a'. String selecao = "".0 43 .

case 8: avaliacao = "Bom".out. default: avaliacao = "Regular". switch (nota) { case 10: avaliacao = "Excelente".println("Avaliação: " + avaliacao). break. break. break. Neste exemplo apresentaremos a instrução switch e a instrução break com múltiplas opções. Veja a lógica e também a implementação do código: sim case 10 avaliacao = “Excelente” não sim case 9 avaliacao = “Ótimo” não sim case 8 avaliacao = “Ótimo” não sim avaliacao = “Ótimo” case 7 não avaliacao = “Regular” public class switchCompostoExemplo { public static void main(String args[]) { String avaliacao ="".Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução switch. } System. 2002 Versão: 3. case 7: avaliacao = "Satisfatório". break. case 9: avaliacao = "Ótimo".0 44 .com. } } Código Lógica © Copyright e-tecnologia. int nota = 8.

} System. Neste exemplo apresentaremos a instrução switch sem o break com múltiplas opções. Veja a diferença: sim case S Ar condicionado não case L sim Direção hidráulica não sim case S Trio Elétrico não Alarme public class switchSemBreakExemplo { public static void main(String args[]) { char opcao = 'B'.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução switch. switch (opcao) { case 'S': //Super luxo selecao += " Ar condicionado +". String selecao = "". case 'B': //Básico selecao += " Trio Elétrico +". 2002 Versão: 3.0 45 .com. case 'L': //Luxo selecao += " Direção hidráulica +". } } Código Lógica © Copyright e-tecnologia.out.println(selecao). default: selecao += " Alarme".

. Java. por exemplo. O operador condicional ternário (?:). pois..Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle Operador Ternário E por fim o operador ternário. Status = (saldo > 0)? ”Positivo”:“Negativo”. oferece uma maneira simples de avaliar uma expressão lógica e executar uma das duas expressões baseadas no resultado.0 46 . Faça uma comparação com a instrução if-else. Veja a lógica e implementação do código.. sim saldo > 0 não status = Positivo status = Negativo { . 2002 Versão: 3. . Visual Basic. É muito parecido com a instrução iif() presente em algumas linguagens.com.. } Lógica Código Lembre-se que podemos aninhar operadores e condições. todos suportam a recursividade. Sintaxe: (<expressão boolean>) ? <expressão true> : <expressão false> ou variável = (<expressão boolean>) ? <expressão true> : <expressão false> Neste exemplo apresentaremos uma expressão condicional simples. © Copyright e-tecnologia.

... do <statements>.... <exprs>. Laços: while (<boolean-expression>) <statements>..) <statements>. Para os laços finitos a execução está atrelada a satisfação de uma condição. <boolean-expression>...0 47 . 2002 Versão: 3. for (<init-stmts>. independente de condição... © Copyright e-tecnologia. por exemplo: Se o valor da variável a não for igual 10. do-while e for. Já os infinitos estes executarão sempre. então incrementar um na variável senão imprimir a variável valor Isto quer dizer que a instrução de incremento vai repetir dez vezes. A linguagem Java tem dois tipos de laços: os finitos e os infinitos.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle Laços O que são laços? Laços são repetições de uma ou mais instruções até que uma condição seja satisfeita. temos três instruções que suportam laços ou “loops”.com. while (<boolean-expression>). São elas: while. não a = 10 a++ sim Imprimir a true a++ Em Java.

Ela faz a validação antes de executar as instruções. while (d<= 10) { System.0 48 . } } Sintaxe: while (expressao boolean) { //Bloco } A instrução while Exemplo: public class whileExemplo { public static void main(String args[]) { int d = 1. while (d >= 0) System.println("Contagem Regressiva " + d--). ou seja. Sintaxe: while (expressao boolean) instrução java Este código será executado 10 vezes. ou seja até a condição ser satisfeita Exemplo: public class whileExemplo2 { public static void main(String args[]) { int d = 10.out.println("7 x " + d + " = " + 7*d). irá executar até a condição estar satisfeita © Copyright e-tecnologia. enquanto uma determinada condição não for satisfeita. } } } Este código produzirá a Tabuada do 7 Neste exemplo o laço é finito. 2002 Versão: 3. Ela executa uma instrução ou bloco de instruções.com.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução while.out. d++.

Exemplo 1: .println("7 x " + d + " = " + 7*d). provavelmente isto não deverá acontecer. int d = 1. Os exemplos abaixo demonstram como tornar um laço infinito usando a instrução while. while (true) { System.. © Copyright e-tecnologia.out.println(d++).0 49 .. 2002 Versão: 3.. pode ser um pequeno erro de lógica.. todavia.com. d++. } .Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução while.. } . inversão de valores ou uma condição que nunca será satisfeita. Exemplo 2: ..out. while (d > 0) { System....

não valor < 20 sim Valor++ Imprime valor Sai do Laço { ... 2002 Versão: 3.. while(valor <20) valor++ System.println(valor). } Lógica Código © Copyright e-tecnologia.out.0 50 ..com.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução while. . O exemplo abaixo exibe a lógica e a implementação do código de um laço finito usando a instrução while.

do System.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução do-while. d++. 2002 Versão: 3. do { System. enquanto a instrução while verifica a expressão boolean (lógica) antes e somente depois executa a instrução ou o bloco de instruções. Sintaxe: do instrução java while(expressão boolean) Este código será executado 10 vezes. } } © Copyright e-tecnologia. Ela tem uma pequena diferença da instrução while.out.out. ou seja até que a condição seja satisfeita Exemplo: public class dowhileExemplo { public static void main(String args[]) { long d=10.0 51 . a instrução do-while executa primeiro e depois verifica a condição.println("Faixa " + Math.com. } while (d <=110). } } Sintaxe: do { //Bloco } while(expressão boolean) A instrução do-while primeiro executa as instruções que estão dentro de bloco e depois verifica a expressão boolean Exemplo: public class dowhileExemplo2 { public static void main(String args[]) { int d = 100.println(d++). while (d <=20).random()*d).

println(valor). . } Lógica Código © Copyright e-tecnologia.out. while(valor <20) valor++. } while(valor <20) . do { valor++. Valor++ não Imprime valor Valor < 20 sim .. 2002 Versão: 3.. System. System.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução do-while. Lógica Código Agora faça uma comparação entre a instrução while e do-while: valor < 20 sim não Valor++ Imprime valor Sai do Laço { .out...0 52 ..com... O exemplo abaixo exibe a lógica e implementação do código de laço finito usando a declaração do-while.println(valor)..

x++) instrução Java valor de incremento: valor que incrementaremos ou decrementaremos For(x=1.x<10.x<10. onde: valor-inicial . valor-inicial2 .x++) instrução Java ou For(int x=1.com. for(l. condição. valor de incremento).Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução for A instrução for é a mais popular entre as instruções de laço.x<10. Exemplo: int x. valor de incremento/decremento) instrução java.condição. Sintaxes: for(valor-inicial1. 2002 Versão: 3. for(). condição. Exemplo: For(x=1.. for(x=1. for(valor-inicial. A instrução for como as demais instruções de laços repetem uma instrução ou bloco de instruções até que determinada condição seja satisfeita. valor de incremento).x<10. valor de incremento/decremento) { //Bloco de instruções } for(.x++) instrução Java condição: é expressão lógica.0 53 .x--) instrução Java © Copyright e-tecnologia.valor de inicio (esta variável que pode ser definida dentro do for ou fora).

for(d=220. d <=230. d++.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução for Veja abaixo alguns exemplos da implementação da instrução for: public class forExemplo { public static void main(String args[]) { int d. d++.0 54 .out. d <=240 && i < 35.random()*d). } for(d=230. i++) { System. System.random()*d). d <=210. } } } Sem bloco Com bloco Trabalhando com valores Trabalhando com valores e condição composta Trabalhando com ordem decresente © Copyright e-tecnologia.i=10. d <=190. } for(i=40.println("Faixa 200-210: " + Math.i=20.out.println("Faixa 230-240 " + Math. } int i.out. 2002 Versão: 3. d++) System. for(d=200. System. i >= 30.out.random()*d).println("Valor de i 40-30 " + i). i--) { System.println("Faixa 220-230 " + Math.println("Valor de i " + i).println("Faixa 180-190 : " + Math.random()*d). i++) { System.out.println("Valor de i " + i). for(d=180.out. d++) { System.com.out.

println("Valor de i 40-30 " + i). } } } Note que a instrução break pode ser usada para sair de instrução de laço (while.com. d <=230.out.println("Faixa 180-190 : " + Math.random()*d).Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução for Veja abaixo mais exemplos. .out.d++) { System.println("Valor de i " + i).random()*d). for(. 2002 Versão: 3. for(d=200.out. } for(d=210.random()*d).) { System.println("Faixa 210-220: " + Math. desta vez. A condição está associado a instrução if Sem valor de incremento ou decremento.0 55 . do-while e for). for(. i <=20.d <=190.println("Faixa 220-230 " + Math. © Copyright e-tecnologia. for(d=220. } for(i=40. i >= 30. d < 220. i++) System. d++) { System.random()*d). } int i=10. d++) System. i-=2) { System.out. if (d>210) break. For aninhados Decrementado de dois em dois public class forExemplo1 { public static void main(String args[]) { int d=170. com algumas variações possíveis da instrução for: Sem declarar valor-inicial Sem condição. d++.out.println("Faixa 200-210: " + Math.out.

i-=2) { System. for(i=10.. 2002 Versão: 3. i-=2) System.out.out.0 56 . do-while e for. ... i >= 0..println("Valor de i 10-0 " + i). } .Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle A instrução for O exemplo abaixo demonstra a lógica e implementação do código para a instrução for: i=10 . OU Imprime i ..println("Valor de i 10-0 " + i). Quem será mais rápido ? © Copyright e-tecnologia. for(i=10.com. sim i >=0 não i=i-2 Lógica Código Agora faça uma comparação entre a instrução do while. i >= 0..

0 57 . Esta estrutura não é muito usual.. d++) System.println("Faixa de 10. label_two: { for(. que é similar ao comando goto da Linguagem Basic..out. Sintaxe: <nome-da-label>: instrução java ou <nome-da-label>: { //Bloco de instruçõe } Veja a label e a instrução for que parte da label_one Exemplo: public class labelExemplo { public static void main(String args[]) { int d=1. } } } © Copyright e-tecnologia. devido sua lógica. Esta defini um bloco de instruções que podem ser executadas.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle Label (rótulo) Em Java temos uma estrutura de bloco chamada Label.20: " +d). 2002 Versão: 3. d <=20.out.println("Faixa de 0.com. d++) System. d <=10. label_one: for(d=1.10: " +d).

0 58 . desta vez usando a instrução continue public class labelExemplo1 { public static void main(String args[]) { label_a: for(int d=1.10: " +d).Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Fluxo de Controle Label (rótulo) Outro exemplo de Label.println("Faixa A de 0..out. d++) { System. © Copyright e-tecnologia. 2002 Versão: 3. d <=10. if ( (d%i)>0) continue label_a.out.com. } } } } A instrução continue Às vezes precisamos pular para aquela ou esta parte do programa sem passar pelo resto das instruções. for(int i=10.i++) { System. i<20.println("Resto: " + d%i).

duplaDim [1] = new double [2]. Exemplo: Inicialização de Arrays Exemplo 1 String nomes[ ]. © Copyright e-tecnologia. double. } Arrays Multi-Dimensionais: Declaração correta: double duplaDim [ ] [ ] = new double [4] [ ]. 4. nomes = new String[3] names[0] = "Duke". que resultam em exceção. dates[1] = new MinhasDatas(01. 2000). Exemplo 2 String nomes[ ] = {"Duke". Exemplo: float ArrayReDim[ ] = new float[5]. Quando um Arrays é redimensionado todos os elementos são perdidos. new MinhasDatas(22. char. names[1] = "Jane". Declaração Incorreta: double duplaDim [ ] [ ] = new double [ ] [4 ].com. Double.0 59 . objetos. 1999). dates[0] = new MinhasDatas(22. duplaDim [3] = new double [3]. (String. 2002 Versão: 3. 4.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Arrays Os arrays são objetos. Devem possuir um tamanho definido no momento de sua instanciação. duplaDim [0] = new double [1]. ArrayOutOfBoundsException. Não são permitidos índices inválidos. 7. new MinhasDatas(01. "Jane". names[2] = "Tarzan". short e etc) ou do tipo referência. que sempre deverá começar em 0. Exemplo 4 MinhasDatas dates[ ] = { new MinhasDatas[2]. ou int[ ] arrayInt arrayInt = new int[5] Os elementos de array são acessados pelo índice. 2000) . ArrayReDim[ ] = new float[15]. 1999). Os arrays podem receber variáveis do tipo primitivo (int. boolean. dates = new MinhasDatas[2]."Tarzan"}. Integer e etc). 7. Exemplo 3 MinhasDatas dates[ ]. por exemplo: int[ ] arrayInt = new int[5].

out.0 60 .println("Conteúdo " + estadosul[i]).out. Exemplos: public class TestArray1 { public static void main (String args [ ]) { int[] thisArray = {1. estadosul[0]="RS". estadosul[1]="SC".4. i < estadosul.7. i++ ) { System. i < listaNum. for (int i =0. i++) { System. } } } © Copyright e-tecnologia.2.println("Conteúdo" + thisArray[i]).length.println(listaNum[i]).8.6.5. } Principais Métodos: arraycopy = faz cópia de array A para o B.10}.length. i++) { System.9. estadosul[2]="PR".Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Arrays Propriedades: Length = retorna a quantidade de elementos de um Array Exemplo: int listaNum = new int[20] for(int i=0.out. 2002 Versão: 3.3. for (int i =0.length. } } } 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]. i < thisArray.com.

Passando por Valor A passagem de argumentos na linguagem Java é somente por valor isto é.com.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Passagem de Parâmetros A passagem de parâmetros em Java é somente por valor. Quando uma “instance” do objeto é passado como um argumento a um método. 2002 Versão: 3. O conteúdo do objeto pode ser alterado no método chamado. mas a referência do objeto jamais é mudada.0 61 . o argumento não podem ser mudados pelo método chamado. o valor do argumento é referência ao objeto. © Copyright e-tecnologia.

} . no exemplo. Vale lembrar que o tipo destes parâmetros é do tipo String...com.0 62 . por definição da linguagem. acima temos três itens passados. 2002 Versão: 3. Veja o fragmento de código: . public static void main(String args[]) { System.. Para passar valores que tem nome composto acrescente aspas.println(args[0]). Exemplo de Passagem de valores: java NomedaClass Lista de Valores java TestParam 01 02 03 Note que espaço em branco é a separação entre os itens.out..Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Passagem de Parâmetros Parâmetros de inicialização: Podemos passar parâmetro de inicialização para o método principal. java TestParam “Jose Maria” Maria Joao © Copyright e-tecnologia.

cos.out. Exemplo: public class TestSqrt { public static void main(String arg[]) { double d = 2D. atan. pow e random Exemplos: double d = 2. System.com.0 63 . } } © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java A classe Math A Math contém um grupo de funções matemáticas e estatísticas. asin. acos.println("A raiz quadrada de "+ d + " " + Math. e abs() Trigonométricas: sin. min.println("O valor arrendondado "+ d + " " + Math. System. toDegrees e toRadians Logaritmo: log e exp Outras: sqrt.out. floor e round Variação: max.println(Math. 2002 Versão: 3.round(Math. Principais métodos: Truncar: ceil.out. tan.sqrt(d)).sqrt(d))). System.sqrt(d)).

string. //Conversão de valores: String valueStr = "10".Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Empacotamento de Classes É possível trabalhar com vários tipos de dados. } } © Copyright e-tecnologia.intValue(). começaremos com a conversão de tipos primitivos para tipo referência (objetos). Bem. double d1 = Double. Em muitos casos há a necessidade de fazer conversão de um tipo de dado para outro.parseDouble(valueStr).valueOf(valueStr). boolean. hexadecimal. // Wrapper Class int p1 = wInteger. etc. 2002 Versão: 3.intValue(). Veja abaixo a tabela que associa os tipos. esta operação também é chamada de Wrapper Class. Tipo primitivo boolean byte Char short int long float double Boolean Byte Character Short Integer Long Float Double Tipo referência Exemplos: public class TestWrapperClass { public static void main (String args [ ]) { int pInteger = 500. //ou double d2 = Double.0 64 .com. // Tipo primitivo Integer wInteger = new Integer(pInteger). desde números binários.

String str = String. 2002 Versão: 3. > Convertendo Integer em String: int variavel = 14. ou int variavel = 42. > Convertendo String em Float: float variavel = Float.floatValue().toString(variavel). ou long variavel = Long. String str = "" + variavel.valueOf(variavel).doubleValue().com.valueOf(str). String str = Integer. ou int variavel = 14.parseLong(str).toString(variavel). > Convertendo String em integer: int variavel = 42. String str = Integer.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Conversão de Tipos Uma lista de exemplos de conversão de um tipo para outro tipo e por aí vai.valueOf(str). > Convertendo String em Double: double variavel = Double. > Convertendo String em Long: long variavel = Long. ou int variavel = 42. Convertendo dados em Java de um tipo para outro. String str = "" + variavel © Copyright e-tecnologia.valueOf(str)..longValue().0 65 ..

16). > Convertendo Float em String: String str = Float.toString(l). 16).0 66 . ou String hexstr = Integer. 2002 Versão: 3.toString(f).Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Conversão de Tipos Mais exemplos: > Convertendo Integer em código ASCII: char c = 'C'.toString(i. int i = (int) c. © Copyright e-tecnologia.toString(i). String binstr = Integer.toBinaryString(i).toHexString(i). > Convertendo Decimal em Hexadecimal: int i = 12. > Convertendo Decimal em Binário: int i = 12. > Convertendo Long em String: String str = Long.valueOf("B8DA3".com. 16). String hexstr = Integer.intValue(). > Convertendo Boolean em Integer: i = (b)?1:0. > Convertendo Hexadecimal em Integer: int i = Integer.parseInt("B8DA3". > Convertendo Double em String: String str = Double. ou int i = Integer.

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

public class PessoaJuridica extends Pessoa { public PessoaJuridica() { super("ACME"); } public static void main(String args[]) { PessoaJuridica pf = new PessoaJuridica(); pf.setIdade(10); System.out.println("idade: " + pf.getIdade()); } public String getNome() { return ""; }; public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } } Na classe PessoaJuridica, o uso da palavra this é para evitar ambigüidade. Note que no método setIdade, o parâmetro chama-se idade e o atributo também tem o mesmo nome, ou seja, o mesmo identificador, neste caso o this separa o atributo do parâmetro.

© Copyright e-tecnologia.com, 2002

Versão: 3.0

67

Linguagem de Programação JAVA
JB100 Java Básico
Fundamentos da Linguagem Java
Coleções
O que são coleções? Coleções (também conhecidas como container) é um simples objeto que pode agrupar múltiplos elementos. Coleções são utilizadas para armazenar, recuperar e manipular dados. Os métodos são responsáveis por realizar as operações. A estrutura das coleções inclui uma variedade de recursos que simplificam o desenvolvimento. Essa é uma implementação da noção de reúso de código. Um exemplo de coleção poderia ser uma lista de nomes e telefones. Hashtable (API: Java.util) A tabela de hash é uma estrutura de dados que permite procurar os itens armazenados em tabela utilizando uma chave associada. O formato padrão de entrada de dados na tabela é chave e valor. Para construir uma tabela de hash em Java, devemos criar um objeto Hashtable, utilizando o construtor Hastable. Para adicionar elementos na tabela usaremos o método put, put(object key, Object value). Este método é da classe Hashtable. Para recuperar o elemento usado como chave, devemos usar o método get, get(object key). Para remover um elemento usamos o método remove.

Exemplo:
API import java.util.*; public class TestHashTable { public static void main(String Arg[]) { Hashtable table = new Hashtable(); table.put("1", "Joao"); 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); } }

Implementação de tabela Hash e uso dos métodos put e get

© Copyright e-tecnologia.com, 2002

Versão: 3.0

68

Linguagem de Programação JAVA
JB100 Java Básico
Fundamentos da Linguagem Java
Coleções
Enumeration (API: Java.util.Enumeration)

Retorna uma enumeração de uma coleção (Tabela Hash, por exemplo) especificada. Principais métodos: hasMoreElements e nextElements.
Exemplo: 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 métodos

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

Versão: 3.0

69

Linguagem de Programação JAVA
JB100 Java Básico
Fundamentos da Linguagem Java
Coleções
Vector (API: Java.util) A classe Vector possibilita a criação de vetor dinâmico para armazenamento de referências de objetos, que pode ser indexado por número inteiro. Métodos 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]); } } }

Declaração do Vector Adiciona valores ao Vector. Note que estes valores são do tipo referência, ou seja, objetos Converte um Vector para um array .

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

© Copyright e-tecnologia.com, 2002

Versão: 3.0

70

Exemplo: API import java. for(int x=0. v.add(new Integer(4)).util). get. 2002 Versão: 3. desordenados. Veja que estes valores são objetos Imprime os valores da lista Uma nova coleção Uma outra construção para a lista. set. Principais métodos: add. clear.0 71 . public class ListExemplo { public static void main(String[] args) { List list = new ArrayList().out.add("terceiro"). No exemplo abaixo é permitido que os valores sejam duplicados.util.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Coleções ArrayList ( API: Java. list.addElement(y). Integer y.add("um"). Vector v = new Vector(). System. porém. list. } Imprime todos os valores da lista } Declaração do ArrayList Inserção de valores na lista. iterator.println(listVector).add(new Integer(4)).com. ArrayList é array dimensionável da Interface List parecido com Vector. } List listVector = new ArrayList( v ).println(list). System. list.x<5. isEmpty. size. neste caso ela recebe uma coleção como argumento © Copyright e-tecnologia. remove. list.x++) { y = new Integer(x).*.out.

0 72 . remove. Ela é uma coleção que não pode conter elementos duplicados.*. ela também tem suporte da HashTable. set. Principais métodos: add. set. System.com. set.add("3rd").1F)).add(new Float(11.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Coleções HashSet (API: Java. clear.util) A classe HashSet Implementa a interface Set.1F)). 2002 Versão: 3. set. Veja que estes valores são objetos Imprime os valores da lista © Copyright e-tecnologia.add(”dois").println(set). size.add(new Float(11. //Com ordem e sem repetição public class SetExample { public static void main(String[] args) { Set set = new HashSet(). } } API Declaração do HashSet Inserção de valores na lista. iterator e isEmpty.util. set.out. Exemplo: import java.add(”quarto").

com.0 73 . 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Fundamentos da Linguagem Java Coleções © Copyright e-tecnologia.

colocaremos em único pacote todas as classes que se referem a regras de negócios. isto quer dizer que a Aplicação terá a seguinte formato: Aplicação Regras de Negócios Interface de Usuário Controle © Copyright e-tecnologia. Podemos usar a estrutura de pacotes para associar classes com semântica semelhante.0 74 . estes pacotes contém classes que por sua vez contém atributos e métodos. ou seja.Linguagem de Programação JAVA JB100 Java Básico Pacotes Pacotes A linguagem Java é estruturada em pacotes. Por exemplo.com. prevenindo de problemas como a repetição de identificadores (nomes) de classes e etc. Exemplo: Aplicação Interface de Usuário Regras de Negócios Controle Fisicamente os pacotes tem a estrutura de diretório e subdiretório. classes que tem objetivo comum. Pacote é forma de organização da linguagem Java. 2002 Versão: 3.

} Gerar pacotes: javac -d .Button. indicado pela notação path.awt.class TestPck. 2002 Versão: 3.ClassPkg.java import java/awt/Button.java) das classes indicadas.com. Sintaxe: import <classes>.Linguagem de Programação JAVA JB100 Java Básico Pacotes Pacotes Import A instrução import faz importação para o arquivo fonte (. import java.. Aqui estaríamos importando somente o objeto Button } Diretório Corrente MyPck --------- ClassPck.*. package MyPck.name (caminho e nome do pacote).out. ou sejam uma pacote. Neste caso estaríamos importando todos objetos contidos na classe Package Esta instrução deve ser declarado na primeira linha do programa fonte. public class TestPkg { public static void main(String args[]) { ClassPkg p = new ClassPkg().").awt.0 75 . Sintaxe: package <path.class import MyPck..println("Teste de package. Exemplos: Substituindo os pontos por barras teríamos o caminho import java. } } © Copyright e-tecnologia. *. public class ClassPkg { public ClassPkg() { System.name>. este instrução serve para indicar que as classes compiladas faz parte do conjunto de classes (package). cujo o diretório base deve estar configurado na variável de ambiente: CLASSPATH.

0 76 . 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia.com.

Essas classes podem incluir abstrações que são parte do domínio do problema. assim como as classes que fazem implementação de operações.com.Linguagem de Programação JAVA JB100 Java Básico Programação 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. Exemplo: A classe Pessoa deverá ter atributos e métodos comuns Nome da Classe Pessoa nome idade getNome() getIdade() Atributos Métodos O nome da classe deve ser identificador único em conjunto de classes. de hardware e até itens que sejam somente conceituais. Exemplo: Produto.0 77 . este nome deve ser substantivo no singular. Usamos as classes para capturar o vocabulário do sistema que está em desenvolvimento. Cliente e etc Tipos de Classes: • Classe Concreta • Classe Abstrata © Copyright e-tecnologia. 2002 Versão: 3. Podemos usar ainda as classes para representar itens de software.

© Copyright e-tecnologia.nome = nome.0 78 . } } Exemplo de diagrama de classe usando Rational Rose (notação Unified) Classe Concreta: É uma classe que tem assinatura e a implementação de métodos. private int idade. } public int getIdade(){ return idade. public class Pessoa { //Atributos private String nome. 2002 Versão: 3. } public void setNome(String nome){ this.com. //métodos public String getNome(){ return nome.idade = idade.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Classe Exemplo: A classe Pessoa. } public void setIdade(int idade){ this. Classe concreta.

Classe Abstrata: É uma classe que tem apenas assinatura de métodos sem implementação.com. } Se uma classe é abstrata se métodos também são Observe que os métodos não implementados. Classe Abstrata public abstract class Pessoa { protected String nome. 2002 Versão: 3.0 79 . Diferenças ente Classe Abstrata e Concreta: Classe Abstrata Os métodos devem ser somente assinados Não pode sofrer “instance” Relacionamento somente através de herança Classe Concreta Os métodos 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 métodos assinados na classe Pai. public abstract String getnome().Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Classe Exemplo: A classe Pessoa. public abstract void setnome(String nome). Simplesmente assinados. © Copyright e-tecnologia.

Exemplo: uma pessoa.com. Estrutura de um objeto Objetos combinam propriedades (atributos) e comportamentos (operações). uma cão e etc Orientação a Objetos: O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Objetos O que são Objetos ? São qualquer coisa na natureza que possua propriedades (características) e comportamentos (operações). Podemos dizer que objeto é espécie da classe. uma “instance” da classe Exemplos de Objetos: Objeto: Pessoa Propriedades Bonita Jovem Inteligente Comportamentos Andar Correr Falar Chorar Dançar © Copyright e-tecnologia. 2002 Versão: 3. ou seja.0 80 .

com. Estrutura de um objeto Objetos combinam propriedades (atributos) e comportamentos (operações).Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Objetos O que são Objetos ? São qualquer coisa na natureza que possua propriedades (características) e comportamentos (operações). Exemplo: uma pessoa.708-12 idade = 16 © Copyright e-tecnologia. ou seja. Podemos dizer que objeto é espécie da classe. 2002 Cliente: clientehomem nome = Felipe cpf = 039.200. uma cão e etc Orientação a Objetos: O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.908-22 idade = 22 Versão: 3. uma “instance” da classe Exemplos de Objetos: Classe: Cliente e objetos Cliente nome cpf idade Cliente: clientemulher nome = Marina cpf = 022.217.0 81 .

year. protected.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Métodos Métodos são os comportamentos de um objeto. public float calcDays(int age ) { return 365. } } método © Copyright e-tecnologia. private e default (neste caso não precisamos declarar o modificador). 2002 Versão: 3. Exemplos: public void somaDias (int dias) { } private int somaMes(int mês) { } protected String getNome() { } int getAge(double id) { } public class CalculaData { private int day. month. < nome > -> nome que identifica o método.com.0 82 . < tipo de retorno > -> indica o tipo de retorno do método. < lista de argumentos > -> todos os valores que serão passados como argumentos.25F * age. A declaração é feita da seguinte forma: < modificador > < tipo de retorno > < nome > ( < lista de argumentos > ) < bloco > < modificador > -> segmento que possui os diferentes tipos de modificações incluíndo public.

mesmo que método não retorne nenhum valor será necessário usar o tipo de retorno chamado “void” (retorno vazio). Por definição todas as mensagens tem um tipo de retorno. private double saldo=0. Para chamar um método de um objeto é necessário enviar uma mensagem para ele. } public void setDeposito(int valordeposito) { return saldo +=valordeposito.com. public double getSaldo(){ return saldo.0 83 .Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Métodos Método é a implementação de uma operação. } public void setSaque(double valorsaque) { return saldo -=valorsaque. por este motivo em Java. public class ContaCorrente { private int conta=0. } } ContaCorrente conta saldo setDeposito getSaldo setSaque © Copyright e-tecnologia. As mensagens identificam os métodos a serem executados no objeto receptor. 2002 Versão: 3.

//Métodos } © Copyright e-tecnologia. Mas existem casos que se faz necessário a declaração explícita dos construtores.com.0 84 . 2002 Versão: 3. 2ª Não deve ter tipo de retorno. é inicializado automaticamente pelo Java. public Mamifero(int idade) { this.qdepernas = pernas. Toda a classe Java deve ter um Construtor. 3ª Podemos escrever vários construtores para mesma classe.idade = idade. int pernas) { this. } public Mamifero(int idade.Linguagem de Programação JAVA JB100 Java Básico Programação Orientação a Objetos Orientada a Objetos Construtores O que são construtores? Construtores são um tipo especial de método usado para inicializar uma “instance” da classe. Quando não declaramos o “Construtor default”. devemos seguir algumas regras: 1ª O nome do construtor precisa ser igual ao nome da classe. Para escrever um construtor. Veja abaixo o exemplo: public class Mamifero { private int qdepernas. } Construtores Podemos ter mais de um construtor na mesma classe.idade = idade. O Construtor não pode ser herdado. Para chamá-lo a partir de uma subclasse usamos a referência super. this. private int idade.

} public String getNome(){ return nome.0 85 .com.cargaHoraria = calcCargaHoraria(cargaHoraria). int cargaHoraria){ this. também são chamadas de variáveis temporárias public class Disciplina { private int cargaHoraria. public Disciplina(String nome.nome = nome. protected ou default.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Atributos e variáveis Os atributos são pertencentes a classe. return cargaHoraria = horasPlanejamento + qdeHoras.1). 2002 Versão: 3. private. } public int calcCargaHoraria(int qdeHoras) { int horasPlanejamento = (int) ( qdeHoras * 0. } public int getCargaHoraria(){ return cargaHoraria. private String nome. Variáveis Locais: São definidas dentro dos métodos. } } Atributos Modificador Variáveis temporárias © Copyright e-tecnologia. this. Elas têm o ciclo de vida vinculado ao ciclo do método. O ciclo de vida destes atributos estão vinculados ao ciclo de vida da classe. os seus modificadores podem ser: public. eles podem ser do tipo primitivo ou referência (objetos).

} public void setAutor(String autor){ this. } public void setTitulo(String titulo){ this. private String autor. 2002 Versão: 3.com.0 86 . } public String getAutor(){ return autor. } public String getTitulo(){ return titulo.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Exemplo de Classe 1 Livro Legenda: 1 – Objeto no mundo real 2 – Modelo de implementação da classe Livro 3 – Codificação da classe Livro 3 public class Livro extends Object { public Livro() { } private int isbn. } public void setISBN(int isbn){ this. private String titulo.titulo=titulo. public int getISBN(){ return isbn. } } } 2 Criar o objeto Livro © Copyright e-tecnologia.autor=autor.isbn=isbn.

atributo=valor param. } public <tipo> <nome método(lista de param.atributo=valor param. } public <tipo> <nome método(lista de param. private <tipo> atributo.com.. } public <tipo> <nome método(lista de param.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Exercício sobre modelo de Classe 1 (Identifique o objeto no mundo real) 2 Descreva o conceito: 3 Faça o desenho da classe: Nome da Classe 4 Faça a codificação do modelo de classe: Atributos 1 Atributos 2 Atributos 3 Métodos 1 Métodos 2 Métodos 3 public class <nome da classe> { public <nome da classe> () { } private <tipo> atributo. private <tipo> atributo.) { this..){ return <tipo de retorno>..) { this.){ return <tipo de retorno>..... 2002 Versão: 3..0 87 . } } © Copyright e-tecnologia. public <tipo> <nome método(lista de param.

Qual é a função da abstração ? A função da abstração é capturar as propriedades e os comportamentos essenciais. O que é abstração? Podemos dizer abstração é generalização.0 88 . © Copyright e-tecnologia.com. como se fosse uma fatoração. 2002 Versão: 3. desta forma determina-se o que é importante e o que não é.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Abstração de Dados Para discutirmos sobre classes abstratas é necessário falarmos sobre a abstração de dados. Aeronave Mamífero Caça Helicóptero Passageiros Vaca Urso Cavalo As classes Aeronave e Mamífero neste caso são abstratas e ambas representam um domínio.

2002 Versão: 3.com. Classes Abstratas .Exemplo: Funcionário Classe Abstrata Analista Programador Classe concreta © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Abstração de Dados Classes Abstratas Uma classe abstrata é uma classe que: • Provê organização • Não possui “instances” • Possui uma ou mais operações (métodos) abstratas Pessoa getNome() Classe Abstrata Pessoa Física getNome() Classe concreta Pessoa Jurídica getNome() Uma operação abstrata só determina a existência de um comportamento não definindo uma implementação.0 89 .

protected String nome. protected int idade. public void setIdade(int idade) {} } © Copyright e-tecnologia. } public abstract String getNome(). 2002 Versão: 3. public Pessoa(String nome) { this.com.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Abstração de Dados Classes Abstratas Pessoa Classe concreta Classe Abstrata getNome() Pessoa Física getNome() Pessoa Jurídica getNome() public abstract class Pessoa { protected String idPessoa.0 90 .nome = nome. public void setidPessoa() { } public abstract int getIdade().

} public int getIdade() { return idade.com. } public void setIdade(int idade) { this.0 91 . System. } } © Copyright e-tecnologia. pf. 2002 Versão: 3.println("nome: " + pf.getIdade()).setIdade(10). } public static void main(String args[]) { PessoaFisica pf = new PessoaFisica("Duke").out.out.getNome()). System.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Abstração de Dados Classes Abstratas Pessoa Classe concreta Classe Abstrata getNome() Pessoa Física getNome() Pessoa Jurídica getNome() public class PessoaFisica extends Pessoa { public PessoaFisica(String nome) { super(nome). } public String getNome() { return nome.println("idade: " + pf.idade = idade.

descobrimos que são poucas as classes que trabalham sozinhas.0 92 . Exemplo: Hierarquia de Classes SuperClasse Pessoa SubClasses Terceiro Aluno Funcionário Professor Autônomo Pessoal Operacional Professor Pessoal Administrativo Relacionamento: 1 . E estas são subclasse de Terceiro e Funcionário.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Relacionamento Ao construir as abstrações. a maioria das classes colaboram com outras classes de várias maneiras. © Copyright e-tecnologia. quando estamos modelando. métodos e relacionamentos. que tem tipos diferentes de linhas para distinguir os tipos de relacionamentos. Existem alguns tipos principais de relacionamentos entre classes e objetos: • Herança • Associação • Agregação • Composição Veja a definição de relacionamento: Um relacionamento é a conexão entre itens.Terceiro e Funcionário são SuperClasse de Professor e Pessoal Administrativo e de Professor Autônomo e Pessoal Operacional respectivamente. atributos. devemos identificar as classes. É representado graficamente como um caminho. estas são subclasse de Pessoa.com. Em vez disso. 2002 Versão: 3. 2 . Portanto.Pessoa é a SuperClasse de Terceiro. Aluno e de Funcionário.

mas pode seletivamente: • adicionar novos métodos • estender a estrutura de dados • redefinir a implementação de métodos já existentes Uma classe “pai” proporciona a funcionalidade que é comum a todas as suas classes derivadas. filhas.com.0 93 . © Copyright e-tecnologia. assim como Curso de Especialização ou de Extensão. enquanto que uma classe derivada proporciona a funcionalidade adicional que especializa seu comportamento. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Herança Herança é o mecanismo pelo qual elementos mais específicos incorporam a estrutura e comportamento de elementos mais gerais. Exemplo: Curso Universitário extends Graduação Pós-Graduação extends Especialização Hierarquia de Classes Extensão Podemos dizer que Graduação é tipo de Curso Universitário. Uma classe derivada herda a estrutura de dados e métodos de sua classe “base”.

} public class Funcionario extends Pessoa{ private int codigofuncionario.Pessoa. Funcionário public abstract class Pessoa { protected String idPessoa. } public abstract String getNome(). protected int idade. } public String getNome() { return "".Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Herança Exemplo: Implementação. Aluno. } public String getNome() { return "". } public int getIdade() { return 0. } Professor Professor Autônomo Pessoal Operacional Pessoal Administrativo © Copyright e-tecnologia. }. protected String nome. }. public void setidPessoa() { } public abstract int getIdade(). public Pessoa(String nome) { this.nome = nome. public Terceiro(String nome) { super(nome). public void setIdade(int idade) {} } public class Terceiro extends Pessoa{ private int codigoTerceiro. 2002 Versão: 3.0 94 . } public int getIdade() { return 0.com. } public String getNome() { return "". } public int getIdade() { return 0. }. public Funcionario(String nome) { super(nome). } public class Aluno extends Pessoa{ public Aluno(String nome) { super(nome). Terceiro.

} } public class Professor extends Funcionario{ public Professor( String nome) { super(nome).com. Professor e Pessoal Administrativo Pessoa Terceiro Aluno Funcionário public class ProfessorAutonomo extends Terceiro{ public ProfessorAutonomo( String nome) { super(nome). } } public class PessoalOperacional extends Terceiro{ public PessoalOperacional( String nome) { super(nome).Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Herança Exemplo de Herança: Implementação: ProfessorAutonomo. PessoalOperacional.0 95 . } } © Copyright e-tecnologia. 2002 Versão: 3. } } public class PessoalAdministrativo extends Funcionario{ public PessoalAdministrativo( String nome) { super(nome).

com. mas também é mamífero. Este contrato é garantia que o métodos assinados na interface serão implementados na classe cliente. Nota: Na interface também podemos declarar constantes (public static final).0 96 . apenas as assinaturas. Exemplo de Interface interface Product { String getName (). que pode ser classe concreta ou abstrata. } © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Herança Múltipla A herança múltipla é quando uma classe tem mais que uma Superclasse associada e que herde as características de todas elas. Na linguagem Java: A Herança múltipla é somente permitida por contrato. 2002 Versão: 3. neste caso a Mamífero é uma Interface. <<interface>> Mamífero Interface: O que é interface ? Interface é um contrato entre o cliente. que não pode ter métodos implementados. Veja a figura abaixo: Superclasse <<interface>> Mamífero Pessoa Superclasse Pessoa Física Pessoa Jurídica Relacionamento: Pessoa Física é tipo de pessoa. e a interface. double getCost (). podemos dizer que é tipo especial de classe.

Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Herança Múltipla Exemplo: Implementação da classe Pessoa. } public int getQdePernas(){ return 2. } public abstract String getNome(). public int getQdePernas().0 97 . }. protected int idade.Por que somos obrigado a assinar ou implementar os métodos da Interface Mamifero na classe PessoaFisica © Copyright e-tecnologia. } } Exercício: 1 . protected String nome. } public String getNome() { return "".Podemos implementar a herança múltipla na Classe Pessoa? Por que ? 2 . 2002 Versão: 3. PessoaFisica e PessoaJuridica e a interface Mamifero public abstract class Pessoa { protected String idPessoa. } public int getIdade(){ return 0. } public String getNome(){ return “”. } public int getIdade() { return 0. public void setIdade(int idade){ } } public interface Mamifero { final int qdeOlhos=2. public abstract int getIdade(). } extends implements extends public class PessoaJuridica1 extends Pessoa { public PessoaJuridica1(String nome) { super(nome).nome = nome. } public class PessoaFisica1 extends Pessoa implements Mamifero { public PessoaFisica (String nome) { super(nome). public Pessoa(String nome) { this.com.

2002 Versão: 3.0 98 .com.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Comparação: classes e interfaces Tipo Classe Concreta Classe Abstrata Interface Herança Permite a implementação de Métodos Permite a declaração de Dados extends (simples) extends (simples) implements (múltipla) sim não não sim sim sim (somente final) © Copyright e-tecnologia.

getSalario()*this.com. da superclasse. } } Subclasse © Copyright e-tecnologia. na verdade o construtor da classe hierarquicamente superior.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos A referência super A palavra super é usada para referenciar a superclasse ou classe pai. } public double getSalario(){ return this.00. public Gerente(){ //referência ao Construtor super().15.salario. podemos usa-lo também para fazer referência aos membros (atributos e métodos). Desta forma temos uma extensão do comportamento. } public double getSalario(){ //referência ao método getSalario return super.0 99 .getSalario() + (super. public Empregado(){ salario=0. 2002 Versão: 3.bonus). } } Superclasse public class Gerente extends Empregado { private double bonus = . Exemplo: public class Empregado { private double salario.

em que o vínculo é uma conexão entre objetos. o relacionamento semântica entre dois ou mais classificadores que envolve as conexões entre seus objetos Associação classe Usuario Senha classe public class Usuario { public Senha m_Senha. Usuario() { } } } Senha() { } © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Associação Definição de Associação: Um relacionamento estrutural que descreve um conjunto de vínculos. public class Senha { public Usuario m_Usuario. 2002 Versão: 3.com.0 100 .

Já os itens não tem a responsabilidade de saber a qual pedido que eles pertencem. public Pedido() { } } public ItemPedido { public ItemPedido() { } } © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Navegação Navegação Navegação é uma associação unidirecional Pedido Pedido tem a responsabilidade de identificar quais são seus itens.0 101 . ItemPedido O Código Java: public class Pedido { public ItemPedido item[]. 2002 Versão: 3.com.

Pessoa() { } } As rolename neste caso são usadas identificadores dos atributos (das classes).0 102 . public class Empresa { public Pessoa Empregado.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Rolename Definição de RoleName: É um identificador (nome) do papel da associação. © Copyright e-tecnologia. Empresa() { } } public class Pessoa { public Empresa Empregador[].com. 2002 Versão: 3. podendo cada ponta ter um nome especifico.

Veja o exemplo abaixo: public class Roda { public Pneu pneu. 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.0 103 . que especifica o relacionamento parte-todo entre o agregado (o todo) e o componente (a parte). 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Agregação Definição de Agregação: Um forma especial de associação. Roda() { } Roda(int aro.

2002 Versão: 3.0 104 . essas partes também podem ser removidas explicitamente antes da morte do elemento composto.40 02 Produto B 01 2. uma vez criadas.40 03 Produto C 11 5. mas.23 © Copyright e-tecnologia. as partes com multiplicidade não fixada poderão ser criada após a própria composição.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Composição Definição de Composição: Uma forma de agregação com propriedade bem-definida e tempo de via coincidente das partes pelo todo. Cliente Pedido Todo Dados do Pedido N• 19069 Cliente 1 – Cliente A Data: 01/01/2002 ItemPedido Parte de um todo Produto It Descrição Qt Preço -------------------------------01 Produto A 10 12. vivem e morrem com elas.com.60 04 Produto D 09 2.

* Pedido 1 1. que um conjunto pode assumir. Cliente 1 0..0 105 .com.40 02 Produto B 01 2. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Multiplicidade Definição de Multiplicidade: A especificação de uma faixa de números cardinais.40 03 Produto C 11 5.60 04 Produto D 09 2.* ItemPedido * 1 Produto Todo Dados do Pedido N• 19069 Cliente 1 – Cliente A Data: 01/01/2002 Parte de um todo It Descrição Qt Preço -------------------------------01 Produto A 10 12.23 © Copyright e-tecnologia..

* Pedido 1 1. public class Pedido { public ItemPedido m_ItemPedido[]. public Produto m_Produto.0 106 .. Produto() { } } } © Copyright e-tecnologia.com.* ItemPedido * 1 Produto public class ItemPedido { public Pedido m_Pedido.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Exemplo de implementação de Composição e multiplicidade public class Cliente { public Pedido m_Pedido[]. 2002 Versão: 3.. ItemPedido() { } public class Produto { public ItemPedido m_ItemPedido[]. Pedido() { Cliente() { } } } } Cliente 1 0.

2002 Versão: 3. permitindo alterar ou incluir novas regras aos elementos do modelo.com.AnaliseCredito é ruim.0 107 . Pedido * faz 1 Cliente 1 {se Pedido.Cliente.ePrePago deve ser verdadeiro} * Pedido * 1 Produto Constraint AnaliseCredito © Copyright e-tecnologia. então pedido.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Constraint As constraint (restrições) ampliam o vocabulário dos elementos na UML.

* <<negócio>> Prestacao DataDeVencimento ValorDaPrestacao © Copyright e-tecnologia.0 108 . 2002 Versão: 3..com..* <<negócio>> Venda é realizada por DataDaVenda * 1 <<negócio>> Produto QtdeEmEstoque SituacaoFinanceira 1 corresponde * <<negócio>> ItemDeVenda é composta de QtdeVendida 1.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Exemplo de modelo de classes <<negócio>> Cliente <<negócio>> Vendedor PercentualDeComissao 1 1 é realizada para 1..* <<negócio>> VendaAPrazo compreende 1 1.

" + quantidadetotal). nf. double valortotal=0.nflinha[i]. nf.valor * quantidadetotal.. System.. © Copyright e-tecnologia. 200.nflinha[1] = new NotaFiscalLinha("3030". } } Complete a classe que falta e faça o diagrama de classe correspondente com seus respectivos relacionamentos.nflinha[i].out. System.i++) { System.print(nf.print(nf.descricao + " ")..nflinha[0] = new NotaFiscalLinha("1010".print(nf.nflinha[2] = new NotaFiscalLinha("2020"."Teste item 1".i< nf. 50. 15. 30.out.nflinha[i].out. quantidadetotal =+ nf....println("Quantidade total.0 109 . 25.quantidade. valortotal =+ nf.23)..out. for(int i=0..println("Valor total.item + " ").nflinha[i]..com.print(nf. System. double quantidadetotal =0.nflinha[i].nflinha.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Exercício public class NotaFiscal { public NotaFiscalLinha nflinha[] = new NotaFiscalLinha[3]. public static void main(String args[]) { NotaFiscal nf = new NotaFiscal()."Teste item 0".53). 5."Teste item 3".out." + valortotal).valor + "\n"). 2002 Versão: 3.out. nf.quantidade + " ").nflinha[i].43). System. } System.length .

} public double getSalario(){ return this. podemos manipular ou recuperar o valor do atributo salario.salario. salario. Operações/métodos/interface pública Classe Empregado e método getSalario Dados/Atributos/propriedades privada O atributo salario public class Empregado { private private double double salario. Encapsulamento (“data hiding”) Encapsulamento é definido como uma técnica para minimizar dependências entre “módulos” através da definição de interfaces externas. Também conhecido como: O fenômeno da “caixa preta” © Copyright e-tecnologia. que tem modificador public.com.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Encapsulamento É uma proteção adicional dos dados do objeto de possíveis modificações impróprias. através de método público. Através do método getSalario. forçando o acesso a um nível mais baixo para tratamento do dados. 2002 Versão: 3. } } O atributo salario somente poderá ter um valor atribuído ou alterado. public Empregado(){ salario=0.0 110 .00.

Segurança: Protege os atributos dos objetos de terem seus valores corrompidos por outros objetos. public Empregado(){ salario=0. public double getSalario(){ //referência ao método getSalario return super. } } public class Gerente1 extends Empregado { private double bonus = .Independência: “Escondendo” seus atributos.getSalario() + (super. um objeto protege outros objetos de complicações de dependência de sua estrutura interna © Copyright e-tecnologia. } } Todo o acesso aos dados do objeto é feito através da chamada a uma operação (método) da sua interface.bonus).15. 2002 Versão: 3.00.0 111 .salario.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Encapsulamento A interface (pública) de um objeto declara todas as operações permitidas (métodos) public class Empregado { private double salario.Benefícios .com. Encapsulamento . } public double getSalario(){ return this.getSalario()*this. .

0 112 . a propriedade segundo o qual uma operação pode comportar-se diferentemente em classes diferentes” (Rumbaugh) O polimorfismo é o responsável pela extensibilidade em programação orientada a objetos. desta forma evitaremos problemas como ambigüidade. a aplicação. entretanto com a lista de argumentos diferente.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Polimorfismo Definição: “Polimorfismo” é uma operação que pode assumir múltiplas formas. long b)) Para cada tipo de dados existe um método. em tempo de execução. overloading Polimorfismo overriding Overloading: Possibilidade de reúso do nome do método para diferentes implementações. char b) somar(long a. float b) somar(char a. entretanto a lista de argumentos deve ser diferente. veja o exemplo acima: o método somar é definido várias vezes. o reúso do nome do método é permitido. © Copyright e-tecnologia. TesteSoma Soma somar(int a. veja o exemplo. int b) somar(float a.com. escolherá o método adequado para cada chamada. 2002 Versão: 3.

System.println(eng. entretanto para cada cargo (tipo de empregado) ele tem uma implementação diferente.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Polimorfismo Overrinding .getSalario()). Por exemplo: . 35.0 113 .salario = diastrabalhados * valorhora * 8.salario. 2002 Versão: 3.com. double valorhora ){ this. public class Engenheiro extends } EmpregadoExemplo { public double getSalario(){ public static void main(String args[]) return this. { } Engenheiro eng = new Engenheiro().Para Engenheiro e Secretária salário = (Dias Trabalhados x Valor hora) . public void setSalario(int diastrabalhados.setSalario(22. } } } © Copyright e-tecnologia. public class EmpregadoExemplo { private double salario. eng.Para Gerente salário = (Dias Trabalhados x Valor hora) + Bônus .Exemplo: Empregado setSalario() getSalario() Engenheiro getSalario() Gerente getSalario() Secretária getSalario() Diretor getSalario() O método setSalario é herdado da Superclasse (Empregado).Para Diretor salário = (Dias Trabalhados x Valor hora) + Bônus + Participação nos lucros.00).out.

g.00. sec. public static void main(String args[]) { GerenteExemplo g = new GerenteExemplo().15.00).out.0 114 . 35. } public double getSalario(){ return super. public static void main(String args[]) { Diretor d = new Diretor(). } } public class Secretaria extends EmpregadoExemplo { public static void main(String args[]) { Secretaria sec = new Secretaria().setSalario(22.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Polimorfismo O método setSalario (continuação) public class GerenteExemplo extends EmpregadoExemplo { private double bonus = .println(d.out. } } public class Diretor extends GerenteExemplo { private double lucros = 1000. } } © Copyright e-tecnologia. 35.lucros.getSalario() + this.getSalario()).out.getSalario() + (super. } public double getSalario(){ return super.00).getSalario()). 35.setSalario(22.bonus).getSalario()*this. System.println(g. 2002 Versão: 3.println(sec.setSalario(22.com.00). System. d.getSalario()). System.

Manter o mesmo nome do método . um método herdado poderá ser alterado. entretanto temos que seguir algumas regras: .0 115 .saques Para a conta poupança seria saldo atual = (soma dos depósitos + saldo anterior + juros) .ir As subclasse podem modificar o comporamento de método herdado da super classe. Veja o exemplo abaixo: Conta Bancária getSaldo() Conta Corrente getSaldo() Conta Poupança getSaldo() Investimentos getSaldo() O método getSaldo é herdado da Superclasse (Conta Bancária). entretanto para cada tipo de Conta ele tem uma implementação diferente.Manter o mesmo tipo de retorno . 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Polimorfismo Overrinding Uma subclasse pode mudar o comportamento herdado da Superclasse. Exercício: Faça a implementação das classes acima. © Copyright e-tecnologia.saques Para a conta de investimentos seria saldo atual = (soma dos aplicações + saldo anterior + juros) .resgates .Para apurar o saldo da Conta Corrente saldo atual = (soma dos depósitos + saldo anterior) . Por exemplo: .com. ou seja.Manter a lista de argumentos.

e métodos. para public. as boas práticas de programação não recomendam fazer isto.Linguagem de Programação JAVA JB100 Java Básico Acessibilidade Acessibilidade ou Visibilidade Os níveis de controle tem o seguinte papel de tornar um atributo. © Copyright e-tecnologia. Para classes tem dois níveis: public e default (também chamado de pacote ou de friendly). 2002 Versão: 3. Todavia. desta forma a classe TestB o enxergaria. a primeira: alterar o nível de controle do atributo a. somente classe TestA o enxergará. getA e setA. public class TestA { private int a=1. não poderão fazer acesso direto a este atributo. podemos criar métodos públicos na classe TestA. protected. aí sim. um método ou classe visível ou não.0 116 .java:3: a has private access in TestA private int b=a. na classe TestA. ^ Para contornar a situação poderíamos fazer duas coisas. A linguagem Java tem para os atributos e métodos quatro níveis de controles: public. } TestB. através destes métodos seria possível manipular o atributo da classe TestA. Exemplo: Se um atributo foi declarado dentro de uma classe chamada TestA e este atributo tem o nível de controle private. Somente esta classe poderá fazer acesso a este atributo. por exemplo. default e private. todas as demais. A segunda: é uma maneira mais elegante de resolvemos o problema. ou seja.com. } public class TestB extends TestA{ private int b=a. Este níveis de controle são os responsáveis pela acessibilidade ou visibilidade de atributos.

Linguagem de Programação JAVA JB100 Java Básico Acessibilidade Acessibilidade ou Visibilidade A tabela abaixo demonstra a acessibilidade para cada nível de controle Modificador Public Protected Private Default Mesma Classe sim sim sim sim Mesmo Package sim sim não sim SubClasse sim sim não não Universo sim não não não Exemplos: public class class protected class public sublass public public sublass default public sublass protected © Copyright e-tecnologia. 2002 Versão: 3.0 117 .com.

2002 Versão: 3.0 118 .com.Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia.

if (obarray[3] instanceof Character) { System. obarray[2] = new String("Teste").0 119 . obarray[0] = new Integer(3). } } } Verifica qual é objeto que está contido na terceira posição do obarray © Copyright e-tecnologia. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Programação Orientada a Objetos Instanceof O operador instanceof é usado para identificar qual é o tipo do objeto esta “instanciado”.com.println("Character"). obarray[3] = new Character('a'). public class TestInstanceof { public static void main(String args[]) { Object[] obarray = new Object[4]. obarray[1] = new Float(3).out.

A execução desta declaração é independente. conexões. catch e finally. desde erros de sintaxes até falha de equipamento. ou seja. da declaração catch.com. A declaração try indica a parte do código aonde poderá ocorrer uma exception. erro de leitura e gravação. usamos as declarações try. caso venha a ocorrer. por exemplo. Exemplo: try { // código que pode ocasionar uma exception } catch(Classe Exceção objeto exceção) { // tratamento do erro } finally { // código } ou try { // código que pode ocasionar uma exception } catch(Classe Exceção objeto exceção) { // tratamento do erro } © Copyright e-tecnologia. 2002 Versão: 3. A declaração finally. Existem diversos tipos de exceções. mesmo que não aconteça nenhuma exceção os comandos e/ou instruções dentro da declaração finally serão executados. é utilizada para definir novo bloco de instruções ou finalizar objetos que estão abertos. Para o tratamento de exceções.Linguagem de Programação JAVA JB100 Java Básico Exceções Exception O que são exceções ? Exceções em Java são anomalias que podem acontecer durante a execução de um programa. Já a declaração catch faz a captura da exceção.0 120 . que é opcional. como.

ArrayIndexOutOfBoundsException .int i = 12 / 0 NullPointerException . por exemplo: .com. Podemos usar a classe Throwable. NegativeArraySizeException . 2002 Versão: 3. a classe Java.ocorre quando é atribuído um valor nulo para um array.Exception.ocorre quando foi violado o índice do array. De fato. Categorias de Exceptions: Existem três grandes categorias de exceções em Java.0 121 . entretanto. para que todos os objetos disparados possam ser capturados pela declaração catch. ou seja.lang. existe uma subclasse que tratam erros específicos.Throwable age como uma classe pai .Linguagem de Programação JAVA JB100 Java Básico Exceções Exception Estruturas básica das classes de exceção: Throwable Exception Error IOException RuntimeException AWTError JVMError EOFException FileNotFoun Exception ArithmeticException NullPointerException IndexOfBoundException Exceptions mais comuns: ArithmeticException . para tratar as exceções. IOEception. © Copyright e-tecnologia. SQLExceptoion. RuntimeException assim por diante Para maiores detalhes devemos consultar a documentação. elemento não existe.ocorre quando um objeto não foi instanciado.

2002 Versão: 3. © Copyright e-tecnologia.out.println("Deu erro " + e). como foi visto anteriormente. } e. } } public void divisao(int d1. int d2) throws ArithmeticException { System. o desenvolvedor deve prever maneira para tratar possíveis erros. neste caso usamos a palavra reservada throws para que jogará a exceção para o método chamador.com. Existem duas formas de fazer isto.Linguagem de Programação JAVA JB100 Java Básico Exceções Exception Declare ou Manipule as Exception: Na construção de um código.divisao(10. Sintaxe: throws <classe de exceção> Exemplo: public void troublesome( ) throws IOException public class TestThrows { public static void main(String args[]) { try { new TestThrows(). { System.0 122 .printStackTrace().out. e a segunda maneira é indicando que a exceção não é dirigida para este método.println("Divisao: " + d1/d2). } } Cria uma trilha da ocorrência da exceção Lança a exceção para o método main Criando uma Exception É permitido que o desenvolvedor crie suas próprias classes de exceção. A primeira é com o uso da declaração try e catch.0).

String greetings [ ] = { "Hello word" .println("Exceção: " + e).out.0 123 . status = 1.exit(status).out. de prevenção a falhas. cumpre seu papel.println(greetings[i]). 2002 Versão: 3.length > i.Linguagem de Programação JAVA JB100 Java Básico Exceções Exception Exemplo: public class ExceptionExemplo { public static void main (String args[ ]) { int status = 0. } } } Implementação do tratamento de exceção Neste exemplo o código funciona perfeitamente. © Copyright e-tecnologia. I mean it!". entretanto a implementação do controle de exceção.i++) System. greetings. } catch(ArrayIndexOutOfBoundsException e) { System. "HELLO WORLD!"}. try { for(int i=0. } finally { System. "No.com.

I mean it! HELLO WORLD! Exceção: java.ArrayIndexOutOfBoundsException © Copyright e-tecnologia. } } } Implementação do tratamento de exceção Neste segundo exemplo forjamos um erro na instrução for ( o valor colocando na condição é maior que o índice do array).out. try { for(int i=0. e tratada veja abaixo: Hello word No. "No.Linguagem de Programação JAVA JB100 Java Básico Exceções Exception Exemplo: public class ExceptionBadExemplo { public static void main (String args[ ]) { int status = 0. 2002 Versão: 3.0 124 . status = 1. } catch(ArrayIndexOutOfBoundsException e) { System. isto resulta em uma exceção. } finally { System.exit(status). 4 > i. String greetings [ ] = { "Hello word" . "HELLO WORLD!"}. pela instrução catch.i++) System.println(greetings[i]).println("Exceção: " + e).lang.out. I mean it!".com. que foi devidamente capturada.

//Percentual NumberFormat nf = NumberFormat.out.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Formatando Números e Datas Para formatar ou criar uma máscara para apresentação de valores numéricos. por exemplo: quando uma mesma mascara de duas formatações: ###.println( df.0 125 .text. import java.com. } } Os valore serão exibidos no seguinte formato: Mascara 1.format(1234.DecimalFormat. usamos a classe java. System.getPercentInstance().format(0.000E0000"). A formatação é feita por strings com caracteres especiais.out.235E000 3 Instancia 67% Observe que o ponto indica a separação decimal e virgula a separação de milhar Principais símbolos: Símbolo 0 # . (ponto)_ . public class DecimalFormat1 { public static void main(String args[]) { //Cientifico DecimalFormat df = new DecimalFormat("0. científico e percentuais entre outros. System.text.##) Representação de valores monetários © Copyright e-tecnologia. $ Significado Representação o valor 0 Representação qualquer valor Separação de milhar Separação de decimal Representação valores negativos Separador de mascara.56)).(00.println(nf.67)).DecimalFormat.Veja o exemplo: import java. (virgula) . 2002 Versão: 3.NumberFormat.##. esta possui métodos para formatação de valores monetários.text.

Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Formatando Números e Datas Formatação de Números: Este exemplo demonstra formatação para valores monetário entre outros: import java.0 126 .println(df. System.format(valor .561.format(valor)).out.00").applyPattern("$#.###").out. import java.1500.(###.###.out.out. System. System.DecimalFormat.format(valor)).text. DecimalFormat df = null. df = new DecimalFormat("###.NumberFormat. 2002 Versão: 3.println(df.text. System.00").###. df. public class DecimalFormatMask { public static void main(String args[]) { O valor sem formatação double valor = 1045.##.###.##)"). df.out.applyPattern("#. APIs } } © Copyright e-tecnologia.00").54D)). Criando máscaras e a impressão do valor df. System.println(df.format(valor)).com.applyPattern("###.println(df.format(valor)). df = new DecimalFormat("###.println(df.###.

Principais Métodos: after(Date d) . este método também usa mascara definida no construtor.SimpleDateFormat possui métodos para formatação de datas. podemos optar por usar a classe GregorianCalendar. Para representar em outro formato. por exemplo. como em dia.Cria uma data com tempo em milissegundos após 1 de janeiro de 1970. retornando o um objeto Date.text.com.Date representa a data. A formatação é baseado em modelo ou mascaras. num formato em milissegundos. para exibirmos a data como formato de 11/09/2001 é necessário usar a seguinte mascara: “dd/MM/yyyy”.Especifica a data em milissegundos (após 1 de janeiro de 1970) Podemos usar outros métodos para comparar datas como: compareTo() e equals() SimpleDateFormat A classe java. new Date(long tempo) .util.Retorna os milissegundos da data (com relação a 1 de janeiro de 1970) setTime(long tempo) .Cria uma data que representa o instante de criação. ou seja. Date parse(String texto. Construtores: new Date() .0 127 . 2002 Versão: 3. ParsePosition posicao) . O parâmetro posicao geralmente tem o valor new ParsePosition(0) © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Formatando Números e Datas Formatação de Datas: A classe java.Formata a data conforme a mascara de formatação definida no construtor.Retorna true se data for anterior a d getTime() . Principais Métodos: format(Date data) .Interpreta o texto como uma data.Retorna true se data for posterior a d before(Date d) .

getTime())). public class DateFormatMask { public static void main(String args[]) { GregorianCalendar c = new GregorianCalendar(2001.9. } } © Copyright e-tecnologia.out.println(df. //Dia da semana df = new SimpleDateFormat("E d/MMMM/yyyy").println(df. //Data completa df = new SimpleDateFormat("'Sao Paulo. df = new SimpleDateFormat("EEEE d/MMMM/yyyy").getTime())). df = new SimpleDateFormat("yyyy/MM/d").format(c. //Hora df = new SimpleDateFormat("E d/MMMM/yyyy 'hora ' H':'m':'s").format(c.println(df. System.' EEEE d ' de ' MMMM ' de ' yyyy").println(df.format(c. System.println(df. 2002 Versão: 3. System.format(c.27). System.println(df.out.format(c.getTime())). df = new SimpleDateFormat("E d/MMMM/yyyy 'semana' W "). System.out.out.getTime())).getTime())).out. SimpleDateFormat df.getTime())).com. import java.getTime())). df = new SimpleDateFormat("yyyy/MMMM/d").format(c. System.println(df.format(c.println(df. System. //Mês df = new SimpleDateFormat("yyyy/MMM/d").util.getTime())).out.0 128 .out. System.println(df. //Semana df = new SimpleDateFormat("E d/MMMM/yyyy 'semana' w ").SimpleDateFormat.format(c.out.format(c.GregorianCalendar.text.getTime())). System.out.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Formatando Números e Datas Formatação de Datas: Exemplo: import java.

} } public class TestFinalFilho extends TestFinalPai { public TestFinalFilho() { super(10).java:1: cannot inherit from final TestFinalPai public class TestFinalFilho extends TestFinalPai © Copyright e-tecnologia. uma vez atribuído o valor. para variáveis membro. Entretanto. 2002 Versão: 3. public TestFinalPai(int V) { VALOR = V. } public static void main(String args[]) { Quando compilamos a classe um erro é gerado } } TestFinalFilho.com. este não mudará mais. • Um método constante não pode ser sobrescrito. um bloco ou até mesmo uma classe como constante usamos o modificador final. • O valor para variável constante deve ser definido no momento da declaração ou através de um construtor.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Constantes Para declarar uma variável. Veja o exemplo: public final class TestFinalPai { private final int VALOR. o uso deste modificador deve obedecer a certas restrições como: • Uma classe constante não pode ter subclasses.0 129 . um método.

public TestFinal1() { VALOR = 0. } public static void main(String args[]) { TestFinal1 tf= new TestFinal1().out. o nome da variável deve ser escrito em maiúsculo. 2002 Versão: 3. } } public class TestFinal2 { public static void main(String args[]) { final int VAL.VALOR). • TestFinal2: O valor é atribuído no método. para variáveis constantes (final).0 130 .println(tf.println(VAL). } } Convenção. pois. © Copyright e-tecnologia. System.com.out. note que a variável é membro da classe. neste caso a variável é um local public class TestFinal1 { private final int VALOR. VAL =0.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Constantes Veja o exemplo: • TestFinal1: O valor é atribuído através de um construtor. System.

----------------------------------------------------------------------------------------------------------------Execução da Threads: O método thread. o start apenas o habilita para a fila de execução e que de acordo com sua prioridade e outros Threads existentes pode ser o próximo a ser executada ou não. as Threads são executadas em concorrência. Três Partes de uma Linha : Uma linha inclui três partes principais.start() t1 t3 t5 t2 Execução © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads O que são Linhas? São linha de execução em paralelo. Segundo. código que esta CPU está executando. Entretanto quanto o computador tem mais de processado as Threads podem ser executadas em paralelo. CPU virtual. Podemos compartilhar código e dados.start() não significa que Thread será executado imediatamente. 2002 Versão: 3. ----------------------------------------------------------------------------------------------------------------Observações: -Quanto um computador tem somente um processador. Terceiro. fila T1. o processo de utilizar duas ou mais Threads de execução no mesmo programa é chamado de Multithreads.com.0 131 . os dados no que o código trabalha. Java permite que seus programas executem ao mesmo tempo várias Threads. -Um programa é considerado MultiThreads quanto a mesma Thread tem vários “instances”. Primeiro.

Não importa se a Thread está em execução ou não.0 132 . Verifica se a Thread está ativo (se foi iniciada e ainda seu processamento não terminou). e após a execução os liberam. o tempo é um valor em milisegundo. ou seja.. processo de sincronização etc Suspende a execução da Thread corrente e dá a oportunidade de execução para a próxima Thread da fila de execução de mesma prioridade.com.NORM_PRIORITY. Sincronismo: Todos os objetos em Java possuem um Monitor. que causaria inconsistência de dados.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Principais Métodos: Método void start() void interrupt() static void sleep(long ms) Descrição Habilita uma Thread para execução Interrompe a execução Suspende a execução de uma Thread pelo tempo especificado. 2002 Versão: 3. Thread. Para executar este processo é preciso usar a palavra synchronized.MAX_PRIORITY. Thread. Aplicação: Controle Diversos. Principal vantagem: Economiza processamento de CPU. } } © Copyright e-tecnologia. Exemplo: . que pode ser utilizado pelas Threads para evitar acessos simultâneos ao mesmo trecho de código. Uma Thread toma para si um monitor quando este está disponível. public int total(int valor) { synchronized (this) { valorTotal += valor. retém os dados.. static void yield() boolean isAlive() Prioridades: Método Descrição setPriority() Ajusta o valor da prioridade da Thread getPriority() Pega o valor prioridade da Thread Obs: Podemos usar os valores constantes: Thread.MIN_PRIORITY.

O método join ( ) causa a linha atual para esperar até a linha em qual o método join é chamado termina. Às vezes é apropriado suspender execução de uma linha indefinidamente em qual caso alguma outra linha será responsável para retomar a execução.com. execução pode ser retomada como se nada tivesse interrompido sua execução. por exemplo) Informa a Thread que está esperando (que foi parado pelo método wait()) e o habilita a execução Informa todos as Thread que estão esperando (que foram parados pelo método wait()) e os habilita a execução Principal vantagens das Threads: . Seguindo este tipo de suspensão. Um par de métodos de Linha está disponível para isto. O método sleep foi introduzido na primeira seção e foi usado para deter uma linha para um período de tempo. a linha aparece ter executado uma instrução muito lentamente simplesmente.0 133 . Eles são chamados suspend () e resume ().Incentiva o REÚSO de código Cuidados: Evitar situação de Deadlock (travamento) Estado de espera (Putting Threads on Hold) Vários mecanismos existem que podem parar a execução de uma linha temporariamente. © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Principais Métodos: Método wait() notify() notifyAll() Descrição Indica que a Thread ativa deve esperar (parar a execução) até que seja noficado (notify. 2002 Versão: 3.

println("Hello " + i++). while (true) { System. } } } No método run() é implementado o corpo do método Corpo do método run() A interface Runnable é responsável pelos métodos run() © Copyright e-tecnologia.start(). Thread t = new Thread(r). public void run() { i = 0. if ( i == 50 ) break. 2002 Versão: 3.com.out.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Este exemplo demonstra a implementação de uma Thread simples “instance” da Thread O método start() solicita a execução da Thread public class TestThread { public static void main(String args[]) { Xyz r = new Xyz().0 134 . t. } } class Xyz implements Runnable { int i.

2002 Versão: 3. t1.0 135 .) { System.currentThread()).println(i++).com.start().start(). entretanto. for(. public class TestThread1 { public static void main(String args[]) { Xyz r = new Xyz().out. if (i == 50) break.. Thread t1 = new Thread(r). System. Thread t2 = new Thread(r).Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Este exemplo é parecido com anterior. } } “instances” da Thread O método start() solicita a execução das Threads © Copyright e-tecnologia. t2. } } class Xyz implements Runnable { int i.out. agora é demonstrado a execução de duas Threads.println(Thread. No método run() é implementado o corpo do método Corpo do método run() é a parte do código que será repetido } Retorna a referência da Thread corrente A interface Runnable é responsável pelos métodos run() public void run() { i = 0.

getPriority()). System. try { for(.out.MAX_PRIORITY).out.com.println("Prioridade t1 " + t1. 2002 Versão: 3.out.setPriority(Thread. public class TestThreadPrior { public static void main(String args[]) { Thread t0 = new Thread(new TestPrior()).MIN_PRIORITY). t1. System.) { Thread. public void run() { i = 0.sleep(5).out. System. Thread t1 = new Thread(new TestPrior()). t1. somos forçados usar o controle de exceção: try-catch © Copyright e-tecnologia. } }catch(Exception e) { } } } Prioridades: Usamos o método setPriority para definir e getPriority para saber qual é a prioridade da Thread Para usar: O método sleep().currentThread()).out. System. System.println("----------------------------------").setPriority(Thread.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Este exemplo demonstra como configurar a prioridade de execução de uma Thread.println("Prioridade t1 " + t0.getPriority()).println(Thread.start().println(i++). t0.println("----------------------------------"). System. t0.0 136 . } } class TestPrior implements Runnable { int i.. if ( i == 50 ) break.out.start().

Thread t2 = new Thread(t). t2. Suspende a execução da Thread corrente e dá a oportunidade de execução a próxima Thread da fila de execução de mesma prioridade.setPriority(Thread. t2.println("Prioridade t2 " + t2. System.NORM_PRIORITY). } } class ThreadYield implements Runnable { int i. 2002 Versão: 3.out.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Este exemplo mostra a funcionalidade do método yield(). public void run() { i = 0.MAX_PRIORITY).start().getPriority()).) { Thread. System. t1.getPriority()).out.out.currentThread()).println("Prioridade t0 " + t0. System.getPriority()). try { for(.println("Prioridade t1 " + t1.0 137 . System.println(Thread.com. public class TestThreadYield { public static void main(String args[]) { ThreadYield t = new ThreadYield(). t1.. if ( i == 50 ) break.println(i++).out. System. } }catch(Exception e) {} } } © Copyright e-tecnologia.MAX_PRIORITY). Thread t1 = new Thread(t).out.yield(). Thread t0 = new Thread(t).start().setPriority(Thread. t0.start().setPriority(Thread. t0.

random() * 500)). credito.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Este exemplo é divido em duas partes.out. A primeira parte não implementa o recurso de sincronismo.currentThread(). public class ThreadContaCorrente implements Runnable { int saldo = 100. credito. }} © Copyright e-tecnologia. } if (Thread.start(). catch(Exception err) { System. Thread debito = new Thread(cc). 2002 Versão: 3.println(Thread. } else { saldo += 1. debito.start().setName("deb").err. debito.currentThread().currentThread().0 138 .println(Thread. x++) { try { Thread.println("Erro: " + err). Thread credito = new Thread(cc).out.getName()). public void run() { System.getName() + " Saldo: " + saldo). } System. for(int x=0. x < 10.setName("cre").getName(). } }} public class TestSynchronized { public static void main(String args[]) { ThreadContaCorrente cc = new ThreadContaCorrente().sleep( (int) (Math.equals("deb")) { saldo -= 1.com.

start(). } else { saldo += 1. x++) { try { Thread. debito. } if (Thread. Implementação do sincronismo public class TestSynchronizedON { public static void main(String args[]) { ThreadContaCorrenteON cc = new ThreadContaCorrenteON().setName("deb").currentThread(). Neste caso implementamos o recurso de sincronismo. 2002 Versão: 3.currentThread().0 139 . credito.currentThread().out.out.setName("cre"). x < 10. Thread debito = new Thread(cc). debito.println(Thread.println("Erro: " + err). } catch(Exception err) { System. Thread credito = new Thread(cc).Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Threads Esta a segunda parte.sleep(5).start().getName() + " Saldo: " + saldo). } System.getName().equals("deb")) { saldo -= 1. } }} © Copyright e-tecnologia.getName()).err.com. credito. public synchronized void run() { System. for(int x=0. } } public class ThreadContaCorrenteON implements Runnable { int saldo = 100.println(Thread.

.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Serialization Serialization é implementação de persistência em Java. } © Copyright e-tecnologia. IMAGENS E CONEXÕES. devemos usar a palavra reservada chamada “transient”. private String codeID.*. } import java.io.io. pois. uma vez implementada.0 140 . por exemplo Hard Disk.com. private String codeID. Para especificar os recursos e/ou atributos que não devem ser persistindo. public class MyClass implements Serializable { public transient Thread MyThread. Entretanto alguns recursos não suportam a persistência são eles: THREADS. 2002 Versão: 3. Exemplos: Implementação do modificador transient import java. A persistência deve ser implementada com cuidado. poderemos ter problemas com segurança. pois os métodos podem representar as regras de negócios e estas podem acabar sendo violadas. O que é persistência ? É a possibilidade de gravar métodos virtuais em um meio físico.*. public class MyClass implements Serializable { public transient int code.

close (). } catch (IOException e) { e.com. } } public static void main (String args[]) { new TestSerializeVector(). 2002 Versão: 3. try { FileOutputStream f = new FileOutputStream ("vector. Gravar objeto vetor no arquivo Vector.0 141 .x++) v.writeObject (v).Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Serialization Este exemplo é divido em duas partes. A primeira exibe como gravar um objeto em arquivo. s. for(int x=0.printStackTrace (). import java.x<5. } } Gravação © Copyright e-tecnologia.*. public class TestSerializeVector { TestSerializeVector() { Vector v = new Vector(). s.io.ser").ser Os dados do objeto import java.*.addElement(new Integer(x)).util. ObjectOutputStream s = new ObjectOutputStream (f).

for(int x=0.x<5.ser"). 2002 Versão: 3.0 142 .out.com.*.close (). } } Recuperação Note que é necessário fazer a coerção de tipo (Vector) © Copyright e-tecnologia. public class TestUnSerializeVector { TestUnSerializeVector () { Vector v = null. ObjectInputStream s = new ObjectInputStream (f). Object obj = null. } catch (Exception e) { e.println( "Unserialized Vector object from vector. System. import java.printStackTrace ().println(s).io. s.toArray().out.*.readObject ().ser"). } System. Object[] objArray = v.out.println(objArray[x]).util.ser (objeto vector) import java. try { FileInputStream f = new FileInputStream ("vector.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Serialization A segunda parte demonstra como recuperar o objeto e os dados gravados em um arquivo. v = (Vector) s.x++) { System. Nome do arquivo Vector. } } public static void main (String args[]) { new TestUnSerializeVector().

println("String: " + today). p.println("int: " + i).readObject().*.readObject(). System. }finally { System.com.readInt(). System.writeInt(12345). Int = readIn } public static void main(String args[]) { new TestSerialize(). } catch (Exception e) { e.util.ser"). ostream. ObjectOutputStream p = new ObjectOutputStream(ostream).printStackTrace ().println("Date: " + date).out. { doSerialize(). System. System. import java.out.println(p).writeObject(new Date()).out. } } public void unDoSerialize() { try { FileInputStream istream = new FileInputStream("dados.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas Serialization Este exemplo mostra como criar um método para fazer a gravação e outro para fazer a recuperação. Objeto = readObject unDoSerialize(). ObjectInputStream p = new ObjectInputStream(istream).close().*. p.out. int i = p.close(). istream.ser"). } } Gravação Recuperação © Copyright e-tecnologia.println("Process ok"). import java. import java. Date date = (Date)p.io. de dados foi } } usado o método TestSerialize() apropriado. 2002 Versão: 3. p. String today = (String)p.util.Date. p. } catch (Exception e) { Para cada tipo e.0 143 .printStackTrace ().writeObject("Today").out.flush(). public class TestSerialize { public void doSerialize() { try { FileOutputStream ostream = new FileOutputStream("dados.

que eles podem ser perdidos (nunca chegar ao seu destino. Abaixo um esquema válido para Serviço orientada a conexão (TCP) Servidor ServerSocket(port #) ServerSocket. entretanto. 2002 Versão: 3.accept() Sockect() (Fluxo de Mensagens) InputStream OutputStream Cliente ServerSocket(host. casa haja algum problema entre as mensagens enviadas e recebidas.net possiblita a implementação de Datagram Sockets e Stream Sockets. o fluxo de troca de mensagens não são controlados.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas TCP/IP TCP/IP Socket Connections API java.close() © Copyright e-tecnologia. o protocolo utilizado é TCP. Este serviço é chamado orientado a conexão. elas podem ser corrigidas. podemos estabelecer conexão entre um cliente e servidor.close() Socket. o protocolo utilizado é UDP. Este serviço é chamado serviço sem conexão. enquanto perdurar a conexão podemos trocar mensagens.0 144 . isto quer dizer.com. as mensagens são transmitidas em pacotes. Já os Soquetes Datagramas. port #) (tentativa de conexão) (Fluxo de Mensagens) InputStream OutputStream Socket. este fluxo de mensagem é controlado. Com Soquetes de Fluxo. por exemplo) entre outras coisas.

Linguagem de Programação JAVA JB100 Java Básico Características Avançadas TCP/IP Principais métodos: Métodos ServerSocket(port number clientes) Descrição #. retorna o objeto socket (quando estabelecido uma conexão) responsável pelo gerenciamento dos serviços baseados em conexão. Fecha a conexão 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. as conexão são recusadas automaticamente. se as filas estiverem repletas. 2002 Versão: 3. O segundo parâmetro para o construtor é quantidade de clientes que podem esperar uma conexão e ser processada pelo servidor. Estabelece a porta em que um servidor espera a conexão.com. Espera o estabelecimento de uma conexão.0 145 .

writeUTF("Hello Net World!"). public class TestServer { public static void main(String args[]) { ServerSocket s= null. OutputStream s1out = s1.*. 2002 Versão: 3..getOutputStream(). } } } } © Copyright e-tecnologia. } for (.accept(). s1. import java.com. API import java. } catch (IOException e) { e.io.close(). Espera o estabelecimento de conexão Fluxo de Dados // Envia a mensagem dos. } catch (IOException e) { e. A primeira exibe como criar um Servidor. Encerra a o fluxo de dados e a conexão dos. DataOutputStream dos = new DataOutputStream(s1out).printStackTrace().) { try { Socket s1 = s.printStackTrace().0 146 .Linguagem de Programação JAVA JB100 Java Básico Características Avançadas TCP/IP Exemplos: Este exemplo é divido em duas partes.net.*.close(). Objecto ServerSocket try { Número da Porta s = new ServerSocket(5432).

} catch (ConnectException connExc) { System. API import java. s1. public class TestClient { public static void main(String args[]) { try { Objeto Socket.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas TCP/IP Exemplos: Este é segunda parte.println("Could not connect to the server. Fluxo de Dados System.net.0.println(dis.*. veja os parâmtros no Construtor “”Endereço IP” e “Número da Porta” do Servidor // Endereço IP é Localhost Socket s1 = new Socket("127.0 147 . dis. A criação de um cliente. 2002 Versão: 3.1".*. } catch (IOException e) { e.com.close(). 5432).").printStackTrace(). DataInputStream dis = new DataInputStream(is).getInputStream(). import java.io.out. } } } Leitura do Fluxo © Copyright e-tecnologia.err. InputStream is = s1.0.close().readUTF()).

1..com.1 Porta 5432 Fluxo de Dados Hello. TestServer Mensagem TestClient © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Características Avançadas TCP/IP Cenário da Conexão Servidor e Cliente TCP/IP IP 129.13.. 2002 Versão: 3.0 148 .

com. 2002 Versão: 3.0 149 .Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia.

Ela é independente do processo.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML O Quê é a UML? A UML (Linguagem de Modelagem Unificada) é uma linguagem-padrão para elaboração da estrutura de projetos de software. A UML é adequada para a modelagem de sistemas. iterativo e incremental. centrado na arquitetura. apesar de ser perfeitamente utilizada em processo orientado a casos de usos. portanto. é somente uma parte de um método para desenvolvimento de software. Principais Diagramas: • • • • • • Diagrama de Caso de Uso Diagrama de Seqüência Diagrama de Colaboração Diagrama de Estados Diagrama de Classes Diagrama de objetos • • • • Diagrama de Atividades Diagrama de Componentes Diagrama de Distribuição Diagrama de Pacotes © Copyright e-tecnologia.0 150 . 2002 Versão: 3.com. A UML poderá ser usada para: • Visualização • Especificação • Construção de modelos e diagramas • Documentação. cuja a abrangência poderá incluir sistemas de informação corporativos a serem distribuídos a aplicação baseadas em Web e até sistemas complexos embutidos de tempo real. A UML é apenas uma linguagem e.

Linguagem de Programação JAVA
JB100 Java Básico
Introdução a UML
Casos de Uso
O que são Caso de Uso? São diagramas de que permitem visualizar, especificar e documentar o comportamento de um elemento. Esses diagramas fazem com que sistema, subsistemas e classes fiquem acessíveis e compreensíveis, por apresentarem uma visão externa sobre como esses elementos podem ser utilizados no contexto. Definição: Caso de Uso é uma descrição de um conjunto de seqüências de ações, inclusive variantes, que um sistema pode produzir um resultado de valor observável por um ator. A representação gráfica é uma elipse. Elementos: Ator: Um ator representa um conjunto coerente de papéis que os usuários 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. Cenários: Podemos definir os cenários como uma “descrição” de um Caso de uso. O caso de uso deve ser descrito através de cenários. Devem ser construídos tantos cenários quantos forem necessários para se entender completamente todo o sistema. Podem ser considerados como teste informais para validação dos requisitos do sistema.

© Copyright e-tecnologia.com, 2002

Versão: 3.0

151

Linguagem de Programação JAVA
JB100 Java Básico
Introdução a UML
Casos de Uso
Diagramas de Caso de Uso e Extensões
Pedir lista dos matriculados Sistema de cobrança

Professor Matrícula nos Cursos Selecionar curso para ensinar

Aluno

Manter informação de aluno

Manter informações dos cursos

Gerenciar Manter informação de professor Gerar catalogo

Generalização: Entre casos de uso é parecida à generalização existente entre as classes. No caso de uso a generalização 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 substituído em qualquer local qual o pai apareça. Include: Quando você estiver se repetindo em dois ou mais caso de uso separados, devemos evitar a repetição Extends: Quando estivermos descrevendo uma variação em comportamento normal, entretanto, querendo fazer uma descrição mais controlada, explicando os pontos de extensão no caso de uso. Realizes: Especifica a colaboração entre os casos de uso Use (obsoleto): Especifica que a semântica do elemento de origem depende da semântica da parte pública do destino

© Copyright e-tecnologia.com, 2002

Versão: 3.0

152

Linguagem de Programação JAVA
JB100 Java Básico
Introdução a UML
Diagrama de Seqüência O que é Diagramas de Seqüência?
É um diagrama que exibe a colaboração dinâmica entre os vários objetos de um sistema. O principal aspecto deste diagrama é que a partir dele percebe-se a seqüência de mensagens enviadas entre os objetos. Ele mostra a interação entre os objetos, alguma evento que acontecerá em um ponto específico da execução do sistema.

formulários de registro
Ator (José) entrar com chave de acesso validar acesso entrar com o semestre

formulário de matrícula

cursos disponíveis

criar nova matrícula

apresentar em tela obter cursos

Diagrama de Seqüência

© Copyright e-tecnologia.com, 2002

Versão: 3.0

153

A interação de mensagens é mostrada em ambos os diagramas. O diagrama de colaboração também pode conter objetos ativos. que entre outras coisas mostram a ordem em que as mensagens são enviadas.0 154 . Podemos também escolher ambos. Se a ênfase do diagrama for o decorrer do tempo. semelhante ao diagrama de seqüência. é melhor dar prioridade ao diagrama de colaboração. No diagrama de colaboração. é melhor escolher o diagrama de seqüência. 2: validar acesso 1:entrar com chave de acesso 3:entrar com o semestre formulários de registro 4:criar nova matrícula Ator (José) 5:apresentar em tela cursos disponíveis 6:obter cursos formulário de matrícula Diagrama de Colaboração © Copyright e-tecnologia.com. onde os diversos objetos são mostrados juntamente com seus relacionamentos.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Colaboração O que é Diagramas de Colaboração? É um diagramas que mostra a colaboração dinâmica entre os objetos. valores de resposta e etc. O diagrama de colaboração é desenhado como um diagrama de objeto. que executam paralelamente com outros. mas se a ênfase for o contexto do sistema. além de mostrar a troca de mensagens entre os objetos. As setas de mensagens são desenhadas entre os objetos para mostrar o fluxo de mensagens entre eles. percebe-se também os objetos com os seus relacionamentos. 2002 Versão: 3. Também podem mostrar condições. interações. As mensagens são nomeadas.

Adicionar Aluno Criação faça: Crie o objeto curso Atribuição Curso faça: Atribuir um professor ao curso cancelarCurso cancelarCurso Matrícula aberta/inicialize númeroDeAlunos = 0 cancelarCurso Curso Aberto Entrada: Registre um aluno Curso Cancelado faça: envie notificação de cancelamento Registro fechado [númeroDeAlunos<3] Registro fechado [número de alunos =10]^Curso .Criar relatório Registro fechado [númeroDeAlunos>=3 ] cancelarCurso Curso Encerrado faça: relate curso esta cheio Curso Completado faça: Gerar lista de alunos © Copyright e-tecnologia. e condições sendo satisfeitas) afetam estes estados ao passar do tempo. tempo.com. mas apenas para aquelas que possuem um número 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. Não necessário escrever o diagrama de estado para todas as classes de um sistema. Pois este diagrama exibe todos os estados possíveis que objetos de uma certa classe podem se encontrar. erros. E mostra também quais são os eventos do sistemas que provocam tais mudanças.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Estado O que é Diagrama de Estado? É um diagrama que tipicamente complementa a descrição das classes. Eles mostram os estados que um objeto pode possuir e como os eventos (mensagens recebidas.0 155 . subsistemas e sistemas. 2002 Versão: 3.

Consistem em estados de ação. como execução paralela. é geralmente utilizado para demonstrar as atividades executadas por uma operação específica do sistema. O diagrama também pode conter especificações de mensagens enviadas e recebidas como partes de ações executadas.com. e suas atividades numa instância de um objeto. 2002 Versão: 3. que é o de capturar ações (trabalho e atividades que serão executados) e seus resultados em termos das mudanças de estados dos objetos. Diagramas de atividade capturam ações e seus resultados. Decisões e condições. também podem ser mostrados na diagrama de atividade. Vendas Cliente Estoque Fazer Pedido Processar Pedido Separar Produtos Enviar Pedido Receber Pedido Cobrar Cliente Pagar Fatura Fechar Pedido © Copyright e-tecnologia. como por exemplo seleção de um item do menu principal. O diagrama de atividade é uma variação do diagrama de estado e possui um propósito um pouco diferente do diagrama de estado. Eles focam o trabalho executado na implementação de uma operação (método). que contém a especificação de uma atividade a ser desempenhada por uma operação do sistema.0 156 .Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Atividade O que é Diagrama de Atividade? É um diagramas que exibe o fluxo seqüencial das atividades.

Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Pacotes Como podemos definir o diagrama de pacotes? A definição de Pacote é uma generalização. com o propósito de organizar as Classes de Objetos em grupos. um agrupamento. Esta abordagem facilita a análise a medida que o número de Classes de Objetos cresce num do cenário.com.0 157 . A notação usada pela UML para representar pacotes é: Nome do Pacote Exemplo: As classes pertencentes ao Sistema de Matrícula podem ser agrupadas em três pacotes: • UI (Interface com usuário) • Regras de Negócio • Interfaces de Banco de Dados Interfaces com Usuário Regras de Negócios Interfaces de Banco de Dados {abstrata} Interface Oracle Interface MySQL © Copyright e-tecnologia. 2002 Versão: 3. O tipo de relacionamento é linha pontilhada com uma seta que indica dependência. ou seja.

Para criar um diagrama de classes. que são os atributos e operações.com. descritas e relacionadas entre si. Classes podem se relacionar com outras através de diversas maneiras: associação (conectadas entre si). ou em pacotes (classes agrupadas por características similares). 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Classes O que é um Diagrama de Classes? É um diagrama que demonstra a estrutura estática das classes de um sistema e seus relacionamentos. Um sistema normalmente possui alguns diagramas de classes.0 158 . O diagrama de classes é considerado estático já que a estrutura descrita é sempre válida em qualquer ponto do ciclo de vida do sistema. Pessoa Professores Alunos Funcionários Administrativo 1 1 Matricula 1 1 1 Curso 1. dependência (uma classe depende ou usa outra classe). especialização (uma classe é uma especialização de outra classe). © Copyright e-tecnologia. já que não são todas as classes que estão inseridas em um único diagrama e uma certa classes pode participar de vários diagramas de classes. as classes têm que estar identificadas. Todos estes relacionamentos são mostrados no diagrama de classes juntamente com as suas estruturas internas.* tem Disciplinas Uma classe num diagrama pode ser diretamente implementada utilizando-se uma linguagem de programação orientada a objetos que tenha suporte direto para construção de classes..

entretanto há duas diferenças: os objetos são escritos com seus nomes sublinhados e todas as instâncias num relacionamento são mostradas.0 159 . A mesma notação do diagrama de classes é utilizada. onde a colaboração dinâmica entre os objetos do sistema são 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. O diagrama de objetos é como se fosse o perfil do sistema em um determinado momento de sua execução. Os diagramas de objetos não tem a mesma importância do diagramas de classes. Diagramas de objetos também são usados como parte dos diagramas de colaboração.com.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Objetos O que é um Diagrama de Objetos? É um diagrama que exibe uma variação do diagrama de classes e utiliza quase a mesma notação. 2002 Versão: 3. A diferença é que o diagrama de objetos mostra os objetos que foram “instanciados” das classes. mas eles são muito úteis para exemplificar diagramas complexos de classes ajudando muito em sua compreensão.

O diagrama de componente descreve os componentes de software e suas dependências entre si. Os componentes são a implementação na arquitetura física dos conceitos e da funcionalidade definidos na arquitetura lógica (classes. Eles são tipicamente os arquivos implementados no ambiente de desenvolvimento.class Professores.class © Copyright e-tecnologia.classr Aluno. Curso.jar Pessoa.jar Disciplina. objetos e seus relacionamentos).Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Componente O que é um Diagrama de Componente? É um diagrama que exibe o sistema por um lado funcional. 2002 Versão: 3.0 160 . expondo as relações entre seus componentes e a organização de seus módulos durante sua execução.com. representando a estrutura do código gerado.

Pode apresentar os atuais computadores e periféricos. e conexões entre estes nodes e componentes que juntos compõem toda a arquitetura física do sistema. É o último diagrama da topologia do sistema.* 1 Servidor de Aplicação 1 1 Servidor de Banco de Dados © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Introdução a UML Diagrama de Distribuição O que é Diagrama de Distribuição? É um diagrama que exibe a arquitetura física do hardware e do software no sistema.0 161 . um computador Servidor. Especifica-se também os componentes executáveis e objetos que são alocados para mostrar quais unidades de software são executados e em quais computadores são executados.. O diagrama de distribuição demonstra a arquitetura “runtime” de processadores.com. que possuem a mesma simbologia dos componentes do diagrama de componentes. descrevendo a estrutura de hardware e software que executam em cada unidade. um roteador. podendo ser uma computador cliente em uma Rede. juntamente com as conexões que eles estabelecem entre si e pode mostrar também os tipos de conexões entre esses computadores. dispositivos físicos e de software que executam no ambiente onde o sistema desenvolvido será utilizado. uma impressora. que significam objetos físicos que fazem parte do sistema. nodes. <<TCP/IP>> <<TCP/IP>> Cliente A 0. O diagrama de distribuição é composto por componentes. etc. 2002 Versão: 3..

2002 Versão: 3.com.Linguagem de Programação JAVA JB100 Java Básico Transformando modelos UML em código Java © Copyright e-tecnologia.0 162 .

o programa Hello.com. </body> </HTML> 3 Arquivo HTML 1 O programa Java import java. public class Hello extends java. 15. Segundo Passo: Compilar o programa © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Implementação Java Nossa proposta é apresentar o mais simples exemplo de aplicação UML e Java.Graphics. } } Primeiro Passo: Criação do programa Java. Nosso exemplo é um velho conhecido. 2002 Versão: 3.awt. Bem vamos começar pela implementação do código e depois faremos uma engenharia reversa para obtermos os diagramas e demais itens UML.drawString("Hello".Applet { public void paint(Graphics g) { g.15). não temos intenção de esgotar o tema UML. por isso. Veja os passos abaixo: 1 public class Tapplet extends Applet { 2 Compilação 4 } Código fonte (java) Bytcode (java) <HTML> <body> .applet. um Applet..0 163 .

mas neste caso usamos o AppletViewer.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Implementação Java 3 A página HTML.html.html <HTML> <CAPTION>Hello</CAPTION> <TR><TD> <APPLET CODE="Hello. o nome será Hello. que é a modelagem dessa aplicação usando UML. 2002 Versão: 3. podemos usar o Browser. que é utilitário Java.0 164 . que que exibe Applet.com. Hello.class" WIDTH=100 HEIGHT=100> </APPLET> </TD></TR> </HTML> 4 Terceiro Passo: Criação a página HTML. A execução Para encerrar Quarto Passo: Execução do programa. © Copyright e-tecnologia. a partir de páginas HTML Bem agora vamos para segunda parte.

applet. 15. Do programa Hello: Hello paint() g.awt. 2002 Versão: 3. 15. 15) O programa Hello pode ser representado graficamente pela figura acima. Applet public class Hello extends java.drawString (“Hello”.0 165 . © Copyright e-tecnologia. } paint() Graphics import java.Applet Hello public void paint(Graphics g) { g.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem UML A Modelagem UML.Graphics. O exemplo abaixo faz um mapeamento entre o código Java e modelo UML.com. veja os relacionamentos (herança e navegação) entre as classes e a definição do método paint. é claro que foi omitido os detalhes e a implementação do método paint é feito através de nota Applet Hello paint() Graphics Agora temos um modelo de fato.drawString("Hello".15).

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. ou seja.Pacotes) a linguagem Java é estruturada em pacotes. estes pacotes contém classes que por sua vez contém atributos e métodos. (Veja Miscelania . classes que tem objetivo comum. Podemos usar a estrutura de pacotes para associar classes com semânticas semelhante.Pacotes Bem como já dissemos.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem UML .com. 2002 Versão: 3.0 166 .

Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem Modelagem UML UML .applet.0 167 . que estão aninhados entro do pacote Java. Por exemplo: A classe Hello depende do pacote java. Veja o código e os respectivos pacotes: lang awt applet import java. são os subpacotes.15).Graphics.awt. 15.applet depende do pacote java. E o java.com. o pacote raiz (maior) é o Java e outros outros pacotes (menores).applet. 2002 Versão: 3. o relacionamento entre eles se dá através de dependência (seta pontilhada).Pacotes java Hello applet awt lang A figura acima demonstra o Diagrama de Pacotes da classe Hello.drawString("Hello". } } © Copyright e-tecnologia. public class Hello extends java.awt.Applet { public void paint(Graphics g) { g.

. java Hello applet awt lang Component (from awt) Object (from lang) Container (from awt) ...Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem UML ... int x.. int y) AudioClip abstract void drawString(String str. Panel Interface (from awt) AppletStub AppletConte xt Applet © Copyright e-tecnologia. int x.Pacotes Esta figura demonstra uma visão mais detalhada dos pacotes e as respectivas classes e atributos. 2002 Versão: 3.com. Graphics abstract void drawString(AttributedCharacterIterator iterator.0 168 . int y) .

callbackloop() que.invoca o método run() de Toolkit.O objeto Toolkit então chama uma de seus próprios métodos. 1 . Veja o diagrama logo abaixo.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem UML . O objeto ComponentPeer assume que seu atributo é um Component.Diagrama de Seqüência Podemos fazer a modelagem da ordenação de eventos usando uma Diagrama de Sequência.0 169 . (Hello) e assim o método paint() é executado de forma polimorfica.O objeto ComponentPeer então chama o método paint() de seu alvo. :Thread run run :Toolkit :ComponenPeer :target Hello callbackLoop handleExpose paint Diagrama de Seqüência © Copyright e-tecnologia. 2 .. por sua vez. A sequência se inicia com a execução do objeto Thread que. 2002 Versão: 3. chama .com.. 3 . 4 . a seguir.handleExpose de ComponentPeer.

com.0 170 .nome = nome.Linguagem de Programação JAVA JB100 Java Básico Transformando diagramas UML em código Java Modelagem UML e Codificação em Java Herança Múltipla Vejamos a codificação Java: public class Cliente { String nome.println("Nome: " + getNome()). } } public interface Pessoa { public boolean getDependente(int dependente). } } Atributo Métodos public class ClientePessoaJuridica extends Cliente { public ClientePessoaJuridica() { System.println("Tem dependente: " + getDependente(0)). } } Implementação do método assinado na Interface Pessoa © Copyright e-tecnologia.out.nome. } Assinatura do método public class ClientePessoaFisica extends Cliente implements Pessoa { public ClientePessoaFisica() { setNome("Duke"). } public boolean getDependente(int dependente) { return (dependente>0)?true:false.out. } public void setNome(String nome) { this. 2002 Versão: 3. System. System. public String getNome() { return this.println("Nome: " + getNome()).out.

Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia. 2002 Versão: 3.0 171 .com.

class Tags para Documentação: Usar: /** e */ Tag @see @deprecated @author @param @throws @Exception @return Declaração Cria um link com outra página HTML Informa quais métodos estão ultrapassados Nome do Autor Documenta o parametro Documenta Exceções Documenta o returno (valor e tipo) Class e Construtor Interface X X X X X X X X X X Método Atributo X X X X © Copyright e-tecnologia.java> Opção -d -sourcepath -public -private Valor path de saída path Descrição Diretório onde será gerado os arquivos HTML Especifica o diretório raiz dos fontes ou dos Package Documenta apenas variáveis e métodos públicos Documenta todas as variáveis e métodos Sintaxe: Javadoc [Opções] package/arquivo < package/arquivo> Exemplo: javadoc MinhasClasses. Sintaxe padrão: javadoc <arquivofonte. geralmente em formato HTML.X/BIN/Javadoc. Localização JDK1. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Utilitários JavaDoc (Documentação) Javadoc É uma utilitário do JDK que gera a documentação dos programas java.0 172 .com.

0 173 .g.com. e.Linguagem de Programação JAVA JB100 Java Básico Utilitários JavaDoc (Documentação) Javadoc usage: javadoc [options] [packagenames] [sourcefiles] [classnames] [@files] -overview <file> Read overview documentation from HTML file -public Show only public classes and members -protected Show protected/public classes and members (default) -package Show package/protected/public classes and members -private Show all classes and members -help Display command line options -doclet <class> Generate output via alternate doclet -docletpath <path> Specify where to find doclet class files -1.1 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. -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. 2002 Versão: 3. 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>.1 Generate output using JDK 1. 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..

/** * @author YourName * @version 2.IllegalStateException("Erro. * @throws IllegalStateException se nenhum retorno for encontrado * @return A lista de valores */ public List getStuff() throws IllegalStateException { if ( stuff == null ) { throw new java.List.x = x. } /** * Este método retorna algum valor. /** * This variable a list of stuff. * @see #getStuff() */ private List stuff. 2002 Versão: 3. sem valor").0 */ public class DocExemplo { /** Declaração e atribuição de x. /** * O construtor inicia a variavel x. * @param int x */ public DocExemplo(int x) { this. */ private int x.util.Linguagem de Programação JAVA JB100 Java Básico Utilitários JavaDoc (Documentação) Este exemplo exibe como implementar as tags de documentação que serão usados pelo utilitário Javadoc import java.0 174 . } } © Copyright e-tecnologia.com.lang. } return stuff.

.0 175 . © Copyright e-tecnologia.java.html” via Browser. 2002 Versão: 3.exe -version -author DocExemplo.Linguagem de Programação JAVA JB100 Java Básico Utilitários JavaDoc (Documentação) Exemplo: Para gerar a documentação digite o seguinte comando: c:\jdk1.. Depois chame a página principal “index.com.3\bin\javadoc. A figura acima é exemplo de documentação gerada pelo Javadoc.

Mostra o status da operação (verbose) Suprime a geração do meta-arquivo Faz apenas o agrupamento. deve ser especificada Nome dos arquivos a serem agrupados e/ou compactados Descrição Cria um novo arquivo Mostra o conteúdo de um arquivo existente Extrai todos os arquivos Extrai o arquivo especificado Indica que a operação (c.class ClassC. © Copyright e-tecnologia.jar não é automatica.INF Nome do arquivo jar.jar ClassA. É usado também para fazer a distribuição de aplicação. entretanto um arquivo meta-arquivo é gerado. Também é bastante usado com componente Javabeans e Applet. gerado: jar tvf Classes.t ou x) será executada sobre o arquivo e não sobre a entrada/saída padrão.com. Os arquivos Jar podem conter um aplicação inteira.0 176 . 2002 Versão: 3.jar Para extrair arquivo: Jar xvf Classes. Este argumento é opcional.Linguagem de Programação JAVA JB100 Java Básico Utilitários Jar (Compactação.X/BIN/Jar. ele é usado para fazer distribuição de aplicações. META-INF/MANIFEST. default. Agrupamento e Distribuição) Jar É um utilitário do JDK que faz agrupamento de arquivos em único.class Para ver o conteúdo do arquivo jar.jar.jar Obs: a opção f é sempre utilizada em operações com arquivos. A extensão . sem compactação. geralmente com compressão. um arquivo . Deve ser utilizado para arquivos jar na variável de ambiente Classpath arquivo-destino arquivo-entrada Opções c t x x <arquivo> f v m o Exemplos: jar cvf Classes. Localização JDK1. Sintaxe: jar opções [meta-arq] nome-arquivo-destino [nome-arquivo-entrada] Argumento meta-arquivo Descrição Arquivo que contém as informações sobre o arquivo destino gerado. por isso.class ClassB.

O primeiro passo é escrever um programa em Java e depois aplicar o depurador de código. cont (continução) e quit ou exit (sai do JDB).println("Hello " + arg[0]). veja abaixo toda a seqüência de depuração.out.0 177 . se o parâmetro não for informado. para fazer depuração de código. 2002 Versão: 3. chame o depurador jdb <nomedoprograma> <enter>. Então ferramenta será inicializada.Linguagem de Programação JAVA JB100 Java Básico Utilitários JDB (debug) É um utilitário do JDK. Principais comandos: run (chama a máquina virtual). Por fim a exceção é localizada. Veja o exemplo abaixo: public class Hello { public static void main (String arg []) { String s = "world". © Copyright e-tecnologia. System.com. isto provocará uma exceção O próximo passa é abrir uma janela “DOS”. ocorrerá na linha 5. } } Esta classe Java requer um parâmetro que deve ser passando na chamada da classe.

String[]). veja exemplo abaixo: public class Hello { public static void main (String arg []) { System.lang.0 178 . tais como tamanho e etc. Sintaxe: javap <opções> <classes> Lista das principais opções: Argumento -c -classpath <pathlist> -help -public -protected -package -private -s -verbose Descrição Desmonta o código Especifica onde encontrar as classes Imprime as mensagens de ajuda Exibe somente as classe e membros públicos 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. 2002 Versão: 3.com.Linguagem de Programação JAVA JB100 Java Básico Utilitários Javap (Desmontagem) Javap Faz a desmontagem de código ou descompilação.println("Hello”).lang.class. Você poderá fazer a desmontagem do arquivo Hello.out. Código fonte Código fonte. } } Após compilar o programa fonte.java public class Hello extends java.Object { public Hello(). } © Copyright e-tecnologia. Para desmontar digite o comando: javap Hello Compiled from Hello. public static void main(java.

Linguagem de Programação JAVA JB100 Java Básico © Copyright e-tecnologia. 2002 Versão: 3.com.0 179 .

0 180 . 2002 Versão: 3.Notação UML © Copyright e-tecnologia.Linguagem de Programação JAVA JB100 Java Básico Apêndices A .com.Registrando Fonte de Dados D .Convenção de Código no Java B .Sistema de Codificação Unicode C .

Vide o capitulo sobre documentação Para maiores detalhes veja:http://java. devendo ser escrito em letras minúscula. Exemplo: public int calcular. Controles de Estruturas: Através de { } (chaves). Interfaces . Exemplo: public static final VALOR Atributos e Variáveis .0 181 .Os nome da classes devem um substantivo e ter a primeira letra maiúscula o restante em minúsculo. Exemplo: public class Pessoa. veja o exemplo: public int calcularArea Constantes .com/docs/books/jls/index.com. Exemplo: public class PessoaFisica.html © Copyright e-tecnologia.Os nomes dos métodos podem ser verbos no infinitivo. Não devemos usar espaço em branco para separa os nomes e nem usar o sublinhado.Linguagem de Programação JAVA JB100 Java Básico Apêndice A Convenção de Código no Java Classe . Comentários . Para nome composto usar a seguinte regra a o primeiro nome em minúsculo e a primeira letra do segundo nome em maiúsculo. *Espaços .sun.Os nome dos atributos e/ou variáveis devem ser escritos em letras minúsculas.Seguir as mesmas regras para nome de classe Métodos .Convencionou-se o uso de quatro espaços para indentações.Nomes de constantes devem escritos em letras maiúsculas. 2002 Versão: 3. No caso de nome composto o primeiro e segundo nome deve começar com letras maiúscula.

WML. aplicações de faixas múltiplas e websites oferece uma redução significativa nos custos quando comparado ao uso de conjuntos de caracteres legacy. e é a maneira oficial de implementar o ISO/IEC 10646. a União Européia por si só requer vários sistemas de codificação diferentes para cobrir todas a línguas. Microsoft. É suportado por muitos sistemas operacionais. O Unicode é necessário para padrões modernos tais como o XML. etc. não importa a plataforma.0. não importa o programa.org © Copyright e-tecnologia. Mesmo para uma única língua como o inglês não havia sistema de codificação adequado para todas as letras.0 182 . Nenhum destes sistemas de codificação. pontuação e símbolos técnicos em uso corrente. Oracle. IBM. O Unicode está mudando tudo isso! O Unicode fornece um único número para cada caracter. não importa o programa. havia centenas de sistemas diferentes de codificação . Qualquer computador em particular (especialmente os servidores) precisam suportar muitos codificadores diferentes. dois codificadores podem usar o mesmo número para dois caracteres diferentes ou usar números diferentes para o mesmo caracter. ainda assim toda as vezes que se passam dados entre codificadores ou plataformas diferentes. Mais informações: www. HP. O surgimento do Padrão Unicode Standard e a disponibilidade de instrumentos para suportá-lo está entre as tendências recentes mais significativas das tecnológicas mundiais de software. Incorporar o Unicode aos servidores de clientes. Java. no entanto. SAP. línguas e países múltiplos sem a necessidade de reengenharia. LDAP. não importa a língua. poderia conter caracteres suficientes: por exemplo. não importa a língua. estes dados sempre correm o risco de serem corrompidos.Linguagem de Programação JAVA JB100 Java Básico Apêndice B Sistema de Codificação Unicode O que é Unicode? Unicode é sistema de codificação que fornece um número único para cada caracter. Gravam letras e outros caracteres na memória designando um número para cada um deles.com. Isto permite com que dados sejam transportados através de muitos sistemas diferentes sem que sejam corrompidos. Sybase. CORBA 3. os computadores lidam com números. todos os browsers modernos e muitos outros produtos. Unisys e muitos outros. Fundamentalmente. 2002 Versão: 3. Sun. Antes de o Unicode ser inventado. Não importa a plataforma. ECMAScript (JavaScript). JustSystem. Estes sistemas de codificação são também conflitantes entre si. O Unicode possibilita que um único software ou website seja alvejado através de plataformas.unicode. Em outras palavras. O Padrão Unicode tem sido adotado por líderes do setor de informática tais como a Apple.

Selecione uma fonte de dados. clique iniciar.com. 2002 Versão: 3. configurações.0 183 . © Copyright e-tecnologia. painel de controle e selecione Fonte de Dados ODBC. por exemplo MS Access 97 Database e pressione o botão Adicionar.Linguagem de Programação JAVA JB100 Java Básico Apêndice C Registrando Fonte de Dados Para registrar um fonte de Dados no Windows98.

0 184 . Para finalizar clique em OK © Copyright e-tecnologia. 2002 Versão: 3.Linguagem de Programação JAVA JB100 Java Básico Apêndice C Registrando Fonte de Dados Agora selecione o drive Informe o nome da fonte de dados.com. Clicar no botão Selecionar para informar o caminho onde ela se encontra.

Linguagem de Programação JAVA
Apêndice D
Notação UML
SÍMBOLO GRÁFICO NOME DIAGRAMAS EM QUE APARECE USUALMENTE MODELO A QUE PERTENCEM
Classes de Objetos Componentes Classes de Objetos Componentes

JB100 Java Básico

ASSOCIAÇÂO DE Diagrama de Classes, Diagrama de Componentes. AGREGAÇÃO Diagrama de Classes, ASSOCIAÇÂO DE COMPOSIÇÃO Diagrama de Componentes. Diagrama de Casos de Uso, ASSOCIAÇÂO DE Diagrama de Classes, DEPENDÊNCIA Diagrama de Componentes, Diagrama de Implantação. ASSOCIAÇÂO DE GENERALIZAÇÃO Diagrama de Casos de Uso, Diagrama de Classes. Diagrama de Casos de Uso, Diagrama de Classes, Diagrama de Componentes, Diagrama de Implantação. Diagrama de Casos de Uso, Diagrama de Seqüência.

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

ASSOCIAÇÂO REGULAR

ATOR

CASO DE USO

Diagrama de Casos de Uso.

Caso de Uso

Nome da Classe Atributos

CLASSE
Operações

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

Versão: 3.0

185

Linguagem de Programação JAVA
Apêndice D
Notação UML
ESTADO INICIAL
Nome da “Interface”

JB100 Java Básico

Diagrama de Estados, Diagrama de Atividades.

Classes de Objetos Caso de Uso

ou

<<interface>> Nome da “Interface” Operação1 () Operação2 () Operação3 ()

“INTERFACE”

Diagrama de Componentes

Componentes

INTERVALO DE EXECUÇÃO DE OPERAÇÂO MENSAGEM DE RETORNO MENSAGEM E CHAMADA DE OPERAÇÂO “Síncrona” MENSAGEM E CHAMADA DE OPERAÇÃO “Assíncrona” NÓ

Diagrama de Seqüência

Caso de Uso

Diagrama de Seqüência

Caso de Uso

Diagrama de Seqüência

Caso de Uso

Diagrama de Seqüência

Caso de Uso

Diagrama de Implantação

Componentes

texto

NOTA

Em qualquer diagrama

identificador:Classe

ou

:Classe

Diagrama de Seqüência, OBJETO Diagrama de Atividades
Em qualquer diagrama em que é necessário representar um conjunto de coisas que devem estar agrupadas para efeito de uma organização apropriada

Caso de Uso Caso de Uso

Nome do Pacote

PACOTE

TRANSIÇÃO DE ESTADO

Diagrama de Estados, Diagrama de Atividades

Classes de Objetos Caso de Uso

AUTODELEGAÇÃO

Diagrama de Seqüência

Caso de Uso

© Copyright e-tecnologia.com, 2002

Versão: 3.0

186

Linguagem de Programação JAVA
Licença:

JB100 Java Básico

© Copyright e-tecnologia.com, 2002

Versão: 3.0

187

santos@etecnologia. não visando ao lucro. Melhoria e Revisão: Este material esta em processo constante de revisão e melhoria. O autor informa não estar associada a nenhum produto e/ou fornecedor apresentado neste material.br) © Copyright e-tecnologia. No decorrer deste. imagens. nomes de produtos e fabricantes podem ter sido utilizados.Linguagem de Programação JAVA Notas: Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são de responsabilidade de seus proprietários. 2002 Versão: 3. e desde j á o autor informa que o uso é apenas ilustrativo e/ou educativo. por favor envie um e-mail para nós. Imagens: Google.0 188 . Flickr e Banco de Imagem. se você encontrou algum problema ou erro envie um e-mail para nós. favorecimento ou desmerecimento do produto/fabricante.com. JB100 Java Básico Rildo F dos Santos (rildo.com. Criticas e Sugestões: Nós estamos abertos para receber criticas e sugestões que possam melhorar o material.

0 © Copyright e-tecnologia.com/ Autor: Rildo Santos (rildosan@uol.blogspot.com.br Rildo F Santos (11) 9123-5358 (11) 9962-4260 rildo.santos http://rildosan.etcnologia.Linguagem de Programação JAVA JB100 Java Básico www.com.f.br) Revisão 3.0 27/01/09 Versão: 3. 2002 .santos@etecnologia.com.br @rildosan skype: rildo.com.

Sign up to vote on this title
UsefulNot useful