Curso de Introdução ao Java. Curso de Introdução. Daniel Destro do Carmo Softech Network Informática

Tamanho: px
Começar a partir da página:

Download "Curso de Introdução ao Java. Curso de Introdução. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br"

Transcrição

1

2 Curso de Introdução ao Java Daniel Destro do Carmo Softech Network Informática

3 Objetivo do curso Conhecer a Plataforma Java Conhecer a sintaxe e as características do Java Conhecer as APIs do Java Escrever aplicações simples em Java Entender e aplicar conceitos da Programação Orientada a Objetos

4 A Tecnologia Java A tecnologia Java é composta por uma gama de produtos, baseados no poder da rede e na idéia de que um software deveria ser capaz de rodar em diferentes máquinas, sistemas e dispositivos. Por diferentes dispositivos entendemos: computadores, servidores, notebooks, handhelds, PDAs (Palm), celulares, TV, geladeiras e tudo mais o que for possível. Os programas feitos em Java rodam em diferentes ambientes graças a um componente da plataforma chamado JVM (Java Virtual Machine) que é um tipo de tradutor de código Java para instruções específicas de cada sistema e dispositivo. A tecnologia Java foi lançada em 1995, e desde então tem crescido em popularidade e se tornado uma plataforma muito estável e madura. Atualmente a tecnologia Java está em sua segunda versão, chamada de Java 2 Platform. A tecnologia Java é, basicamente, sub-dividida em: J2SE (Java 2 Standard Edition) J2EE (Java 2 Enterprise Edition) J2ME (Java 2 Micro Edition) Java Card Java Web Services

5 A Tecnologia Java Java Standard Edition (JSE) A JSE é uma rica plataforma que oferece um completo ambiente para o desenvolvimento de aplicações para clientes e servidores. A J2SE é também a base das tecnologias J2EE e Java Web Services, e é dividida em dois grupos conceituais: Core Java e Desktop Java. A Sun distribui a JSE na forma de um SDK (Software Development Kit), em conjunto com uma JRE (Java Runtime Environment). O pacote do SDK da J2SE vem com ferramentas para: compilação, debugging, geração de documentação (javadoc), empacotador de componentes (jar) e a JRE, que contém a JVM e outros componentes necessários para rodar aplicações Java.

6 A Tecnologia Java Java Enterprise Edition (JEE) A tecnologia JEE não é um produto, mas sim de uma especificação definida pela Sun. Simplifica as aplicações empresariais e multi-camadas É baseando nos componentes padronizados, modulares e reusáveis, os (EJB) Oferecendo um conjunto completo de serviços para estes componentes Manipula muitos detalhes do comportamente da aplicação automaticamente Não precisa reaprender a programa, pois se utiliza dos mesmo recursos do Java (JSE) Roda em servidores de aplicações JEE diferentes e padronizados pela Sun A tecnologia JEE não está no escopo deste curso

7 A Tecnologia Java Java Micro Edition (JME) A tecnologia JME é voltada para aplicações que rodam em pequenos dispositivos como celulares, PDAs, smart cards e etc. Ela possui uma API bastante completa para o desenvolvimento de aplicações para pequenos dispositivos. A tecnologia JME não está no escopo deste curso. A Tecnologia Java Web Services Baseada na tecnologia XML Usado para troca de informações pela rede Muito utilizado por sites de e-commerce Utiliza padrões definidos (SOAP,...) A API JAXP (Java API for XML Processing) oferece facilidades para Web Services

8 O que é Java, afinal??? Java é uma linguagem de programação Java é um ambiente de desenvolvimento Java é uma completa plataforma de soluções para tecnologia JSP Java API J2SE JNI J2EE CORBA J2ME JINI RMI JRE JAXP JDBC JVM XML Servlet SDK AWT Swing

9 Instalando o SDK do Java (JDK) Faça o download do JDK para a sua plataforma (http://java.sun.com). Execute o arquivo de instalação é fácil instalar (Next, Next, Finish). Crie uma variável de ambiente chamada JAVA_HOME, que deve guardar o caminho do diretório onde o Java foi instalado e adicione o caminho para os programas do Java no PATH do seu S.O.: No Windows: SET JAVA_HOME=C:\jdk1.5.0 SET PATH=%PATH%;%JAVA_HOME%\bin No Linux: export JAVA_HOME=/usr/java/jdk1.5.0 export PATH=$PATH:%JAVA_HOME%/bin

10 Fundamentos da Linguagem Java Java não necessita de um editor específico (Notepad é o suficiente) Existem dezenas de editores completos (IDEs) para Java (livres ou não) É portavel para qualquer ambiente/plataforma - Write once, run everywhere! Java é orientado ao objeto Os programas em Java, quando compilados, são convertidos para um código intermediário (bytecode), que é verificado, carregado na memória e então interpretado pela JVM (Java Virtual Machine). O Java NÃO gera executáveis, nem código nativo para o SO.

11 Primeiro Programa em Java Arquivo: PrimeiroPrograma.java public class PrimeiroPrograma { public static void main( String[] args ) { System.out.println( "Meu primeiro programa em Java" ); Compilando o código-fonte: javac PrimeiroPrograma.java Executando o programa: Todo programa começa pelo método main( ). Que é o seu ponto de partida. java PrimeiroPrograma Saída gerada: Meu primeiro programa em Java

12 Método main( ) A assinatura do método main( ), que é o ponto de partida de um programa Java e deve ser feito como abaixo: public static void main( String[] args ) { O parâmetro passado para o método main( ) é um array de Strings, que contém os valores dos argumentos passados na linha de comando da execução do programa. Exemplo: java PrimeiroPrograma argumento1 argumento2 argumento3 Cada palavra passada como argumento é um ítem do array, parâmetro do main( ).

13 Comentários Os comentários em Java podem ser por linha ou em bloco: Por linha: // isto é um comentário e inicia com duas barras. Em bloco: /* Comentário em bloco aceita múltiplas linhas Não utilize comentários aninhados */

14 Variáveis de Tipos Primitivos Em Java, uma variável deve: ser declarada antes de ser usada ter um tipo definido (o tipo não muda) iniciar o valor da variável antes de usá-la ser usada dentro do escopo (método ou bloco) Declaração: <tipo da variável> <nome da variável>; Declaração e atribuição: <tipo> <nome> = <valor>; Tipo Tamanho (bits) Valor Mínimo Valor Máximo Sem Sinal boolean 1 false true X char X byte short int long float 32 double 64

15 Variáveis de Tipos Primitivos public class TiposPrimitivos { public static void main( String[] args ) { //declara um int e atribui um valor int idade = 25; //declara um float e, depois, atribui um valor float valor; valor = 1.99f; //declarando um boolean boolean verdadeirooufalso = false; verdadeirooufalso = true; //declarando um char char letraa = 'A'; letraa = 65; //valor ASCII para 'A' letraa = '\u0041'; //valor Unicode para 'A' //declarando um byte byte b = 127; //declarando um short short s = 1024; //declarando um long long l = ; //declarando um double double d = 100.0; //declaração múltipla int var1=0, var2=1, var3=2, var4;

16 Exercícios 1) Declare uma variável que represente um número inteiro e inicie com o valor 10. 2) Declare três variáveis com tipos diferentes, sem atribuir valor. Depois atribua um valor qualquer a elas. 3) Crie uma variável do tipo int, atribuindo um valor a ela. Depois crie uma variável do tipo double, atribuindo a ela o valor da primeira variável criada.

17 String String é uma classe que manipula cadeias de caracteres A classe String possui métodos para essas manipulações Trabalha com Pool de Strings para economizar memória String str = Isto é uma String do Java ; String xyz = new String( Isto é uma String do Java ); if( str == xyz ) System.out.println( IGUAL ); else System.out.println( DIFERENTE ); if( str.equals( xyz ) ) { //MANEIRA CORRETA DE SE COMPARAR O CONTEÚDO DAS STRINGS System.out.println( Tamanho da String: + str.length() ); System.out.println( SubString: + str.substring(0, 10) ); System.out.println( Caracter na posição 5: + str.charat(5) );

18 String Outros métodos úteis da classe String: String str = Isto é uma String do Java ; // O método split quebra a String e várias outras, // pelo separador desejado String[] palavras = str.split( ); int i = str.indexof( uma ); //retorna o índice da palavra na String if( str.startswith( Olá ) str.endswith( Mundo! ) ) { // testa o começo e o fim da String retorna boolean str = str.trim(); // elimina os espaços em branco no início e fim str = str.replace( ); // substitui os caracteres // substitui uma palavra (usa expressões regulares) str = str.replaceall( String, Cadeia de caracteres );

19 Exercícios 3) Declare uma variável do tipo String com a frase Curso de Java. 4) Concatene na variável criada acima a frase Exemplo String. 5) Imprima na tela (console) o número de caracteres da String. 6) Crie uma nova String, pegando o pedaço da primeira String que compreenda a frase Exemplo String. Desafio 1: Faça o mesmo que o exercício 6, porém ser usar posição (índice) fixa.

20 Literais Um valor literal é aquele especificado no próprio código. As literais podem ser: boolean: true e false inteiro: 10, 0x10, 010 (decimal, hexadecimal e octal, respectivamente) ponto-flutuante: 1.99, 2.55f, 10.99d, 4.23E+21 (double, float, double e notação científica, respectiv.) Caracteres de escape do tipo char: '\n' quebra de linha '\r' retorno de carro '\t' tabulação '\\' barra invertida '\b' backspace '\f' form feed '\'' aspa simples '\ ' aspa dupla char: 'A', '\u0041', 65 (caracter ascii, código Unicode e código ascci, respectivamente) String: String str = Isto é uma literal String ;

21 Palavras-Chaves do Java O Java possui 53 palavras-chaves e palavras reservadas: abstract class extends implements null strictfp true assert const false import package super try boolean continue final instanceof private switch void break default finally int protected synchronized volatile byte do float interface public this while case double for long return throw catch else goto native short throws char enum if new static transient Nenhuma das palavras acima podem ser usadas como identificadores (nomes de variáveis, atributos, classes), ou para outro propósito, a não ser o especificado para aquela determinada palavra. As palavras goto e const, apesar de reservadas, não tem utilizadade algum no Java.

22 Identificadores As regras para nomeação de identificadores (variáveis, nomes de função, classes ou label) seguem a seguinte regra: nomes nomes devem começar com letra ou os caracteres _ ou $ os caracteres seguintes podem conter números, letras, _ ou $ Veja exemplos de nomes de identificadores: valor $preco 20itens _teste INT // válido // válido // inválido // válido // válido Observação: O Java considera diferença entre maiúsculas e minúscula.

23 Operadores Veremos agora os operadores da linguagem Java, que agregam importantes funcionalidades aos programas. Eles possuem uma ordem de precedência na execução da expressão. Para garantir a ordem de precedência desejada, agrupe as expressões com parênteses.

24 Operadores Unários Incremento e Decremento: ++ e -- int a = 0; int b = a++; // incrementado depois de atribuir int c = ++a; // incrementado antes de atribuir b = a--; // decrementado depois de atribuir c = --a; // decrementado antes de atribuir Mais e Menos Unário: + e - int x = +3; // x recebe o positivo 3 x = -x; // x recebe -3, neste caso Inversão de Bits: ~ int i = ~1; // i = -2 (os bits foram invertidos) Complementar booleano:! boolean falsidade =! (true); // inverte o valor booleano Conversão de Tipos: (tipo) double d = 1.99; int i = (int) d; // converte de double p/ int (perda de precisão)

25 Operadores Aritméticos Multiplicação e Divisão: * e / int um = 3 / 2; float umemeio = (float) 3 / 2; double xyz = umemeio * um; // divisão de inteiros gera um inteiro // ocorre promoção aritmética para float // ocorre promoção aritmética para float Módulo: % int resto = 7 % 2; // resto = 1 Adição e Subtração: + e - long l = ; double d = ; Concatenação: long var = 12345; String str = O valor de var é + var; Na concatenação de Strings, as variáveis ou literais são promovidos a String antes: String str = O valor de var é + Long.toString( var );

26 Operadores de Deslocamento Deslocamento à direita: >> Número: 192 Binário: Right Shift de 1 bit: Right Shift de 7 bits: Número: -192 Binário: Right Shift de 1 bit: Right Shift de 7 bits: Deslocamento à esquerda: << Número: 192 Binário: Left Shift de 1 bit: Left Shift de 7 bits: Número: -192 Binário: Left Shift de 1 bit: Left Shift de 7 bits: Deslocamento à direita, sem sinal: >>> Número: 192 Binário: Right Shift de 1 bit: Right Shift de 7 bits: Número: -192 Binário: Right Shift de 1 bit: Right Shift de 7 bits: int i = 192 >> 1 int i = 192 >> 7 int i = -192 >> 1 int i = -192 >> 7 int i = 192 << 1 int i = 192 << 7 int i = -192 << 1 int i = -192 << 7 int i = 192 >>> 1 int i = 192 >>> 7 int i = -192 >>> 1 int i = -192 >>> 7

27 Exercícios 7) Calcula a área de uma circunferência com raio 12, onde PI = e área = PI * r 2. 8) Calcule o resto da divisão de 99 por 4. 9) Divida um número por 2 sem utilizar o operador /. 10) Multiplique um número por 8, sem utilizar o operador *. Desafio 2: Declare um inteiro de valor 10 e mostre na tela o valor do terceiro bit mais significativo (da direita para a esquerda).

28 Operadores de Comparação Comparação ordinal: >, >=, < e <= Compara tipos primitivos numéricos e o tipo char. boolean b = ( 10 < 3 ); boolean w = (x <= y); if( x >= y ) { Operador instanceof Compara o tipo da classe de uma referência de um objeto. String str = Uma String ; if( str instanceof String ) { // true if( srt instanceof Object ) { // true Comparação de Igualdade: == e!= Comparam tipos primitivos, valores literais e referências de objetos. if( abc == 10 ) { boolean b = ( xyz!= 50 ); if( refobj1 == refobj2 ) {

29 Operadores de Bits: &, e ^ Numéricos Inteiros: Operando A: 1 Operando B: 3 Binário de A: Binário de B: A & B: = 1 A ^ B: = 2 A B: = 3 Booleanos: true & true = true true & false = false true ^ true = false true ^ false = true false false = false false true = true

30 Operadores Lógico de Curto-Circuíto: && e Estes operadores não precisam testar toda a expressão. Ele pára assim que uma das condições o satisfaça. O retorno da expressão é um boolean if( (a>10) && (b<5) ) { // isso if( (x==y) (b<5) ) { // aquilo boolean b = x && y z;

31 Operador Condicional:? É também conhecido como operador ternário, pois trabalha com 3 operandos. Ele avalia o primeiro operando. Caso a avaliação retorne true, ele executa o segundo operando. Senão, ele executa o terceiro operando. O segundo e terceiro operandos DEVEM ser do mesmo tipo (senão, use cast). O código do operador ternário abaixo: int x = 10; int y = (x > 10)? x : x+1; é semelhante ao código abaixo: int x = 10; int y; if( x > 10 ) { y = x; else { y = x + 1;

32 Operadores de Atribuição Estes operadores atribuem um novo valor a uma variável ou expressão. O operador = apenas atribui um valor. Os operadores +=, -=, *= e /= calculam e atribuem um novo valor. int i = 10; int dois = 1; dois += 1; // dois = dois + 1; int cinco = 7; cinco -= 2; // cinco = cinco - 2; int dez = 5; dez *= 2; // dez = dez * 2; int quatro = 12; quatro /= 3; // quatro = quatro / 3;

33 Conversão de Tipos Primitivos Permite a conversão entre tipos diferentes Deve ser explícito quando for de um tipo maior para um menor (narrowing) Pode ser implícito (ou explícito) de um tipo menor para um maior (widening) Conversão para tipos menores pode causar perda de precisão e truncamento. double d = 1.99d; int i = (int) d; // i recebe o valor 1 short s = 15; long x = s; // conversão widening long y = (long) s; // não é necessário O widening segue o sentido das flechas. Narrowing é no sentido contrário.

34 Promoção Aritmética Ocorre com as operações aritméticas entre tipos primitivos numéricos diferentes. O menor tipo é automaticamente convertido para o maior tipo. public class PromocaoMatematica { public static void main( String[] args ) { double d = ; int i = 100; //aqui ocorre a promoção matemática //i é convertido para double e então multiplicado d = d * i; //ao contrário é necessário informar o casting long x = 12345; float pi = 3.14f; x = x * (long) pi; //ou então, converte apenas o resultado x = (long) (x * pi);

35 Controles de Fluxo do Programa Cláusula if( ) / else public class ClausulaIf { public static void main( String[] args ) { int idade = 20; if( idade <= 12 ) { System.out.println( "Criança" ); if( idade > 12 && idade <= 19 ) { System.out.println( "Adolescente" ); if( idade > 19 && idade <= 60 ) { System.out.println( "Adulto" ); if( idade > 60 ){ System.out.println( "Idoso" );

36 Controles de Fluxo do Programa Cláusula if( ) / else public class ClausulaIf { public static void main( String[] args ) { int idade = 20; if( idade <= 12 ) { System.out.println( "Criança" ); else if( idade <= 19 ) { System.out.println( "Adolescente" ); else if( idade <= 60 ) { System.out.println( "Adulto" ); else { System.out.println( "Idoso" );

37 Exercícios 11) Crie uma variável inteira com um valor qualquer e verifique se o valor desta variável é menor que 15 ou maior que ) Crie uma variável com valor de ponto flutuante com um valor qualquer e verifique se o valor desta variável está entre 1.99 e 5.99, inclusive. 13) Agora compare se o valor das duas variáveis acima são iguais. 14) Calcule o valor da multiplicação de um int por um double, atribuindo o valor a um int.

38 Exercícios 15) Crie um programa que receba dois argumentos (nomes) e os exiba na ordem alfabética correta. 16) Crie um programa que receba dois argumentos e calcule a área de um quadrilátero e exiba na tela com a seguinte mensagem: Lado a = <a> Lado b = <b> A área é = <valor>. 17) Incremente o programa de cálculo de área (16) para exibir ao final a mensagem: A figura é um quadrado caso seja um quadrado, ou, A figura é um retângulo, caso seja um retângulo.

39 Controles de Fluxo do Programa Cláusula switch( ) public class ClausulaSwitch { public static void main( String[] args ) { int numero = 1; switch( numero ) { case 1 : System.out.println( "UM" ); break; case 2 : System.out.println( "DOIS" ); break; case 3 : System.out.println( "TRES" ); break; default : System.out.println( "NENHUM" ); break; O switch recebe um argumento do tipo int.

40 Controles de Fluxo do Programa Laço while( ) public class LacoWhile { public static void main( String[] args ) { int i = 0; //laço while() com bloco de código definido while( i < 10 ) { System.out.println( "Linha: " + i ); i++; A expressão é avaliada antes de executar o bloco de código Ele repete enquanto a expressão for verdadeira (true)

41 Controles de Fluxo do Programa Laço do / while( ) public class LacoWhile { public static void main( String[] args ) { int i = 0; //laço do / while() com bloco de código definido do { System.out.println( "Linha: " + i ); i++; while( i < 10 ); O bloco é executado ao menos um vez Após a primeira repetição é que a expressão é avaliada

42 Controles de Fluxo do Programa Laço for( ) A sua estrutura é definida como a seguir: for( iniciação; condição; incremento ) { bloco_de_código_a_executar public class LacoFor { public static void main( String[] args ) { for( int i=0; i < 10; i++ ) { System.out.println( "Linha: " + i );

43 Controles de Fluxo do Programa Laço for( ) avançado (Enhanced for loop) Foi definido a partir do Java 5, com o intuito de facilitar a vida do desenvolvedor, economizando código e evitando erros ao percorrer arrays e coleções (implementações de java.util.collection). É similar ao for each de outras tecnologias. Não é possível controlar o índice utilizado pelo for, mas pode-se contonar este problema. public class LacoForAvancado { public static void main( String[] args ) { for( String s : args ) { System.out.println("Argumento: " + s ); List lista = new ArrayList(); // adiciona itens à lista for( String s : lista ) { System.out.println( s );

44 Controles de Fluxo do Programa Cláusula break Aborta a execução de um laço, quando executado. public class ClausulaBreak { public static void main( String[] args ) { char letras[] = { 'A', 'B', 'C', 'D', 'E' ; int i; for( i=0; i<letras.length; i++ ) { if( letras[i] == 'C' ) { break; System.out.println( "Último índice: " + i );

45 Controles de Fluxo do Programa Cláusula break rotulada Aborta a execução de um laço rotulado, quando executado. int j = 0, i = 0; principal1: while( true ) { for( i=0; i<1000; i++ ) { if( j == 10 && i == 100 ) break principal1; j++;

46 Controles de Fluxo do Programa Cláusula continue Ignora a execução dos comandos seguintes do bloco, no laço, quando executado. public class ClausulaContinue { public static void main( String[] args ) { char letras[] = { 'B', 'X', 'R', 'A', 'S', 'I', 'L' ; int i; for( i=0; i<letras.length; i++ ) { if( letras[i] == 'X' ) { continue; System.out.print( letras[i] );

47 Controles de Fluxo do Programa Cláusula continue rotulada Ignora a execução dos comandos seguintes do bloco, do laço rotulado, quando executado. int i=0, j=0; principal2: for( j=1; j<10; j++ ) { for( i=1; i<10; i++ ) { if( (i % j) == 0 ) { System.out.println( "i=" + i + " j=" + j ); continue principal2; j++;

48 Exercícios 18) Faça o cálculo do valor da variável x mais y, inteiros, sem utilizar o operador +. 19) Verifique o valor de x, imprimindo uma mensagem correspondente quando for maior, menor ou igual a 10, sem usar a cláusula if( ). 20) Faça a soma de todos os valores (inteiros) entrados como argumento do programa e exiba na tela a mensagem: A soma dos valores é = <valor>.

49 Programação Orientada ao Objeto O paradígma da Orientação ao Objeto é um mecanismo que ajuda a definir a estrutura de programas, baseado nos conceitos do mundo real, sejam eles reais ou abstratos. A Orientação ao Objeto permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre sí, por meio de mensagens. Os conceitos da OO envolvem: Classes, Objetos e seus Relacionamentos, Herança e Polimorfismo. Dentre as vantagens que a OO proporciona, podemos destacar o aumento de produtividade, reuso de código, redução das linhas de código programadas, separação de responsabilidades, encapsulamento, polimorfismo, componentização, maior flexibilidade do sistema, dentre outras vantagens.

50 Modelagem Orientada ao Objeto Os sistemas OO podem ser modelados com auxílio da UML (Unified Modeling Language). UML é uma linguagem de modelagem para especificar, modelar, visualizar e documentar sistemas OO e não-oo, baseando-se em diagramas. A UML é composta por: Diagrama de Classes Diagrama de Seqüência Diagrama de Objetos Diagrama de Casos de Uso outros...

51 Classes Uma classe, nada mais é, do que a descrição de um conjunto de entidades (reais ou abstratas) do mesmo tipo e com as mesmas características e comportamento. As classes definem a estrutura e o comportamento dos objetos daquele determinado tipo. Podemos dizer que as classes são, na verdade, modelos de objetos do mesmo tipo. Propriedades: modelo cor motor Entidade do mundo real Comportamento: liga desliga muda marcha acelera breca Modelo UML da classe

52 Classes public class Carro { String cor; String modelo; String motor; void ligar() { System.out.println( "Ligando o carro" ); void desligar() { System.out.println( "Desligando o carro" ); void acelerar() { System.out.println( "Acelerando o carro" ); void brecar() { System.out.println( "Brecando o carro" ); void mudarmarcha() { System.out.println( "Marcha engatada" ); Ao lado temos o código Java da classe Carro, definida pelo modelo UML, com base no levantamento da entidade carro do mundo real. No código definimos: declaração da classe declaração dos atributos declaração dos métodos Arquivo: Carro.java O arquivo do código-fonte sempre leva o nome da classe, seguido da extensão.java.

53 Objetos Um objeto, nada mais é do que uma instância particular de um tipo de dado específico (classe), ou seja, em outras palavras, objeto é uma entidade, do mundo computacional, que representa uma entidade do mundo real especificamente. O objeto criado fica armazenado em uma área de memória chamada heap. Os Objetos possuem: Estado (atributos/propriedades) Comportamento (métodos/ações) Identidade (cada objeto é único) Os Objetos se comunicam entre sim por meio de mensagens (chamadas aos métodos) e devem ter sua responsabilidade bem definida no sistema. Criando uma instância (objeto) de uma classe: Carro meucarro = new Carro( ); Declaração da variável que vai guardar uma referência para um objeto do tipo Carro. Operador new instancía o objeto. Construtor da classe Carro

54 Objetos As variáveis não guardam os objetos, mas sim uma referência para a área de memória onde os objetos estão alocados. Se criarmos duas instâncias da classe Carro e atribuírmos cada instância para cada uma das duas variáveis diferentes, c1 e c2, temos a situação ao lado. Carro c1 = new Carro( ); Carro c2 = new Carro( ); Imagine, agora, duas variáveis diferentes, c1 e c2, ambas referenciando o mesmo objeto. Teríamos, agora, um cenário assim: Carro c1 = new Carro( ); Carro c2 = c1;

55 Objetos Utilizando a classe Carro: class ExemploCarro { public static void main( String[] args ) { //criando uma instância da classe Carro Carro umcarro = new Carro(); //atribuindo os valores dos atributos umcarro.modelo = "Gol"; umcarro.cor = "preto"; umcarro.motor = "1.0"; //executando os métodos do objeto umcarro.ligar(); umcarro.mudarmarcha(); umcarro.acelerar(); umcarro.brecar(); umcarro.desligar(); //atribuindo null para a variável diz que //agora ela não aponta para lugar nenhum umcarro = null;

56 Garbage Collection Os objetos que não são mais referenciados, são coletados pelo Garbage Collector. O Garbage Collector libera a memória que não está mais em uso. Um objeto que perdeu sua referência é eleito a ser coletado, porém não é coletado automaticamente naquele instante. Quando um objeto se torna eletivo a Garbage Collection: // objeto criado em memória MeuObjeto obj = new MeuObjeto( ); // referência perdida eleito a ser recolhido pelo GC obj = null; Para forçar a execução do Garbage Collector: System.gc( ); Porém, nada garante que o G.C. será executado naquele instante, nem que as instâncias sem refências serão recolhidas.

57 Package e Import Package Os pacotes (packages) servem para organizar e agrupar classes por funcionalidade. Os pacotes são divididos por uma estrutura de diretórios. package meuprograma.uteis; public class ValidacaoCPF { //... package meuprograma.cadastro; public class CadastroUsuario { //...

58 Package e Import Import O import deve ser usado para declarar que usaremos classes de outro pacote. É parecido com o include de outras linguagens, como o C/C++, por exemplo. package meuprograma.cadastro; package meuprograma.uteis; import meuprograma.uteis.validacaocpf; import java.sql.*; //importa classes JDBC public class CadastroUsuario { //... public void cadastrar( Usuario u ) { //... if( ValidacaoCPF.validar( u.cpf ) ) { cadastrar( u ); else { throw new Exception( CPF Inválido ); //... public class ValidacaoCPF { public static boolean validar (String cpf) { //fazer a validação

59 Package e Import Import estático A partir do Java 5 é possível fazer o import estático, ou seja, dar import apenas nos métodos ou atributos estáticos oferecidos por uma classe, e usá-los como se fossem métodos ou atributos locais à sua classe. import static java.lang.math.*; public class TesteImportEstatico { public static void main(string[] args) { double d = sin(1); // O método sin() pertence // à classe Math import static java.lang.math.pi; public class Calculos { public double areacircunferencia(double r) { return PI * r * r;

60 Package e Import Algo importante a se destacar é que as classes possuem um nome e um nome completo (ou fully qualified name). O nome da classe é aquele informado na definição da classe. Exemplo: public class MinhaClasse { Neste caso o nome da classe é MinhaClasse. O nome completo da classe compreende o nome da classe mais a sua hierarquia completa de packages a qual pertence. Exemplo: package meu.pacote; public class MinhaClasse { Neste caso o nome completo da classe é meu.pacote.minhaclasse.

61 Atributos Os atributos de uma classe são variáveis com o escopo do objeto. São acessíveis e estão disponíveis enquanto o objeto estiver disponível. Os atributos são iniciados durante a criação do seu objeto. Durante a criação do objeto, os atributos de: tipos primitivos numéricos recebem 0 (zero) na iniciação; tipo char recebe o valor '\u0000'; tipo boolean recebe false; referência a objetos recebem null na iniciação. Porém, os atributos podem receber um valor padrão, definido na sua declaração, como no código abaixo: class UmaClasse { String valorinicial = "um valor qualquer"; int i = 1000;

62 Atributos Estáticos Atributos estáticos não precisam de uma instância da classe para serem usados Eles são compartilhados por todas as instâncias da classe Não são thread-safe (cuidado ao usá-los) class Contador { static int count = 0; void incrementar() { count++; public static void main( String[] args ) { Contador c = new Contador(); c.incrementar(); System.out.println( Contador.count ); Contador.count++; System.out.println( c.count );

63 Constantes Constantes são atributos de uma classe que não mudam de valor O modificador final indica que o atributo é imutável public class Matematica { static final double PI = ; static double areacircunferencia( double r ) { return PI * r * r; static double perimetrocircunferencia( double r ) { return PI * r;

64 Métodos A utilidade dos métodos é a de separar, em pedaços de códigos menores, uma determinada função. É aconselhável criar e manter métodos pequenos, seguindo uma regrinha básica: Se o método tem scroll na tela, quebre-o em métodos menores. Isso facilita a leitura e o entendimento do código e a manutenção. Regras para se criar métodos: Serem bem claros e ter uma função bem definida Serem pequenos e fáceis de entender Serem reaproveitáveis ao máximo

65 Métodos A sintaxe para a declaração dos método é a seguinte: <tipo de retorno> <nome do método>( [lista dos atributos] ) { // implementação do método O tipo de retorno informa qual o tipo de dados o método retorna. Pode ser um tipo primitivo ou um tipo de um classe. Caso o método não retorne nada, ele deve ser void. O nome do método pode ser qualquer. Prefira seguir os padrões de nomenclatura e dar nomes significativos, de preferência verbos no infinitivo. A lista de atributos não precisa ser informada se não há passagem de argumentos. Caso haja, os argumentos devem ser informados com seu tipo e nome, separados por vírgula se houver mais de um.

66 Retorno dos Métodos A palavra reservada return causa o retorno do método. Quando os métodos são declarados com o tipo de retorno void, então o método não pode e nem deve retornar nada. Os métodos que retornam algum valor, devem retornar dados do tipo de retorno declarado, ou de tipos compatíveis. Veja o exemplo: public class TesteRetorno { public void naoretornanada() { int i = (int)(math.random() * 100); if( i > 50 ) { return; //aborta o método System.out.println( OK ); int somar( int a, int b ) { return a + b; Carro criarumcarro() { Carro c = new Carro(); c.modelo = "Ferrari"; c.cor = "vermelha"; c.motor = "5.0 V12"; return c;

67 Métodos public class DeclaracaoDeMetodo { public static void main( String[] args ) { DeclaracaoDeMetodo dm = new DeclaracaoDeMetodo(); dm.fazeralgo(); dm.imprimirnatela( "Daniel" ); int soma = dm.somar( 2, 3 ); Carro meucarro = dm.criarumcarro(); void fazeralgo() { //este método não faz nada void imprimirnatela( String nome ) { System.out.println( "Meu nome é " + nome ); int somar( int a, int b ) { return a + b; Carro criarumcarro() { Carro c = new Carro(); c.modelo = "Ferrari"; c.cor = "vermelha"; c.motor = "5.0 V12"; return c;

68 Métodos Estáticos Métodos estáticos não precisam de uma instância da classe para serem usados Métodos estático NÃO podem chamar métodos não-estáticos sem uma instância Não são thread-safe (cuidado ao usá-los) class MetodoEstatico { public static void main( String[] args ) { MetodoEstatico me = new MetodoEstatico(); me.metodonaoestatico(); me.metodoestatico(); MetodoEstatico.metodoEstatico(); metodoestatico(); static void metodoestatico() { //metodonaoestatico(); //ERRADO // (new MetodoEstatico()).metodoNaoEstatico(); //OK void metodonaoestatico() { metodoestatico(); //OK

69 Construtores Construtores não são métodos, são construtores. Eles fazem a função de iniciação (start up) do objeto criado. Se nenhum construtor for declarado, um construtor default será criado. Múltiplos construtores podem ser declarados (overloading). public class MinhaClasse { //sem construtor default public class NotaFiscal { private int numero; public NotaFiscal() { //Construtor Default this( novonumero() ); public class MinhaClasse { public MinhaClasse() { //Construtor Default public NotaFiscal( int numero ) { this.numero = numero; public int novonumero() { int i; //gera novo numero em i return i;

70 Construtores Usando os diferentes construtores: public class Venda { public Venda() { //Construtor Default public void fecharvenda() { //cria uma NF com um numero gerado NotaFiscal nf = new NotaFiscal(); //cria uma NF com um numero definido NotaFiscal nf2 = new NotaFiscal( );

71 Exercícios 21) Crie classes que descrevam objetos que representem diferentes figuras geográficas, por exemplo: círculo, quadrado e retângulo. 22) Adicione métodos nas classes para calcular e retornar a área da própria figura.

72 Passagem de Parâmetros Passagem de parâmetros, em Java, é por valor (não tem por referência) Parametros alterados dentro de um método, não serão alterados fora dele Objeto passado como parâmetro apenas passa uma cópia da referência ao objeto Referência alteradas dentro do método, não refletem fora dele. Alteração no estado de um objeto, como um parâmetro, alteram o estado dele fora //... int i = 10; System.out.println( "i=" + i ); alterar( i ); System.out.println( "i=" + i ); //... void alterar( int i ) { i = i * 999; System.out.println( "i=" + i );

73 Passagem de Parâmetros Carro meucarro = new Carro( ); meucarro.modelo = "Gol"; meucarro.cor = "preto"; meucarro.motor = "1.0 16v"; System.out.println( meucarro.modelo ); realidade( meucarro ); System.out.println( meucarro.modelo ); sonho( meucarro ); System.out.println( meucarro.modelo ); void realidade( Carro c ) { // eu quero que ele mude, mas não muda! // c nunca será alterado fora do método Carro c2 = new Carro( ); c2.modelo = "Porsche"; c2.cor = "prata"; c2.motor = "4.0"; c = c2; void sonho( Carro c ) { // aqui alteramos o estado do objetos e // reflete fora do método, mas é só um sonho c.modelo = "Porsche"; c.cor = "prata"; c.motor = "4.0";

74 Passagem de Parâmetros Contornando o problema de passagem por valor de tipos primitivos: Utilizar arrays (array é um objeto) //... int[ ] i = { 1 ; modificar( i ); //... void modificar( int[ ] i ) { i[0] = ;

75 Varargs No Java 5 foi introduzido o Vargars, que permite a passagem de um número variável de argumentos a um método. Dentro do método os argumentos variáveis são tratados como arrays do tipo que foi definido. No caso dos exemplos abaixo, um array de int (int[ ]) ou de String. Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar arrays com valores e passar aos métodos. void metodo( int... args ) { for( int i : args ) { System.out.println( i ); void novometodo( long i, String... args ) { for( int s : args ) { System.out.println( s ); // chamadas metodo( 1 ); metodo( 1, 2, 3 ); novometodo( 1L, a ); novometodo( 9L, a, b, c );

76 Modificadores de Acesso Determinam a visibilidade dos membros (atributos e métodos) da classe e da própria classe Devem ser usados na declaração dos membros e da classe Ao todo são quatro modificadores: public, protected, default e private [modificador] class Pessoa { [modificador] String nome; [modificador] int idade; [modificador] void imprimirnomeidade() { System.out.println("nome="+nome); System.out.println("idade="+idade); public Pode ser acessado por todo mundo protected Pode ser acessado por subclasses e classes do mesmo pacote default Pode ser acessado por classes do mesmo pacote private Pode ser acessado apenas pela própria classe

77 JavaBeans Os JavaBeans são componentes Java (classes) bem encapsulados e com um propósito específico. Seus atributos não podem ser acessados diretamente, mas apenas por meio de métodos set e get. Segundo o encapsulamento, os atributos não podem ser alterados diretamente. public class Pessoa { private String nome; private int idade; public Pessoa() { public void setnome( String nome ) { this.nome = nome; public void setidade( int idade ) { this.idade = idade; public String getnome() { return nome; public int getidade() { return idade;

78 Exercícios 23) Complemente as classes do exercício 22, mudando os modificados de acesso dos atributos e métodos da classe, encapsulando-as como JavaBeans, de forma com que os seus atributos possam ser acessados apenas por meio de métodos getter e setter.

79 Arrays Array é uma coleção ordenada de primitivos, referências para objetos e outras arrays. Os arrays em Java são homogêneos, ou seja, eles só podem conter dados do mesmo tipo. Os arrays são objetos, e devem ser construídos antes de serem usados. Os array são iniciados automaticamente quando criados. Passos para utilizar arrays: Declaração Criação Iniciação int[ ] umarray; umarray = new int[ 10 ]; umarray[ 0 ] = 0; umarray[ 1 ] = 999; short[][] jogodavelha = new short[3][3]; double[] d = { 1.0d, 0.99, 3.14 ; Carro[ ] estoque = new Carro[10]; estoque[0] = new Carro( ); estoque[1] = new Carro( ); //... estoque[9] = new Carro( ); estoque[1].modelo = Gol ; estoque[1].cor = preto ; estoque[1].motor = 1.0 ;

80 Arrays Podemos percorrer os array de forma automática, usando o laço for( ) O índice dos arrays vai de 0 (zero) até N-1 (onde N é o tamanho do array) Outra forma de se percorrer os itens do array é através do enhanced for public class PercorrendoArray { public static void main( String[] args ) { double[] precos = new double[100]; //aqui sabemos o tamanho do array (fixo) for(int i=0; i<100; i++) { precos[i] = Math.round(Math.random() * 10000) / 100.0; //aqui não importa o tamanho (variável) for(int i=0; i<precos.length; i++) { precos[i] = i * 0.9; //enhanced for loop for(double p: precos) System.out.println(p); Arrays não mudam de tamanho. Acessar um índice inexistente do array causa uma exceção do tipo: ArrayIndexOutOfBoundsException

81 Exercícios 24) Crie um programa que armazene as notas de provas de 50 estudantes e crie um método que calcule e retorne a somatória das notas de todos os estudantes. Imprima o valor no console. 25) Crie um outro método no programa que liste as notas de todos os estudantes. 26) Crie um outro método no programa que calcule e retorne a média ponderada das notas de todos os estudantes. Imprima o valor no console. Dica: reutilize o método de calcular a somatória das notas. Nota: O programa deverá chamar uma outra classe que faça todos estes cálculos e listagens.

82 Herança (extends) Herança é uma característica da POO que permite que classes (filhas) herdem e estendam as funcionalidades e as características de outras classes (mãe). Uma subclasse (classe filha) é uma especialização da sua superclasse (classe mãe). Este é um relacionamento do tipo é um. A subclasse é uma superclasse. Em Java, a herança é conseguida através da palavra extends Toda classe, por padrão, estende a classe java.lang.object Todos os métodos e atributos (public e protected) são herdados pela subclasse (filha) Os construtores não são herdados class MyClass { class ClasseA { class MyClass extends Object { class ClasseB extends ClasseA { Diagrama UML

83 Herança (extends) Java não permite herança múltipla, ou seja, uma classe herda de apenas uma única classe. A palavra super referencia a superclasse. O construtor da superclasse é chamado automaticamente, se outra chamada não for feita. public class Pessoa { protected String nome; protected String cpf; public Pessoa() { public class Empregado extends Pessoa { public Empregado() { super(); //ocorre automaticamente public class Gerente extends Pessoa { Diagrama UML

84 Herança (extends) Tirando vantagem da herança: Todas as classes são subtipos da classe Pessoa. Podemos dizer que Empregado e Gerente são Pessoas. public class TesteHeranca { public static void main( String[] args ) { Pessoa p = new Pessoa(); Pessoa e = new Empregado(); Pessoa g = new Gerente();

85 Herança (extends) Melhorando o modelo: Gerente, ao invés de Pessoa, pode ser definido como um Empregado. public class Gerente extends Empregado { public class RH { public static void main(string[] args) { Gerente chefe = new Gerente(); Empregado emp = new Empregado(); pagarsalario( chefe ); pagarsalario( emp ); promoveremp( chefe, emp ); public static void pagarsalario( Empregado e ) { //faz lançamento do pagamento de salário public static void promoveremp( Gerente g, Empregado e ) { //Apenas um gerente pode promover um empregado

86 Herança (extends) Overriding (sobrescrita) de métodos herdados public class ClasseA { public void metodo1() { System.out.println( ClasseA.metodo1() ); public class ClasseB extends ClasseA { public void metodo1() { System.out.println( ClasseB.metodo1() ); public void metodo2() { System.out.println( ClasseB.metodo2() ); public class TesteAB { public static void main(string[] args) { ClasseA a = new ClasseA(); a.metodo1(); a = new ClasseB(); a.metodo1(); ClasseB b = new ClasseB(); b.metodo1(); b.metodo2();

87 Conversão de Objetos Assim como a conversão de tipos primitivos, também podemos fazer a conversão de objetos. Podemos converter os tipos, baseando-se na topologia da hierarquia de classes e subclasses. Subtipos podem ser fácilmente convetidos para seus supertipos, sem explicitar o casting. Na conversão de um supertipo para um subtipo, obrigatoriamente o objeto deve ser do subtipo. //... Object obj = new String( Texto ); String str = (String) obj; Pessoa p = new Gerente(); Empregado e = (Empregado) p; Gerente g = (Gerente) p; Empregado emp = (Gerente) p; //Gerente chefe = new Empregado(); //ERRADO

88 Overriding O overriding (sobrescrita) ocorre quando um método de uma superclasse é sobrescrito por um método de mesmo nome de uma subclasse. Os métodos sobrescritos da subclasse não podem ter um modificador mais restritivo que o modificador do método de sua superclasse. public class ClasseA { public void metodo1() { System.out.println( ClasseA.metodo1() ); public class ClasseB extends ClasseA { public void metodo1() { System.out.println( ClasseB.metodo1() );

89 Overloading O overloading (sobrecarregamento) ocorre quando mais de um método com o mesmo nome é implementado. Overloading pode se dar apenas pela diferenciação dos argumentos do método. public class ValidacaoCPF { public boolean validar(string cpf) { return validar( Integer.parseInt( cpf ) ); public boolean validar(int cpf) { //faz as verificações do CPF return false; public boolean validar(int cpf, int digito) { return validar( (cpf*100) + digito );

90 this e super As palavras reservadas this e super são muito importantes e úteis. this referencía a própria instância de dentro de sua classe. Ela não pode ser usada em métodos estáticos. super referencía a superclasse de uma classe. public class SuperClasse { public void executar() { public class ThisESuper extends SuperClasse { private int var1; public static void main(string[] args) { ThisESuper ts = new ThisESuper(); ts.metodo1(); public ThisESuper() { super(); //chama o construtor da superclasse public void metodo1(int i) { this.var1 = i; //executa o método executar da superclasse super.executar();

91 Classes Internas As classes internas (Inner classes) também são chamadas de classes aninhadas. As classes internas são classes normais, porém são definidas dentro de uma classe ou método. As classes internas que não são declaradas dentro de métodos são chamadas de classes membro. public class OuterClass { Neste caso, os nomes completo das classes são: OuterClass e OuterClass.InnerClass. private int x; public class InnerClass { private int y; private void innermethod() { System.out.println( y = + y ); public void outermethod() { System.out.println( x = + x );

92 Classes Internas As classes internas precisam de uma instância da classe externa para serem criadas. As classes externas atuam como o contexto das classes internas. As classes internas podem acessar os membros de sua classe externa, bem como sua instância. public class OuterClass { private int x; public class InnerClass { private int y; private void innermethod() { System.out.println( x (externo) = + x ); System.out.println( y = + y ); outermethod( ); public void outermethod() { System.out.println( x = + x );

93 Classes Internas Para instanciar uma classe interna, de um método estático ou de outra classe, devemos fazer o seguinte: OuterClass o = new OuterClass(); InnerClass i = o.new InnerClass(); Para instanciar uma classe interna, de dentro de sua classe externa, apenas precisamos fazer assim: InnerClass i = new InnerClass();

94 Classes Internas Estáticas As classes internas estáticas pertencem à classe externa, ao invés de uma instância de objeto da classe externa, em particular. Ou seja, elas não precisam de uma instância da sua classe externa. public class OuterClass { public static class StaticInnerClass { public static void main( String[] args ) { StaticInnerClass sic = new OuterClass.StaticInnerClass();

95 Classes Internas a Métodos As classes internas aos métodos não são consideradas membros da classe, mas apenas local ao método. Essas classe têm acesso aos membros da sua classe externa, bem como às variáveis locais e parâmetros do método, desde que marcadas como final. public class OuterClass { private int m = 10; public void fazeralgo( int a, final int b ) { int x = a + b; final int y = a b; class MethodInnerClass() { public void metodo() { System.out.println( m = + m ); System.out.println( b = + b ); System.out.println( y = + y ); MethodInnerClass mic = new MethodInnerClass(); mic.metodo();

96 Classes Anônimas Classes Anônimas são classes que não possuem um nome. Ela estendem uma classe ou implementam uma interface. Não é permitido estender uma classe e implementar uma ou mais interfaces ao mesmo tempo. A definição, criação e o primeiro uso ocorrem, de fato, no mesmo lugar. São, geralmente, muito utilizadas com o Listeners e Action handlers do pacote gráfico swing e awt. public void ummetodo( ) { jbutton1.addactionlistener( new ActionListener() { public void actionperformed( ActionEvent e ) { System.out.println( Uma ação ocorreu ); Object o = new JButton() { // estensão da classe JButton ;

97 Classes Anônimas Exemplo de classe anônima. public class MinhaClasse( ) { public MinhaClasse() { //Construtor default public MinhaClasse( String s ) { //Construtor com parâmetros MinhaClasse m = new MinhaClasse() { ; MinhaClasse m2 = new MinhaClasse( teste ) { ; Ambas são subclasses de MinhaClasse, mas cada uma é iniciada de modo diferente (construtores diferentes).

98 Classe Abstrata Quanto mais genéricas, as classes podem ser tornar muito abstratas, na hierarqia de classes. A classe chega a ser tão genérica que não precisa de uma instância dela na aplicação. Essa classe acaba servindo de modelo para suas subclasses. Essas são as classes abstratas. A classe abstrata pode ter métodos implementados, porém deve ter ao menos um método abstrato, ou seja, um método que uma subclasse concreta deve implementar. Classes abstratas não podem ser instanciadas. Imagine um sistema de envio de mensagens do tipo texto e fax. Não faria sentido ter uma instância de Mensagem, mas sim uma de MensagemTexto ou MensagemFax.

99 Classe Abstrata public abstract class Mensagem { private String from; private String msg; public Mensagem( String remetente ) { from = remetente; public void corpomensagem(string msg) { this.msg = msg; public abstract void enviar(); public class MensagemFax extends Mensagem { public class MensagemTexto extends Mensagem { public MensagemTexto( String remetente ) { super( remetente ); public void enviar() { //envia uma mensagem de texto public class ServicoMensagens { public static void main(string[] args) { Mensagem m = new MensagemTexto( Daniel ); m.corpomensagem( Mensagem de teste TXT ); m.enviar(); public MensagemFax( String remetente ) { super( remetente ); public void enviar() { //envia uma mensagem de fax m = new MensagemFax( Daniel ); m.corpomensagem( Mensagem de teste FAX ); m.enviar();

100 Interface As interfaces atuam como um contrato para as classes que a implementam. Nas interfaces você define os métodos que deverão ser providos pela classes. As classes que implementam esta interfaces, deve oferecer uma implementação para cada método definido na sua interface. As classes podem implementar mais de uma interface. Pode-se usar interfaces para uso de funções de callback. public interface Figura { public double calculararea(); public class Circulo implements Figura { public double calculararea() { //faz o cáculo da área do círculo public class Quadrado implements Figura { public double calculararea() { //faz cálculo da área do quadrado Cada classe implementam o método à sua maneira. Mas o mais importante é que eles ofereçam uma implementação para aquele método da interface. Interfaces são adequadas para se definir formas (interfaces) de acesso a sub-sistemas, escondendo detalhes da sua implementação.

101 Interface Vejamos como utilizar uma interface: Figura fig = new Circulo(10); double area = fig.calculararea(); fig = new Quadrado(8); area = fig.calculararea(); *** Interface Java não tem nada a ver com interfaces gráficas.

102 Interface Agora, vamos ver um exemplo mais prático de uso de interfaces em Java. public interface CadastroUsuario { public void inserir( Usuario usr ) throws Exception; public class CadastroUsuarioBanco implements CadastroUsuario { public void inserir( Usuario usr ) throws Exception { //insere os dados no banco public class CadastroUsuarioArquivo implements CadastroUsuario { public void inserir( Usuario usr ) throws Exception { //insere os dados no arquivo //... CadastroUsuario cad = new CadastroUsuarioBanco(); cad.inserir( usuario ); cad = new CadastroUsuarioArquivo(); cad.inserir( usuario ); //...

103 Type Safe Enums Outra funcionalidade adicionada ao Java 5 foi o Type Safe Enums, que permite se criar enumerações em Java, assim como existem em outras tecnologias. É definido pela palavra reservada enum, e cada item da enumeração é representado por um objeto do mesmo tipo do Enum. A definição de um Enum é nada mais do que a definição de um tipo especial de classe. Se estiverem em outro pacote, precisam ser importadas, como classes normais. public enum Cargo { PROGRAMADOR, ANALISTA, ARQUITETO, COORDENADOR Cargo c = Cargo.PROGRAMADOR; Cargo x = Enum.valueOf( Cargo.class, ANALISTA ); for( Cargo y : Cargo.values() ) { System.out.println( y );

104 Type Safe Enums public enum Cargo { PROGRAMADOR( 1000 ), ANALISTA( 2000 ), ARQUITETO( 3000 ), COORDENADOR( 4000 ); As enumerações ainda podem conter informações e métodos adicionais. Cargo( int salario ) { this.salario = salario; private int salario; public int getsalario() { return this.salario; Cargo c = Cargo.PROGRAMADOR; System.out.println( c + : + c.getsalario() );

105 Controle de Erros (Exceções) A linguagem Java oferece um precioso mecanismo de controle e tratamento de erros dos programa, chamado de tratamento de exceções. Em Java, todo e qualquer erro é chamado de exceção. Este mecanismo de tratamento de erros em Java é feito pelas diretivas try, catch e finally. A sintaxe dessas diretivas é a seguinte: try { código_a_ser_executado catch( Exceção ) { código_de_tratamento_de_erro finally { código_sempre_executado Podem existir múltiplos blocos catch no tratamento de erros. Cada um para um tipo específico de Exception.

106 Controle de Erros (Exceções) public class TratamentoDeErro { public static void main( String[] args ) { // array de 6 posições int[] array = {0, 1, 2, 3, 4, 5; try { for(int i=0; i<10; i++ ) { array[i] += i; System.out.println("array[" + i + "] = " + array[i]); System.out.println("Bloco executado com sucesso"); catch( ArrayIndexOutOfBoundsException e ) { System.out.println("Acessou um índice inexistente"); catch( Exception e ) { System.out.println("Outro tipo de exceção ocorreu"); finally { System.out.println("Isto SEMPRE executa!");

107 Controle de Erros (Exceções) Todo erro, ou condição especial, em Java é uma subclasse da classe Throwable. Porém existem 3 diferentes tipos de erros: Erro de Runtime (java.lang.runtime) Erro de Sistema (java.lang.error) Erro Customizado (java.lang.exception) Os erros de Runtime são causados por bugs do programa, que desconhecemos, ou seja, uma condição especial que sequer havíamos imaginado. Os erros de Runtime são subclasses da classe Runtime, que é subclasse de Exception. Os erros de sistema são erros imprevisíveis, causados por falha do sistema, como acesso a disco, erro do banco de dados e etc. Estes erros são subclasses da classe Error. E os erros Customizados são erros ou condições especiais previstas no programa. Essos erros são subclasse da classe Exception.

108 Gerando Erros (Exceções) Podemos querer tratar erros de lógica da nossa aplicação. Imagine um aplicativo de controle bancário, onde ele controla os débitos em uma conta corrente. Um cenário possível é o cliente tentar fazer um saque no caixa, acima do valor do seu saldo. Poderíamos tratar este caso como uma exceção. Para isso, podemos criar nossa própria classe de exceção, chamada SaldoInsuficienteException, que deve ser uma subclasse de Exception. Quando nossa aplicação identificar o cenário acima, podemos então lançar a nossa exceção e tratar isso. Veja: try { if( saldo < valorretirada ) { throw new SaldoInsuficienteException( ); debitarvalornaconta( valorretirada ); catch( SaldoInsuficienteException e ) { System.out.println( Saldo Insuficiente para a retirada ); A diretiva throw lança um erro, para que um bloco catch o capture e faça o tratamento necessário.

109 Gerando Erros (Exceções) Imagine que nossa classe possua um método atômico, ou seja, uma função específica que deve ser executada com sucesso ou abortada por interior. Ao invés de fazer o tratamento de erro dentro dela, podemos fazer com que o próprio método delegue o erro para o método que o chamou. O exemplo anterior é um bom exemplo para isso. Imagine o seguinte método: public boolean fazerretidada( double valorretirada ) throws SaldoInsuficienteException { if( saldo < valorretirada ) { throw new SaldoInsuficienteException(); debitarvalornaconta( valorretirada ); return true; Ele agora está mais simples, sem as diretivas try / catch / finally. Agora, então podemos tratar o erro num nível mais alto, ou seja, onde o método de fazerretidada( ) foi chamado. Exemplo: try { fazerretidada( ); catch( SaldoInsuficienteException e ) { System.out.println( Saldo Insuficiente para a retirada ); A diretiva throws repassa um método lançado dentro do método e que não foi tratado por nenhum bloco catch dentro dele.

110 Gerando Erros (Exceções) Criando nossa Exceção customizada: public class SaldoInsuficienteException extends Exception { public SaldoInsuficienteException() { super(); public SaldoInsuficienteException(String msg) { super( msg );

111 Pacote java.lang Este é o pacote essencial do Java, e contém as classes centrais para operações do Java. O compilador automaticamente importa as classes deste pacote. Possui classes importantes como: Object, String, StringBuffer, Math e as classes wrapper. Classe: Object É a classe base do Java, último antecessor de todas as outras classes. Todas as classes possuem todos os métodos da classe Object. Possui os métodos wait( ), notify( ) e notifyall( ), que suportam controle de threads, além dos métodos equals() e tostring(). Classe: Math A classe Math possui um conjunto de métodos e 2 constantes para suportar computação matemática. A classe é final e não pode ser estendida. O construtor é private, portanto não pode ser instanciado. Constantes: Math.PI e Math.E Possui método para cálculo de: valor absoluto, arredondamento para cima e para baixo, comparação do maior e menor valor, número aleatório, arredondamento, seno, coseno, tangente e raiz quadrada.

112 Pacote java.lang Estas classes encapsulam cadeias de caracteres Unicode (16 bits) e suportam alfabetos internacionais. Classe: String A classe String guarda uma String imutável. Uma variável da classe String aponta para uma área de memória que contém a String. Esta classe possui muitos métodos para manipular a String. String str = String 1 ; String texto = str; str = Nova String ; if( str.equals( texto ) ) { //Não é igual str = str.concat( com novo texto ); Classe: StringBuffer Um objeto da classe StringBuffer representa uma String que pode ser modificada dinamicamente. É ideal para manipular grande quantidades de textos. StringBuffer sb = new StringBuffer( Isto é uma String ); sb.append( dentro de um StringBuffer ); sb.insert( 11, grande ); StringBuffer rev = new StringBuffer( ); rev.reverse();

113 Pacote java.lang Classes Wrapper (Envoltórias) Todo tipo primitivo em Java tem uma classe Wrapper correspondente. Esta classe encapsula um valor de tipo primitivo e é imutável. Tipo Primitivo boolean byte char short int long float double Wrapper Class Boolean Byte Character Short Integer Long Float Double boolean b = false; Boolean wb = new Boolean( b ); wb = new Boolean( true ); Integer wint = new Integer( ); wint = new Integer( 123 ); int i = wint.intvalue(); if( Character.isDigit( 1 ) ) { Long wlong = Long.valueOf( 23L ); Long xlong = new Long( 33 ); //comparação if( wlong.equals( xlong ) ) {

114 Auto Boxing / Unboxing Antes do Java 5, a manipulação de dados entre tipos primitivos e classe wrappers era trabalhosa e chata. No Java 5 foi inserido o conceito de Auto Boxing e Unboxing, que permite a conversão do tipos primitivos em wrappers e vice-versa, de uma maneira muito mais intuitiva e produtiva. Este conceito também se aplica a passagem de parâmetros a métodos. Antigamente fazíamos assim: int x = 10; Integer i = new Integer(x); Integer y = x + i.intvalue(); x = i.intvalue(); i = new Integer(y); Hoje o uso foi facilitado para: int x = 10; Integer i = x; Integer y = x + i; x = i; i = y;

115 Pacote java.util O pacote java.util contém classes do framework de collections, modelo de eventos, data, hora, internacionalização e classes de outras utilidades (StringTokenizer, etc). Collections (Coleções) A interface Collection é a interface base de todas as classes que implementam uma coleção. Ela define métodos para adicionar itens, limpar a coleção, remover itens, transformar para array, iterar pelos itens, ver o tamanho e etc. Vector A classe Vector representa um array dimensionável. Pode ser acessado por um índice. O Vector é sincronizado, ou seja, ele sincroniza o acesso de processos concorrentes. O Vector pode armazenar diferentes tipos de objetos ao mesmo tempo, pois ele recebe um Object como argumento. Vector vec = new Vector( ); vec.add( String 1 ); vec.add( String 2 ); vec.add( String 3 ); Iterator it = vec.iterator( ); while( it.hasnext( ) ) { String str = (String) it.next( );

116 Pacote java.util ArrayList Esta classe é muito similar à classe Vector, porém ela não é sincronizada, portanto, mais rápida. ArrayList list = new ArrayList( ); list.add( String 1 ); list.add( String 2 ); list.add( String 3 ); Iterator it = list.iterator( ); while( it.hasnext( ) ) { String str = (String) it.next( ); List As classes Vector, ArrayList, LinkedList e outras, implementam a interface List. Essas coleções, então, poderão ser acessadas pelo métodos comuns da interface List. List lst = new Vector( ); List lst2 = new ArrayList( ); //...

117 Pacote java.util Hashtable O Hashtable guarda valores com chave e valor, não permitindo valores null. Para recuperar um valor, pede-se pelo seu nome (chave). Pode-se pegar um Enumeration com todas as chaves da coleção. Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3)); Integer n = (Integer)numbers.get("two"); if(n!= null) { System.out.println("two = " + n); Enumeration e = numbers.keys(); while( e.hasmoreelements() ) { String key = (String) e.nextelement(); System.out.println(key+ = +numbers.get(key));

118 Pacote java.util Properties Esta classe é uma coleção de propriedades, do tipo chave e valor. Os dados pode ser escritos ou lidos de uma Stream (ver sobre Stream). Cada chave da propriedade te seu valor, único. Esta classe estende a classe Hashtable. import java.io.*; import java.util.*; public class Propriedades { public static void main( String[] args ) { File f = new File( C:\\teste.prop ); FileInputStream fis = null; try { fis = new FileInputStream( f ); Properties prop = new Properties( ); prop.load( fis ); Enumeration e = prop.keys(); while( e.hasmoreelements() ) { String chave = (String) e.nextelement(); System.out.println( chave + = + prop.getproperty(chave) ); catch( Exception e ) { e.printstacktrace(); finally { if( fis!= null ) try { fis.close(); catch(exception e) {

119 Pacote java.util Properties Gravando os dados de um Properties: import java.io.*; import java.util.*; public class Propriedades2 { public static void main( String[] args ) { File f = new File( C:\\teste.prop ); FileOutputStream fos = null; FileInputStream fis = null; try { fis = new FileInputStream( f ); Properties prop = new Properties( ); prop.load( fis ); fis.close(); prop.setproperty( d, D ); prop.setproperty( e, E ); fos = new FileOutputStream( f ); prop.store( fos, null ); catch( Exception e ) { e.printstacktrace(); finally { if( fos!= null ) try { fos.close(); catch(exception e) {

120 Pacote java.util StringTokenizer Esta classe permite quebrar uma String em tokens (palavras), pelo caracter separador. StringTokenizer st = new StringTokenizer( isto é um teste"); while( st.hasmoretokens() ) { System.out.println( st.nexttoken() ); StringTokenizer st = new StringTokenizer( outro;teste;da;classe, ; ); while( st.hasmoretokens() ) { System.out.println( st.nexttoken() );

121 Pacote java.util Date A classe Date representa um instante de tempo específico, medido em milisegundos. O tempo em milisegundos é calculado a partir do dia 01/Jan/1970. Date agora = new Date(); //instante atual GregorianCalendar Esta classe é uma implementação concreta da classe java.util.calendar, e ofere métodos e funcionalidades para manipular datas no formato do calendário gregoriano. Calendar calendar = new GregorianCalendar(); Date trialtime = new Date(); calendar.settime(trialtime); System.out.println("ERA: " + calendar.get(calendar.era)); System.out.println("YEAR: " + calendar.get(calendar.year)); System.out.println("MONTH: " + calendar.get(calendar.month)); System.out.println("WEEK_OF_YEAR: " + calendar.get(calendar.week_of_year)); System.out.println("WEEK_OF_MONTH: " + calendar.get(calendar.week_of_month)); System.out.println("DATE: " + calendar.get(calendar.date)); System.out.println("DAY_OF_MONTH: " + calendar.get(calendar.day_of_month)); System.out.println("DAY_OF_YEAR: " + calendar.get(calendar.day_of_year)); System.out.println("DAY_OF_WEEK: " + calendar.get(calendar.day_of_week)); System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(calendar.day_of_week_in_month)); System.out.println("AM_PM: " + calendar.get(calendar.am_pm)); System.out.println("HOUR: " + calendar.get(calendar.hour)); System.out.println("HOUR_OF_DAY: " + calendar.get(calendar.hour_of_day)); //

122 Generics Generics foi introduzido no Java 5, para ajudar o desenvolvedor a escrever código mais claros, conciso e diminuir a ocorrência de erros de tempo de execução, principalmente durante a manipulação de coleções de objetos (ClassCastException). Com Generics podemos definir qual o tipo de dados vamos trabalhar com uma determinada coleção ou lista. No exemplo abaixo, implementado sem o uso de Generics, adicionamos qualquer tipo de objetos na lista e quando os recuperamos, esperando um tipo particular de objeto, podemos nos deparar com um ClassCastException, como na linha 4, o que é comum ocorrer. List l = new ArrayList(); l.add( new Integer(1) ); l.add( new Double(2.0) ); Integer i = (Integer) l.get(1); Com Generics este problema é eliminado, e a verificação de tipos é feita em tempo de compilação, não mais em tempo de execução, evitando problemas futuros. List<Integer> l = new ArrayList<Integer>(); l.add( new Integer(1) ); l.add( new Double(2.0) ); // erro Integer i = l.get(1);

123 Generics Podemos, inclusive, definir classes (tipos) que também aceitam o uso de Generics, para definir o tipo de objeto que eles trabalharão. public class ListaLigada<T> { public <T> buscar( int i ) { //busca e retorna o item public void adicionar( <T> t ) { // adiciona item public void remover( <T> t ) { // remove o item

124 Arquivos jar Os arquivos jar são um forma de empacotar as classes de uma API ou aplicação. JAR é a sigla para Java ARchive. Ao invés de termos várias classes soltas e espalhadas, podemos agrupá-las todas em um arquivo jar. O arquivo jar não é nada mais que um arquivo zip, com extensão.jar. A ferramento jar que vem no JDK nos auxilia na geração dos pacotes jar. Para criar o jar, execute a seguinte linha de comando: jar -cf nome-do-jar.jar *.class Ele criará um novo arquivo chamado nome-do-arquivo.jar com todas as classes java dentro dele. Outros arquivos podem ser adicionados ao jar, além das classes do java. Empacotando os arquivos em um jar podemos utilizá-lo incluindo o jar no classpath do programa: java cp nome-do-jar.jar ClassePrincipal Onde a ClassePrincipal é a classe que contém o arquivo jar. Como todos os arquivos de dentro do jar estarão no classpath, podemos acessá-lo de dentro do java da seguinte forma: getclass().getresourceasstream( nome-do-arquivo );

125 Javadoc O processo de documentação deveria ser intrínseco ao processo de criação do código-fonte. Este deveria documentar todo o código escrito, sua funcionalidade, as entradas e saídas, possíveis erros e efeitos colaterais. O Java possui uma ferramenta, parte da JSE, que facilita a criação de documentos a partir da documentação feita no próprio código-fonte, o Javadoc. O Javadoc, em geral, pode ser criado pela própria IDE de desenvolvimento, ou por linha de comando. Para criar o Javadoc em linha de comando, execute o comando javadoc que vem com o JDK.

126 I/O A I/O (entrada e saída) do Java pode ser facilmente manipulada utilizando as classes do pacote java.io, que trabalham com fluxos de dados (data streams), serialização e sistemas de arquivos. Atualmente existe um novo pacote, chamado de java.nio (new I/O), que é uma estensão do pacote padrão de I/O, porém não vamos estudá-lo neste curso. File Esta classe é uma representação abstrata de um arquivo ou diretório do arquivo de sistemas. File arq = new File( C:\\texto.txt ); //arq representa o arquivo texto.txt File dir = new File( C:\\tmp ); //dir representa o diretório c:\tmp if( dir.exists() && dir.isdirectory() ) { String[] arqs = dir.list(); //lista os arquivos A classe File oferece métodos comuns para verificar se o caminho existe na máquina local, criar ou remover o arquivo/diretório com o nome especificado, pegar o caminho completo do arquivo/diretório, lista todos os arquivos do caminho do diretório, verificar as propriedades do arquivo (data, readonly, etc) e outras funcionalidades. O Java usa duas representações para textos: Unicode internamente e UTF para I/O. Não acessaremos os dados destes arquivos diretamente. Para isso faremos uso dos Streams (fluxos) de entrada e saída de dados, da classe RandomAccessFile ou dos Reader e Writer.

127 I/O RandomAccessFile A classe RandomAccessFile oferece recursos para acessar arquivos não-seqüencialmente, acessar uma posição do arquivo, gravar ou ler os dados nele. O construtor da classe recebe dois argumentos: uma instância de File e uma String com o modo de acesso, que pode ser r para leitura e rw para escrita e leitura. Existe um segundo construtor que, ao invés do File, recebe uma String com o caminho do arquivo e uma String com o modo de acesso. Se o arquivo não existe, um novo arquivo vazio será criado. Em caso de erros, uma exceção do tipo java.io.ioexception ou java.io.filenotfoundexception será lançada. Esta classe oferece métodos para verificar o tamanho (em bytes) do arquivo, pegar a posição corrente no arquivo e posicionar em numa nova posição, a partir da posição inicial. A classe oferece métodos para ler byte a byte do arquivo ou método para ler grupos de bytes, em um nivel mais alto de tipos de dados, como int, long, char, double, etc. File arq = new File( C:\\texto.txt ); RandomAccessFile raf = new RandomAccessFile( arq, rw ); //gravando dados no arquivo raf.writeutf( Saldo= ); raf.writedouble( ); //lendo a partir da posição inicial raf.seek( 0 ); String txt = raf.readutf(); double saldo = raf.readdouble(); raf.close(); //sempre feche o recurso

128 I/O Streams Os stream são um meio de fluxo dos dados. Esses dados podem vir tanto de um arquivo, quanto pela rede ou um dispositivo conectado ao computador. Em Java, generalizamos esse fluxo como stream de entrada e saída, o que facilita e torna padronizado o acesso a esses dados lidos e gravados. Existem duas classes abstratas, que são a base dos streams em Java, que são: InputStream (para entrada de dados) e OutputStream (para saída de dados). Esses stream trabalham com bytes de dados, o que pode ser, muitas vezes, chato de manipular. Para isso temos os streams de baixo e alto nível. Os streams de baixo nível trabalham com bytes, ou seja, lêem e escrevem bytes. Os streams de alto nível, lêem e escrevem dados num formato geral (primitivos e Strings), utilizando-se dos streams de baixo nível.

129 I/O Low-Level Streams As classes FileInputStream e FileOutputStream são duas classes de baixo nível para leitura e gravação de dados de um arquivo em disco. Essas duas classes possuem dois construtores, um construtor recebe um File e o outro recebe uma String com o pathname do arquivo. Essas classes trabalham apenas com leitura e escrita de bytes dos dados. Para tanto, elas possuem os métodos read( ) e write( ), respectivamente. Ambas possuem o método close( ). A classe FileInputStream possui outros métodos como: available( ) e skip( ). File arq = new File( C:\\texto.txt ); FileOutputStream fos = new FileOutputStream( arq ); fos.write( String a ser gravada.getbytes() ); fos.close(); File arq = new File( C:\\texto.txt ); FileInputStream fis = new FileInputStream( arq ); byte bytelido = (byte) fis.read(); byte[] bytes = new byte[10]; fis.read( bytes ); System.out.println( bytes ); fis.close(); Existem ainda outras classes de low-level. São elas: InputStream, OutputStream, que são as classes pai das classes de stream de baixo nível. Além das classes: ByteArrayInputStream, ByteArrayOutputStream, PipedInputStream e PipedOutputStream.

130 I/O High-Level Streams Os filtros de stream de alto-nível permitem a leitura e a escrita de dados de outros tipos além dos bytes dos dados. Essas classes estendem as classes FilterInputStream e FilterOutputStream para entrada e saída. Na verdade as classes não lêem diretamente de um arquivo, mas sim de um outro stream. File arq = new File( C:\\texto.txt ); FileOutputStream fos = new FileOutputStream( arq ); DataOutputStream dos = new DataOutputStream( fos ); dos.writedouble( ); dos.writeutf( Texto String UTF ); dos.close(); fos.close(); //feche todos os streams File arq = new File( C:\\texto.txt ); FileInputStream fis = new FileInputStream( arq ); DataInputStream dis = new DataInputStream( fis ); double d = dis.readdouble(); String s = dis.readutf(); dis.close(); fis.close(); //feche todos os streams Existem ainda outras classes de high-level. São elas: BufferedInputStream, BufferedOutputStream, que são as classes que utilizam buffer de memória. Além das classes: PrintStream, para gravar tipos primitivos como representações de caracter e a classe PushbackInputStream.

131 I/O Reader e Writer Os reader e writer são baseado na leitura e escrita de dados no formato Unicode. Os arquivo devem conter apenas dados no formato UTF. Os Readers e Writers podem ser low-level e high-level. Um bom exemplo de classes Readers e Writers low-level são as classe FileReader e FileWriter. File arq = new File( C:\\texto2.txt ); FileWriter fw = new FileWriter( arq ); fw.write( Linha 1\nLinha 2\nLinha 3\nLinha 4 ); fw.close(); FileReader fr = new FileReader( arq ); LineNumberReader lnr = new LineNumberReader( fr ); String s; while( (s = lnr.readline())!= null ) { System.out.println(lnr.getLineNumber() + : + s); lnr.close(); fr.close(); As classes high-level suportam os métodos dos low-level, mais métodos para manipular leitura em buffer, leitura de linha e etc. Todas essas classes estendem das classes Reader e Writer.

132 I/O Serialização de Objetos Serialização é o processo de destrinchar o objeto e persistí-lo em qualquer lugar, ou seja, ele grava o objeto com o dados do seu estado atual, bem como os objetos a ele relacionados. Os objetos a serem serializados devem implementar a interface java.io.serializable. Esses objetos, utilizando os streams podem também trafegar pela rede. Pessoa pess = new Pessoa(); pess.setnome( João ); pess.setidade(30); File arq = new File( C:\\pessoa.ser ); FileOutputStream fos = new FileOutputStream( arq ); ObjectOutputStream oos = new ObjectOutputStream( fos ); oos.writeobject( pess ); oos.close(); fos.close(); File arq = new File( C:\\pessoa.ser ); FileInputStream fis = new FileInputStream( arq ); ObjectInputStream ois = new ObjectInputStream( fis ); Pessoa p = (Pessoa) ois.readobject(); ois.close(); fis.close(); Os atributos marcados com o modificador transient não serão serializados.

133 I/O Sockets Os Sockets servem para comunicação remota entre computadores, servindo como as pontas da comunicação via o protocolo TCP/IP. Os Sockets se comunicam entre sí por meio de Streams, por onde os dados (bytes) são enviados, da mesma maneira que tratamos os dados de arquivos com streams. Podemos, inclusive, enviar objetos por meio de streams que trabalham com serialização de objetos. Nesse modelo de comunicação, um SocketServer espera conexões de Sockets clientes. ServerSocket soc = new ServerSocket(999); InputStream is = soc.accept().getinputstream(); DataInputStream dis = new DataInputStream( is ); System.out.println( dis.readutf() ); dis.close(); is.close(); soc.close(); Socket soc = new Socket(" ",999); OutputStream os = soc.getoutputstream(); DataOutputStream dos = new DataOutputStream( os ); dos.writeutf( mensagem enviada ); dos.close(); os.close(); soc.close();

134 I/O Formatter Foi introduzido no Java 5. Simplifica a maneira de escrever os dados. Inspirado no printf() do C/C++. A classe Formatter faz parte do pacote java.util. A classe String possui o método format() e a classe PrintStream possui o método printf(). StringBuilder sb = new StringBuilder(); Formatter f = new Formatter( sb, new Locale( pt_br ) ); f.format( %.2f %tf, 2.456f, new Date() ); System.out.println( sb.tostring() ); // imprime: String s = String.format( new Locale( pt_br ), Hoje é %1$te de %1$tB de %1$tY, Calendar.getInstance() ); System.out.println( s ); // Hoje é 1 de Julho de 2005 System.out.printf( %2$2s%1$2s-%3$s, a, b, c ); // imprime: b a-c

135 I/O Scanner Foi introduzido no Java 5. Simplifica a maneira de ler os dados. Inspirado no scanf() do C/C++. A classe Scanner faz parte do pacote java.util. Scanner s = new Scanner(System.in); int i = s.nextint(); // lê o próximo inteiro do teclado Scanner s = new Scanner(new File( teste.csv )); s = s.usedelimiter( \\s*,\\s* ); while( sc.hasnextshort() ) { short i = sc.nextshort(); // lê um arquivo csv com valores short // e pega os valores, delimitados por vírgula

136 Threads Threads são uma maneira de se programar aplicações com processamento paralelo, ou seja, várias subprocessos executando ao mesmo tempo. Este é um assunto bem extenso e requer muita atenção, porém vamos apenas dar uma introdução sobre Threads em Java. As Threads possui um ciclo de estados definido, como segue na figura: Quando uma Thread entra no estado dead, ela não pode ser mais usada e deve ser descartada. Para uma classe ser executada em paralelismo, ela deve estender a classe java.lang.thread ou implementar a classe java.lang.runnable. Toda Thread deve implementar o método public void run( ), que é o inicio da execução dela.

Curso de Introdução ao Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Curso de Introdução ao Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Conhecer a Plataforma Java Conhecer a sintaxe e as características do Java Conhecer as APIs do Java Escrever aplicações simples

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40 JAVA Marcio de Carvalho Victorino 1/40 Introdução 2/40 Page 1 Programação OO Elementos do modelo OO: Abstração: é o processo de abstrair as características essenciais de um objeto real. O conjunto de características

Leia mais

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Orientação a Objetos em Java Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução; Orientação a Objetos; Orientação a Objetos em Java; Leonardo Murta Orientação a Objetos em Java 2 Agosto/2007

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 02 APRESENTAÇÃO: Apresentação; conceitos básicos da linguagem java; estrutura

Leia mais

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

Leia mais

Sintaxe Básica de Java Parte 1

Sintaxe Básica de Java Parte 1 Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marcioubeno.com Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

Introdução à linguagem

Introdução à linguagem A Tecnologia Java 1 Introdução à linguagem Origens do JAVA Projecto Green, programação para a electrónica de Consumo (Dezembro 1990): Pouca memória disponível Processadores fracos Arquitecturas muito diferentes

Leia mais

JAVA. Fabrício de Sousa fabbricio7@yahoo.com.br

JAVA. Fabrício de Sousa fabbricio7@yahoo.com.br JAVA Fabrício de Sousa fabbricio7@yahoo.com.br Agenda 2 Características Ambientes de Desenvolvimento Sintaxe Comentários Tipos de dados primitivos Caracteres especiais Variáveis Operadores Aritméticos

Leia mais

Algoritmos e Programação 2. Introdução à Programação Orientada a Objetos. Orientação a Objetos. O que é um paradigma de programação?

Algoritmos e Programação 2. Introdução à Programação Orientada a Objetos. Orientação a Objetos. O que é um paradigma de programação? Algoritmos e Programação 2 Baseado no material do Prof. Júlio Pereira Machado Introdução à Programação Orientada a Objetos O que é um paradigma de programação? É um padrão conceitual que orienta soluções

Leia mais

Java 1 visão geral. Vitor Vaz da Silva

Java 1 visão geral. Vitor Vaz da Silva Java 1 visão geral Vitor Vaz da Silva Introdução 1991 Um grupo de projectistas da Sun Green Team tenta criar uma nova geração de computadores portáteis inteligentes e com grande capacidade de comunicação.

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 2 Visão Geral da Tecnologia Java Aplicação Hello

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Universidade Federal de Uberlândia

Universidade Federal de Uberlândia Universidade Federal de Uberlândia Programação Orientada a Objetos I Introdução a Java Sintaxe básica OO Prof. Fabiano Azevedo Dorça Em Java, cada classe dá origem a um arquivo.java contendo o código fonte.

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br Java - Introdução Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda O que é Java? Sun / Oracle. IDE - NetBeans. Linguagem Java; Maquina Virtual; Atividade Prática. Identificando Elementos

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 1: Introdução MEEC@IST Java 1/27 História versões (1) [1995] Versão 1.0, denominada Java Development Kit (JDK) 212 classes em 8 pacotes Lento, muitos bugs, mas com Applets

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da Java Laboratório Aula 1 Programação orientada a objetos Profa. Renata e Cristiane Introdução a Plataforma Java O que é Java? Tecnologia Linguagem de Programação Ambiente de Execução (JVM) Tudo isso é a

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java A linguagem Java surgiu em 1991 quando cientistas da Sun, liderados por Patrick Naughton e James Gosling, projetaram uma linguagem pequena para ser utilizada em eletrodomésticos

Leia mais

APOSTILA PHP PARTE 1

APOSTILA PHP PARTE 1 APOSTILA PHP PARTE 1 1. Introdução O que é PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de Personal Home Page Tools ; mas como se expandiu em escopo, um

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Criar a classe Aula.java com o seguinte código: Compilar e Executar Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void

Leia mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Programação Orientada a Objetos! Java - Fundamentos. Prof. Sérgio Almagro! e-mail: sergio.ricardo.almagro@gmail.com

Programação Orientada a Objetos! Java - Fundamentos. Prof. Sérgio Almagro! e-mail: sergio.ricardo.almagro@gmail.com Programação Orientada a Objetos! Java - Fundamentos Prof. Sérgio Almagro! e-mail: sergio.ricardo.almagro@gmail.com Estrutura de Programação Bibliografia HORSTMANN, Cay S., CORNELL, Gray. Core Java 2 Volume

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

LINGUAGEM DE PROGRAMAÇÃO JAVA

LINGUAGEM DE PROGRAMAÇÃO JAVA LINGUAGEM DE PROGRAMAÇÃO JAVA Curso de Especialização em Tecnologia Java UTFPR Capítulo 1 Parte 1 Introdução à tecnologia Java Ambiente de desenvolvimento Java Introdução à Tecnologia Java O que é Java?

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Histórico Et Estrutura t de um programa Java Sintaxe básica de Java. Reinaldo Gomes reinaldo@cefet-al.br. O que é a linguagem Java?

Histórico Et Estrutura t de um programa Java Sintaxe básica de Java. Reinaldo Gomes reinaldo@cefet-al.br. O que é a linguagem Java? Programação Orientada a Objetos Elementos Básicos da Linguagem Java Histórico Et Estrutura t de um programa Java Sintaxe básica de Java Reinaldo Gomes reinaldo@cefet-al.br Definição O que é a linguagem

Leia mais

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ... Programação Na Web Linguagem Java Parte II Sintaxe António Gonçalves break com o nome do bloco Nome do bloco Termina o bloco class class Matrix Matrix { private private int[][] int[][] mat; mat; public

Leia mais

AULA DE JAVA 1 - CONCEITOS BÁSICOS

AULA DE JAVA 1 - CONCEITOS BÁSICOS AULA DE JAVA 1 - CONCEITOS BÁSICOS DAS 5316 Integração de Sistemas Corporativos Roque Oliveira Bezerra, M. Eng roque@das.ufsc.br Prof. Ricardo J. Rabelo ROTEIRO Introdução Fases de um programa Java Strings

Leia mais

Lição 9 Trabalhando com bibliotecas de classes

Lição 9 Trabalhando com bibliotecas de classes Lição 9 Trabalhando com bibliotecas de classes Introdução à Programação I 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Explicar o que é programação orientada a objetos e alguns de seus

Leia mais

Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação Introdução à Programação Orientada a Objetos Programação e Sistemas de Informação Paradigmas de programação (1) Um paradigma de programação fornece (e determina) a visão que o programador possui sobre

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5

JavaScript 2.0X 1.0 3.0X 1.1 4.0 4.05 1.2 4.06 4.61 1.3 5.0 1.4 6.0 1.5 JavaScript Diego R. Frank, Leonardo Seibt FIT Faculdades de Informática de Taquara Fundação Educacional Encosta Inferior do Nordeste Av. Oscar Martins Rangel, 4500 Taquara RS Brasil difrank@terra.com.br,

Leia mais

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

Visual Basic e Java. À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos.

Visual Basic e Java. À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos. Visual Basic e Java À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos. No entanto, elas compartilham uma série de funcionalidades.

Leia mais

Lab de Programação de sistemas I

Lab de Programação de sistemas I Lab de Programação de sistemas I Apresentação Prof Daves Martins Msc Computação de Alto Desempenho Email: daves.martins@ifsudestemg.edu.br Agenda Orientação a Objetos Conceitos e Práticas Programação OO

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica

Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Desenvolvimento OO com Java 3 Estruturas de Controle e Programação Básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade

Leia mais

Características de Java

Características de Java Características de Java Familiar e Simples Sintaxe parecida com C/C++; Porém mais limpa: sem ponteiros, estruturas, etc; Orientada a Objetos (OO) Prática de programação já consolidada no mercado; OO permite

Leia mais

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java.

O uso de exceções permite separar a detecção da ocorrência de uma situação excepcional do seu tratamento, ao se programar um método em Java. Exceções em Java Miguel Jonathan DCC/IM/UFRJ (rev. abril de 2011) Resumo dos conceitos e regras gerais do uso de exceções em Java O uso de exceções permite separar a detecção da ocorrência de uma situação

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Java Programmer (Parte 1)

Java Programmer (Parte 1) Java Programmer (Parte 1) COD.: TE 1690_0_WEB Java Programmer (Parte 1) Créditos Copyright TechnoEdition Editora Ltda. Todos os direitos autorais reservados. Este manual não pode ser copiado, fotocopiado,

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br INTRODUÇÃO Plataforma Java Java é tanto uma linguagem de programação de alto nível quanto uma plataforma de desenvolvimento

Leia mais

Programando em C# Orientado a Objetos. By: Maromo

Programando em C# Orientado a Objetos. By: Maromo Programando em C# Orientado a Objetos By: Maromo Agenda Módulo 1 Plataforma.Net. Linguagem de Programação C#. Tipos primitivos, comandos de controle. Exercícios de Fixação. Introdução O modelo de programação

Leia mais

Capítulo 5 Reuso de Classes

Capítulo 5 Reuso de Classes Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes

Leia mais

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática Costa clayton.maciel@ifrn.edu.br

Leia mais

Organização de programas em Java. Vanessa Braganholo vanessa@ic.uff.br

Organização de programas em Java. Vanessa Braganholo vanessa@ic.uff.br Organização de programas em Java Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Java! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Curso. Linguagem Java

Curso. Linguagem Java Seja Bem Vindo! Curso Linguagem Java Carga horária: 40hs 1 Dicas importantes Nunca se esqueça de que o objetivo central é aprender o conteúdo, e não apenas terminar o curso. Qualquer um termina, só os

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java Capítulo 1 Conceitos Básicos do Java INTRODUÇÃO O objectivo deste tutorial é ensinar as regras básicas de programação em Java e facilitar a aprendizagem dos capítulos que se seguem. Qualquer dúvida sobre

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas)

(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas) PC-2 / LP-2 2009/2 Lista 2 Prof. Alexandre Sztajnberg Em todos os exercícios a(o) aluna(o) deve, além de atender aos requisitos enunciados, utilizar os conceitos e características de orientação a objetos

Leia mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado

Leia mais

Relevância e Motivação. Programação Orientada a Objetos Utilizando Java. Qualidade do Software. Objetivos. Cancelamentos.

Relevância e Motivação. Programação Orientada a Objetos Utilizando Java. Qualidade do Software. Objetivos. Cancelamentos. Programação Orientada a Objetos Utilizando Java Pedro de Alcântara dos Santos Neto e-mail: pasn@ufpi.edu.br Home Page: http:// www.ufpi.br/pasn Relevância e Motivação Técnicas a serem utilizadas na prática

Leia mais

Desenvolvido por: Juarez A. Muylaert Filho - jamf@estacio.br Andréa T. Medeiros - andrea@iprj.uerj.br Adriana S. Spallanzani - spallanzani@uol.com.

Desenvolvido por: Juarez A. Muylaert Filho - jamf@estacio.br Andréa T. Medeiros - andrea@iprj.uerj.br Adriana S. Spallanzani - spallanzani@uol.com. UAL é uma linguagem interpretada para descrição de algoritmos em Português. Tem por objetivo auxiliar o aprendizado do aluno iniciante em programação através da execução e visualização das etapas de um

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

Leia mais

Revisão OO Básico. Orientação a Objetos em Java

Revisão OO Básico. Orientação a Objetos em Java Revisão OO Básico Orientação a Objetos em Java Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Nomenclatura A unidade básica de programação em linguagens orientadas a objetos é a

Leia mais

Laboratório de Programação I

Laboratório de Programação I Laboratório de Programação I Introdução à Programação em Visual Basic Fabricio Breve Objetivos Ser capaz de escrever programas simples em Visual Basic Ser capaz de usar os comandos de entrada e saída Familiarizar-se

Leia mais

Programação Orientada a Objetos e Algoritmos em Java

Programação Orientada a Objetos e Algoritmos em Java Programação Orientada a Objetos e Algoritmos em Java Prof. Cristiano Camilo dos Santos de Almeida Prof. Rafael Guimarães Sakurai 2010 Índice 1 - Introdução... 6 1.1 - A Linguagem Java... 6 1.2 - Plataforma

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

RESUMO DOS IMPORTANTES

RESUMO DOS IMPORTANTES RESUMO DOS TÓPICOS + IMPORTANTES De instância (non-static) - estão no contexto da classe sem o modificador static De Classe (static) - estão no contexto da classe com o modificador static Local estão no

Leia mais

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 APROG Algoritmia e Programação Linguagem JAVA Básico Nelson Freire (ISEP DEI-APROG 2012/13) 1/31 Linguagem Java Estrutura de um Programa Geral Básica Estruturas de Dados Variáveis Constantes Tipos de Dados

Leia mais

Padrões de Codificação Java

Padrões de Codificação Java Padrões de Codificação Java João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 1.0 Última Atualização: Março / 2005 1 Objetivos Apresentar os padrões de codificação Java da SUN 2 Introdução Um padrão

Leia mais

Fundamentos de Programação II. Introdução à linguagem de programação C++

Fundamentos de Programação II. Introdução à linguagem de programação C++ Fundamentos de Programação II Introdução à linguagem de programação C++ Prof. Rafael Henrique D. Zottesso Material cedido por Prof. Msc. Everton Fernando Baro Agenda IDE HelloWorld Variáveis Operadores

Leia mais

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010 Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010 Primeira Dica Afirmação O que é Java? Características do Java Como Java Funciona Plataforma Java Edições Java Java SE Java EE Java ME

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Roteiro 1: Dados, variáveis, operadores e precedência

Roteiro 1: Dados, variáveis, operadores e precedência 1. Introdução Universidade Federal do ABC Disciplina: Processamento da Informação (BC-0505) Assunto: Dados, variáveis, operadores e precedência Roteiro 1: Dados, variáveis, operadores e precedência Nesta

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA* PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA* Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2014 *Adaptado de PACHECO, R C S & RIEKE, R N INE UFSC Disponível em: http://wwwstelaufscbr/~pacheco/dsoo/htm/downloadshtm

Leia mais

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo Seminário - C# DSO II Desenvolvimento de Sistemas Orientados a Objetos 2 Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo Roteiro Breve Histórico Plataforma.NET Características da Linguagem Sintaxe Versões

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais