Programação desktop - apresentação

159
Conteúdo Programático Fundamentos e sintaxe da linguagem Java Orientação a objetos Collections Exceções Leitura e escrita de arquivos SQL Conexão com SGBD: JDBC Interfaces gráficas: Swing e JavaFX Geração de relatórios com Jasper Report Controle de versões: SVN Ant Build File Rosicléia Frasson - 2014

description

Programação Desktop

Transcript of Programação desktop - apresentação

Page 1: Programação desktop -  apresentação

Conteúdo Programático

Fundamentos e sintaxe da linguagem Java Orientação a objetos Collections Exceções Leitura e escrita de arquivos SQL Conexão com SGBD: JDBC Interfaces gráficas: Swing e JavaFX Geração de relatórios com Jasper Report Controle de versões: SVN Ant Build File

Rosicléia Frasson - 2014

Page 2: Programação desktop -  apresentação

Fundamentos da linguagem Java

Distribuições do Java

Rosicléia Frasson - 2014

Page 3: Programação desktop -  apresentação

Fundamentos da linguagem Java

Compilador e interpretador Java

Rosicléia Frasson - 2014

Page 4: Programação desktop -  apresentação

Fundamentos da linguagem Java

Java SE

Rosicléia Frasson - 2014

Page 5: Programação desktop -  apresentação

Fundamentos da linguagem Java

JDK X JRE

A JRE é o ambiente de execução Java para quem quer apenas executar programas escritos em Java. É composta pela JVM e as APIs Java (coleção de componentes de software prontos, que incluem desde estruturas para manipulação de arquivos até a construção de aplicativos gráficos).

O JDK é o conjunto de ferramentas necessárias para o desenvolvimento de programas Java. É composto pela JRE, javac (compilador), jar (empacotador) e o javadoc (documentação).

Rosicléia Frasson - 2014

Page 6: Programação desktop -  apresentação

Fundamentos da linguagem Java

IDE - Eclipse

Rosicléia Frasson - 2014

Page 7: Programação desktop -  apresentação

Fundamentos da linguagem Java

Gerenciamento de memória Java

Rosicléia Frasson - 2014

Page 8: Programação desktop -  apresentação

Fundamentos da linguagem Java

Garbage Collector

Rosicléia Frasson - 2014

Page 9: Programação desktop -  apresentação

Sintaxe da linguagem Java

Ponto e vírgula, blocos, espaços em branco e case-sensitive

Rosicléia Frasson - 2014

Para uma melhor legibilidade do código, é interessante usar espaços, tabulações e novas linhas; Um bloco é formado por uma ou mais instruções agrupadas entre chaves; Os blocos podem ser organizados em estruturas aninhadas infinitamente; Uma instrução é composta por uma ou mais linhas terminadas com um ponto-e-vírgula; O Java é uma linguagem case-sensitive.

public class Exemplo {

public static void main(String[] args) {int idade = 15;

if (idade < 18){int qtTempo = 18 - idade;System.out.println("Você não pode doar sangue. Espere " + qtTempo + " anos." );

}}

}

Page 10: Programação desktop -  apresentação

Sintaxe da linguagem Java

Palavras reservadas

Rosicléia Frasson - 2014

abstract assert boolean break byte case catch

char class const continue default do double

else enum extends false final finally float

for goto if implements import instanceof int

interface long native new null package private

protected public return short static strictpf super

switch synchronized this throw throws transient try

void volatile while

Page 11: Programação desktop -  apresentação

Sintaxe da linguagem Java

Tipos primitivos

Rosicléia Frasson - 2014

Classificação Tipo Tamanho

lógico boolean 1 bit

inteiro

byte 1 byteshort 2 bytesint 4 byteslong 8 bytes

ponto flutuantefloat 4 bytes

double 8 bytes

caracter char 2 bytes

`

Page 12: Programação desktop -  apresentação

Sintaxe da linguagem Java

Conversão entre tipos

Rosicléia Frasson - 2014

`

Implicitamente: A JVM transforma em tempo de execução, quando acha conveniente, tipos restritos em tipos com maior amplitude.

Através de uma operação chamada casting ou conversão explícita

DE: PARA: byte short char int long float double

byte ----- implícito (char) implícito implícito implícito implícito

short (byte) ----- (char) implícito implícito implícito implícito

char (byte) (short) ----- implícito implícito implícito implícito

int (byte) (short) (char) ----- implícito implícito implícito

long (byte) (short) (char) (int) ----- implícito implícito

float (byte) (short) (char) (int) (long) ----- implícito

double (byte) (short) (char) (int) (long) (float) -----

Page 13: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

double peso;

int idade;

char sexo;

tipo nome Valor inicial

double salario = 1200.00;

boolean ligado = true;

Page 14: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Regras

Os nomes de variáveis em Java devem ser inicializados por uma letra, um cifrão ou por undescore; Após o primeiro caracter, vale qualquer combinação de números, letras, underscore e cifrão; Os identificadores não podem ter o nome igual ao de uma palavra reservada.

int num;

int $num;

int _num;

int num1;

int 1num;

int NUM;

compila?

X

int -num; X

int num-av; X

Page 15: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

O nome de uma variável deve ser escrito em letras minúsculas.

Caso o nome da variável seja uma palavra composta, a primeira letra a partir da segunda palavra deve ser escrita com letra maiúscula;

String nome;

String NOME;

String Nome;

String nm_cliente;

String nomeCliente;

segue padrão?

X

X

X

Page 16: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

O nome de uma variável deve ser significativo, indicando claramente o que a variável representa.

Se o nome de uma variável necessita de um comentário para explicar o porquê da sua existência, ele deve ser trocado.

Date dataDevolucaoProduto;

segue padrão?

XDate data; //data de devolução do produto

Date dt; X

Page 17: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

É indicado utilizar nomes que refletem o domínio em que o software será utilizado.

String contribuinte;

segue padrão?

XString cliente;

String usuário; X

Page 18: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

As abreviações e siglas devem ser usadas com cautela. Decifrar uma abreviação adiciona um tempo extra na execução de uma tarefa.

int uv;

segue padrão?

String cpf;

String unidadeVenda;

X

* É uma sigla conhecida

Page 19: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

Nomes semelhantes devem ser evitados, pois podem confundir o desenvolvedor. Não utilizar como identificadores nomes confusos que podem levar quem lê o código a conclusões erradas.

double valorMultaNosDiasTranscorridos;

segue padrão?

double valorMultaPorDiasTranscorridos;

double listaValoresPadraoMulta;

X

* Nomes semelhantes podem causar confusão.

X

X * A variável não representa uma lista.

Page 20: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

Identificadores de variáveis devem ser escritos no singular, exceto quando a variável representar uma coleção de dados. É indicado utilizar nomes pronunciáveis para facilitar a leitura e comunicação.

double descontos.

segue padrão?

double [] valoresMultasAplicadas ;

String dtVlProVen;

X

String dtValidadeProdutoVendido;

X

Page 21: Programação desktop -  apresentação

Sintaxe da linguagem Java

Declaração de variáveis

Rosicléia Frasson - 2014

Convenções

É preferível declarar uma variável por linha, ao invés de várias na mesma linha.

public class Funcionario {

String nome, cpf, rg, orgaoEmissorRg, telefoneResidencial, celular, nrRegistroCNH, nomePai, nomeMae, nomeConjuge ;

Date dataNascimento, dataAdmissao, dataRegistro, dataDemissao, dataVencimentoCNH, dataEmissaoRg;}

public class Funcionario {

String nome;Date dataNascimento;String cpf;String rg;String

orgaoEmissorRg;Date dataEmissaoRg;String nomePai;String nomeMae;String nomeConjuge;String

nrRegistroCNH;Date

dataVencimentoCNH;String

telefoneResidencial;String celular; Date dataAdmissao;Date dataRegistro;Date dataDemissao;

}X

Page 22: Programação desktop -  apresentação

Sintaxe da linguagem Java

Entrada e saída de dados

Rosicléia Frasson - 2014

Classe Scanner e objeto System.inimport java.util.Scanner;public class EntradaSaidaDadosConsole {

public static void main(String[] args) {

Scanner entrada = new Scanner(System.in);

entrada.close();}

}

Page 23: Programação desktop -  apresentação

Sintaxe da linguagem Java

Entrada e saída de dados

Rosicléia Frasson - 2014

Métodos Classe Scanner e objeto System.outSystem.out.println("Informe o seu nome: ");nome = entrada.nextLine();System.out.println("Informe a sua idade: ");idade = entrada.nextInt();System.out.println("Informe o seu peso: ");peso = entrada.nextDouble();

System.out.println(nome + ", você possui " + idade + " anos. ");

System.out.print("Seu peso é ");

System.out.printf("%.2f", peso);

Page 24: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores básicos

Rosicléia Frasson - 2014

. Referência a método, função ou atributo de um objeto.

, Separador de identificadores.

; Finalizador de declarações e comandos.

[ ] Declarador de vetores e delimitador de índices.

{ } Separador de blocos.

( ) Lista de parâmetros.

= Operador de atribuição.

Page 25: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores lógicos

Rosicléia Frasson - 2014

> Maior>= Maior ou igual< Menor

<= Menor ou igual== Igual!= Diferente

&& E|| OU

Page 26: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operador condicional ternário

Rosicléia Frasson - 2014

Scanner entrada = new Scanner(System.in);

double nota;

System.out.println("Informe a nota do aluno: ");nota = entrada.nextDouble();

System.out.println(nota >= 7 ? " Aluno aprovado " : " Aluno reprovado");

condição ? caso verdadeiro : caso falso

Page 27: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores aritméticos

Rosicléia Frasson - 2014

+ Adição

- Subtração

* Multiplicação

/ Divisão

% Módulo (resto da divisão)

Page 28: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores aritméticos

Rosicléia Frasson - 2014

Divisão de números inteiros sempre resulta em um inteiro.int dividendo = 5;int divisor = 2;double quociente = dividendo / divisor;

int dividendo = 5;int divisor = 2;double quociente = dividendo / (double) divisor;

quociente = 2

quociente = 2.5

Page 29: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores de incremento e decremento

Rosicléia Frasson - 2014

Operador Exemplo Significado

++ ++x Incrementa a variável e depois usa.

++ x++ Usa a variável e depois incrementa.

-- --x Decrementa a variável e depois usa.

-- x-- Usa a variável e depois decrementa.

int a = 5;int b = 3;int c = 4;int d = 7;

System.out.println(a++);

System.out.println(a);

System.out.println(++b);

System.out.println(b);

System.out.println(c--);

System.out.println(c);

System.out.println(--d);

System.out.println(d);

Page 30: Programação desktop -  apresentação

Sintaxe da linguagem Java

Operadores de atribuição

Rosicléia Frasson - 2014

Operador Exemplo Expressão equivalente

+= x += y x = x + y

-= x -= y x = x - y

*= x *= y x = x * y

/= x /= y x = x / y

%= x%=y x = x % y

Page 31: Programação desktop -  apresentação

Sintaxe da linguagem Java

Tipos primitivos e variáveis de referência

Rosicléia Frasson - 2014

Page 32: Programação desktop -  apresentação

Sintaxe da linguagem Java

Pool de Strings

Rosicléia Frasson - 2014

Page 33: Programação desktop -  apresentação

Sintaxe da linguagem Java

Classe String: métodos utilitários

Rosicléia Frasson - 2014

equals replace trim contains lenght toUpperCase toLowerCase charAt substring valueOf

Page 34: Programação desktop -  apresentação

Sintaxe da linguagem Java

Transformação de Strings em tipos numéricos

Rosicléia Frasson - 2014

int idade = Integer.parseInt(JOptionPane.showInputDialog("Informe sua idade: "));

double peso = Double.parseDouble(JOptionPane.showInputDialog("Informe o seu peso: "));

float altura = Float.parseFloat(JOptionPane.showInputDialog("Informe sua altura: "));

long matricula = Long.parseLong(JOptionPane.showInputDialog("Informe sua matrícula: "));

Page 35: Programação desktop -  apresentação

Sintaxe da linguagem Java

Estruturas condicionais

Rosicléia Frasson - 2014

Uma estrutura de condição avalia uma expressão booleana e com base no resultado (VERDADEIRO ou FALSO), o fluxo do algoritmo segue para um bloco de instruções ou não.

Page 36: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando if ... else

Rosicléia Frasson - 2014

if (expressão){

bloco de comandos

} else{

bloco de comandos

}

Page 37: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando if ... else

Rosicléia Frasson - 2014

import java.util.Scanner;public class CondicaoIfElse {

public static void main(String[] args) {Scanner entrada = new

Scanner(System.in);System.out.println("Informe a média do

aluno: ");

double media = entrada.nextDouble();if (media >= 7){

System.out.println("Aluno aprovado!");

}else if (media >= 4){System.out.println("Aluno em

recuperação!");}else{

System.out.println("Aluno reprovado!");

}entrada.close();

}}

Page 38: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando switch

Rosicléia Frasson - 2014

switch (expressão){case constante1: bloco de comandos; break;case constante2: bloco de comandos; break;•••default: bloco de comandos;}

Page 39: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando switch

Rosicléia Frasson - 2014

switch (diaDaSemana) {case 1:

System.out.println("Domingo");break;

case 2:System.out.println("Segunda-feira");break;

case 3:System.out.println("Terça-feira");break;

.

.

.case 7:

System.out.println("Sábado");break;

default:System.out.println("Este não é um dia

válido!");}

Page 40: Programação desktop -  apresentação

Sintaxe da linguagem Java

Estruturas de repetição

Rosicléia Frasson - 2014

Uma estrutura de repetição permite que um programa execute um bloco de instruções repetidamente enquanto a condição do loop continue verdadeira.

Page 41: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando for

Rosicléia Frasson - 2014

for (inicialização; condição; incremento){ bloco de comandos;}

Page 42: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando for

Rosicléia Frasson - 2014

public class RepeticaoFor {

public static void main(String[] args) {

for (int num = 0; num <=10; num++){

System.out.println(num);}

}}

Page 43: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando while

Rosicléia Frasson - 2014

while (condição){

bloco de comandos;

}

Page 44: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando while

Rosicléia Frasson - 2014

public class RepeticaoWhile {

public static void main(String[] args) {

int num = 0;

while (num <= 10 ){

System.out.println(num);num++;

}}

}

Page 45: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando do ... while

Rosicléia Frasson - 2014

do{

bloco de comandos;

} while (condição);

Page 46: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando do ... while

Rosicléia Frasson - 2014

import java.util.Scanner;public class RepeticaoDoWhile {

public static void main(String[] args) {Scanner entrada = new

Scanner(System.in);

int num;do{

System.out.println("Informe um número: ");

num = entrada.nextInt();

}while(num > 0);

entrada.close();}

}

Page 47: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando break

Rosicléia Frasson - 2014

Ocasiona a saída imediata de uma instrução for, while, do ... while ou switch.

public class ComandoBreak {public static void main (String args []){

for (int numero = 1; numero <= 1000; numero ++){

System.out.println("Número: "+ numero );

if (numero == 10)break;

}}

}

Page 48: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando continue

Rosicléia Frasson - 2014

O comando continue ignora as instruções restantes no corpo do loop e prossegue para a próxima iteração do laço. Pode ser utilizado nas estruturas de repetição for, while e do … while.public class ComandoContinue {

public static void main(String[] args) {

for (int num = 0; num <= 100; num ++){

if (num % 5 != 0){continue;

}

System.out.println(num);}

}}

Page 49: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comentários

Rosicléia Frasson - 2014

Comentário de uma linha: O uso de barra dupla marca o início do comentário que se estende até o fim da linha.

Comentário de várias linhas: Os delimitadores /* e */ indicam início e fim de um comentário e podem conter várias linhas.

Comentário javadoc: É utilizado para gerar a documentação javadoc e é delimitado pelas sequências de símbolos /** e */. Para gerar o javadoc é necessário que o comentário esteja localizado imediatamente antes da classe, atributo ou método documentado.

Page 50: Programação desktop -  apresentação

Sintaxe da linguagem Java

Arrays

Rosicléia Frasson - 2014

String[] nome = new String[10];

0 1 2 3 4 5 6 7 8 9

nome[0] = "Maria";

0 1 2 3 4 5 6 7 8 9

Maria

Page 51: Programação desktop -  apresentação

Sintaxe da linguagem Java

Arrays

Rosicléia Frasson - 2014

import java.util.Scanner;public class Vetor {

public static void main(String[] args) {Scanner entrada = new Scanner(System.in);String[] nome = new String[6];

for (int i = 0; i < 6; i++){System.out.println("Informe o

aluno " + i + " :");nome[i] = entrada.nextLine();

}

System.out.println("\nAlunos: ");for(int i = 0; i < nome.length; i++){

System.out.println(nome[i]);}

entrada.close();}

}

Page 52: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando for each

Rosicléia Frasson - 2014

Percorre uma coleção de dados sem a utilização de um contador explícito;

for ( declaração: expressão){ bloco de comandos;}

Na declaração é necessário indicar o tipo de dado presente no array ou coleção e atribuir um identificador;

A expressão consiste no array ou coleção que deve ser percorrida;

A avaliação da expressão deve resultar em um objeto que implementa a interface Iterable - Collections - ou em uma instância de array.

Page 53: Programação desktop -  apresentação

Sintaxe da linguagem Java

Comando for each

Rosicléia Frasson - 2014

public class ComandoForAprimorado {

public static void main(String[] args) {int somaNumeros = 0;

int [] numeros = {87, 45, 65, 32, 44, 26, 7, 90};

for(int numero: numeros)somaNumeros += numero;

System.out.println("Soma dos elementos do vetor: " + somaNumeros);

}}

Page 54: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

POO

Organização

Lógica de negócio encapsulada

SimplicidadeAlinhamento com o modelo de negócio

Flexibilidade

Redução da quantidade de

código

Page 55: Programação desktop -  apresentação

Programação Orientada a Objetos

Princípios POO

Rosicléia Frasson - 2014

Page 56: Programação desktop -  apresentação

Programação Orientada a Objetos

Objetos

Rosicléia Frasson - 2014

Funcionário Jessica Funcionário

Márcio

Cupom fiscal Augusto

Cupom fiscalFernando

Gerente João

Supermercado

Cliente Augusto

Cliente Fernando

Produto despertador

Produto queijo

Produto torrada

Page 57: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe

Rosicléia Frasson - 2014

Funcionários

Matrícula: 1234Nome: João da Silva

Sexo: M

Matrícula: 2678Nome: Joana Monteiro

Sexo: F

Matrícula: 9876Nome: Marcio Oliveira

Sexo: M

- Recebe aumento- Troca turno

ClasseAtributos Métodos

Page 58: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe

Rosicléia Frasson - 2014

Representação UML

Page 59: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe

Rosicléia Frasson - 2014

Classe Java

Page 60: Programação desktop -  apresentação

Programação Orientada a Objetos

Atributos

Rosicléia Frasson - 2014

Page 61: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos

Rosicléia Frasson - 2014

Assinatura do método = nome do método + lista de parâmetros

Page 62: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos

Rosicléia Frasson - 2014

Os métodos com parâmetros quando invocados, obrigam o invocador a fornecer um argumento do tipo apropriado para cada um dos parâmetros declarados pelo método.

Page 63: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos

Rosicléia Frasson - 2014

Quando um método é invocado, o fluxo de execução passa para o método invocado e os comandos deste são executados em sequência.

Um método retorna ao invocador em uma das três condições: execução de um comando return; o bloco de execução acaba nos casos dos métodos void; uma exceção não capturada é lançada.

Page 64: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos

Rosicléia Frasson - 2014

Page 65: Programação desktop -  apresentação

Programação Orientada a Objetos

Sobrecarga de métodos

Rosicléia Frasson - 2014

Também conhecida por overloading;

Permite a existência de dois ou mais métodos com o mesmo nome, porém com variação de quantidade, tipo ou ordem de parâmetros;

Na invocação do método, o compilador escolhe o método que deve ser executado comparando os argumentos enviados com os parâmetros do método.

Page 66: Programação desktop -  apresentação

Programação Orientada a Objetos

Sobrecarga de métodos

Rosicléia Frasson - 2014

Page 67: Programação desktop -  apresentação

Programação Orientada a Objetos

Instâncias de classes

Rosicléia Frasson - 2014

O new aloca espaço para armazenar os campos do objeto e os inicializa.

Quando a inicialização está completa, o sistema de execução retorna uma referência ao novo objeto.

Page 68: Programação desktop -  apresentação

Programação Orientada a Objetos

Instâncias de classes

Rosicléia Frasson - 2014

CÓDIGO JAVA

Produto p1 = new Produto( );Produto p2 = new Produto( );Produto p3;

STACKp1 @314955ec

p2 @896674ae

p3 null

HEAP

p1

p2

Page 69: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos equals e toString

Rosicléia Frasson - 2014

O método toString retorna uma String que textualmente representa o objeto.

O método equals faz a comparação entre dois objetos e retorna o valor true se ambos ocuparem o mesmo espaço de memória.

(p1.equals(p))p.toString();

(p1.equals(p)) p.toString();

Page 70: Programação desktop -  apresentação

Programação Orientada a Objetos

Construtor

Rosicléia Frasson - 2014

A palavra chave new executa o construtor da classe.

Um construtor é um bloco declarado com o mesmo nome da classe, seguida por uma lista de parâmetros entre parênteses.

Um construtor não possui valor de retorno.

Em uma classe em que não existe um construtor declarado, a JVM cria implicitamente um construtor default.

(p1.equals(p))p.toString();

Page 71: Programação desktop -  apresentação

Programação Orientada a Objetos

Construtor

Rosicléia Frasson - 2014

(p1.equals(p))p.toString();

Page 72: Programação desktop -  apresentação

Programação Orientada a Objetos

Construtor

Rosicléia Frasson - 2014

(p1.equals(p))p.toString();

Page 73: Programação desktop -  apresentação

Programação Orientada a Objetos

Construtor

Rosicléia Frasson - 2014

(p1.equals(p))p.toString();

Page 74: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos varargs

Rosicléia Frasson - 2014

public double calculaValorVenda (double ... precosProdutos){     double valorTotal = 0;     for (double preco : precosProdutos) {           valorTotal += preco;     }     return valorTotal;}

Page 75: Programação desktop -  apresentação

Programação Orientada a Objetos

Atributos estáticos

Rosicléia Frasson - 2014

Classe Produto

codigo: 1nome: “arroz”preco: 2.30

codigo: 2nome: “farinha ”preco: 1.97

codigo: 3nome: “feijão”preco: 4.35

p1 p2 p3

Variáveis de instância

totalProdutos = 3 Variável estática

Page 76: Programação desktop -  apresentação

Programação Orientada a Objetos

Atributos estáticos

Rosicléia Frasson - 2014

Page 77: Programação desktop -  apresentação

Programação Orientada a Objetos

Constantes

Rosicléia Frasson - 2014

Page 78: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos estáticos

Rosicléia Frasson - 2014

Métodos estáticos pertencem a uma classe e não a uma instância da mesma.

Métodos estáticos só podem operar sobre atributos estáticos.

Métodos que realizam procedimentos sem estarem vinculados a um objeto.

Page 79: Programação desktop -  apresentação

Programação Orientada a Objetos

Métodos estáticos

Rosicléia Frasson - 2014

Page 80: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe Math

Rosicléia Frasson - 2014

Math.PI - Constante PIMath.pow(a, b) - Potência na forma ab

Math.sqrt(a) - Raiz quadrada de aMath.cbrt(a) - Raiz cúbica de aMath.abs(a) - Retorna o valor absoluto de aMath.min(a, b) - Retorna o menor valorMath.max(a, b) - Retorna o maior valorMath.ceil(a) - Arredonda para cimaMath.floor(a) - Arrenda para baixo

Disponibiliza uma série de operações e constantes matemáticas.

Page 81: Programação desktop -  apresentação

Programação Orientada a Objetos

Enum

Rosicléia Frasson - 2014

É um tipo que corresponde a um conjunto fixo de constantes.

Os ENUMs tornam o código mais explícito, mais legível, e menos vulnerável a erros de programação.

Seguindo a convenção de constantes, o identificador é escrito com todas as letras em maiúsculas.

Page 82: Programação desktop -  apresentação

Programação Orientada a Objetos

Enum

Rosicléia Frasson - 2014

Page 83: Programação desktop -  apresentação

Programação Orientada a Objetos

Enum

Rosicléia Frasson - 2014

Os enums podem ser declarados

internamente em uma classe.

Page 84: Programação desktop -  apresentação

Programação Orientada a Objetos

Composição

Rosicléia Frasson - 2014

Page 85: Programação desktop -  apresentação

Programação Orientada a Objetos

Composição

Rosicléia Frasson - 2014

Page 86: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

Pacotes

Possuem como objetivo agrupar classes de funcionalidades semelhantes ou relacionadas.

Um pacote é um diretório onde ficam armazenadas classes, interfaces, subpacotes e arquivos de recursos adicionais, como imagens, usados pelas classes do pacote.

Os pacotes são correspondentes as bibliotecas em outras linguagens de programação.

Page 87: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

Declaração de pacotes

Nomes de pacotes devem ser compostos exclusivamente por letras minúsculas, não importando a quantidade de palavras que o mesmo contenha;

Os nomes de pacotes devem ser relativos a empresa que desenvolveu os mesmos.

Geralmente é utilizada a nomeação reversa de domínios, onde o início do nome do pacote é dado pela ordem inversa do nome do domínio da instituição na internet.

Page 88: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

Declaração de pacotes

As classes devem possuir como primeira instrução a indicação do pacote a que pertencem.

A instrução começa com a palavra chave package, seguida pelo caminho do pacote delimitado por pontos.

Classes que não possuem a instrução package pertencem ao pacote default.

package br.com.nomeempresa.sintaxeBasica;

Page 89: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

Importação de classes Nome plenamente qualificado

Importação de pacotes

javax.swing.JOptionPane.showMessageDialog(null, "Exemplo utilização de nome plenamente qualificado do tipo");

import javax.swing.JOptionPane;public class Pacote {      public static void main(String[] args) {                  JOptionPane.showMessageDialog(null, "Exemplo utilização de importação de pacote");   }}

Page 90: Programação desktop -  apresentação

Programação Orientada a Objetos

Rosicléia Frasson - 2014

Pacotes JSEPacote Funcionalidadejava.lang Fornece classes que são fundamentais para a concepção da

linguagem Java. É importado automaticamente.

java.util Pacote utilitário. Fornece classes para trabalhar com coleções, entrada de dados (Scanner) e componentes de data e hora.

java.awt Fornece classes para definir interfaces gráficas com o usuário.

javax.swing Extensão do pacote java.awt.

java.io Fornece classes para realizar operações de entrada e saída de dados através do sistema de fluxo de dados (streams) e serialização de objetos .

java.sql Classes para acesso a base de dados via JDBC.

Page 91: Programação desktop -  apresentação

Programação Orientada a Objetos

Encapsulamento

Rosicléia Frasson - 2014

Consiste em ocultar detalhes da implementação de um objeto do meio externo.

Apenas as funcionalidades que são importantes para as classes externas devem ser visíveis.

A POO recomenda que o estado de um objeto não deve ser acessado diretamente por classes externas.

Page 92: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

Page 93: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

public

protected

default

private

Page 94: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

publicMembro acessível a qualquer objeto

Use para:• Construtores e métodos que devem ser acessíveis

para outras classes;• Métodos e constantes estáticas.

Não use para:• Construtores e métodos de uso restrito;• Campos de dados de objetos.

Page 95: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

protectedMembro acessível a subclasses e classes do mesmo

pacote.

Use para:• Construtores que só devem ser chamados pelas

subclasses;• Métodos que só devem ser usados se sobrepostos.

Não use para:• Métodos com restrições a sobreposição• Campos de dados de objetos.

Page 96: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

defaultAusência de modificador. Membro acessível a classes do mesmo pacote.

Use para:• Construtores e métodos que só devem ser chamados

pelas classes do mesmo pacote;• Constantes estáticas úteis apenas dentro do pacote.

Não use para:• Métodos cujo uso externo seja indesejado;• Campos de dados de objetos.

Page 97: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificadores de acesso

Rosicléia Frasson - 2014

private Membro acessível apenas dentro da própria classe.

Use para:• Métodos que não devem ser acessados por membros

externos;• Campos de dados de objetos;

Page 98: Programação desktop -  apresentação

Programação Orientada a Objetos

Gets e sets

Rosicléia Frasson - 2014

Quando é usado o modificador de acesso private em um atributo, não é possível acessá-lo em outra classe. Para alterar ou recuperar o valor do mesmo, é necessário escrever dois métodos de acesso, um que retorna o valor e outro que muda o valor. A convenção para estes métodos é colocar a palavra get ou set antes do nome do produto.

Page 99: Programação desktop -  apresentação

Programação Orientada a Objetos

Gets e sets

Rosicléia Frasson - 2014

Page 100: Programação desktop -  apresentação

Programação Orientada a Objetos

Gets e sets

Rosicléia Frasson - 2014

Page 101: Programação desktop -  apresentação

Programação Orientada a Objetos

Herança

Rosicléia Frasson - 2014

O mecanismo de herança permite uma hierarquia entre classes;

As subclasses herdam as características e comportamentos das superclasses;

O relacionamento de herança é do tipo É UM.

Page 102: Programação desktop -  apresentação

Programação Orientada a Objetos

Herança

Rosicléia Frasson - 2014

Pessoa Jurídica

Fabricante Fornecedor

Page 103: Programação desktop -  apresentação

Programação Orientada a Objetos

Herança

Rosicléia Frasson - 2014

public class Fornecedor extends PessoaJuridica{

}

public class Fabricante extends PessoaJuridica{

}

public class PessoaJuridica {

}

Page 104: Programação desktop -  apresentação

Programação Orientada a Objetos

Sobrescrita de métodos

Rosicléia Frasson - 2014

A sobrescrita de métodos é o mecanismo que permite a alteração do comportamento de uma superclasse pelas suas subclasses, ou seja, a sobrescrita de um método é uma nova implementação para o mesmo.

A sobrescrita de um método ocorre somente se a assinatura do mesmo permanece intacta, isto é, o tipo de retorno e os parâmetros devem ser os mesmos.

Page 105: Programação desktop -  apresentação

Programação Orientada a Objetos

Sobrescrita de métodos

Rosicléia Frasson - 2014

Page 106: Programação desktop -  apresentação

Programação Orientada a Objetos

Sobrescrita de métodos

Rosicléia Frasson - 2014

Métodos sobrepostos nunca podem ter menos acesso que os métodos originais; Se método original for � public, novas versões têm que ser public; Se método original for � protected, novas versões podem ser protected ou public; Se método original � não tiver modificador , novas versões podem ser declaradas sem modificador de acesso, com modificador protected ou public; Se método original for � private, ele não será visível da subclasse e portanto, jamais poderá ser estendido.

Page 107: Programação desktop -  apresentação

Programação Orientada a Objetos

Modificador final

Rosicléia Frasson - 2014

Impede que uma classe seja extendida;

Impede que um método seja sobrescrito.

Page 108: Programação desktop -  apresentação

Programação Orientada a Objetos

Polimorfismo

Rosicléia Frasson - 2014

O polimorfismo permite que objetos de múltiplos tipos sejam referenciados como se fossem do tipo de sua superclasse.

Mecanismo que garante que quando um método é invocado por meio de uma referência a superclasse, em tempo de execução, a versão correta do método da subclasse é executada.

Page 109: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe abstrata

Rosicléia Frasson - 2014

Uma classe abstrata não pode ser instanciada.

As classes abstratas possuem métodos concretos e métodos abstratos.

Os métodos abstratos são compostos apenas pela assinatura, ou seja, não possuem implementação.

Quando uma subclasse concreta extende uma classe abstrata, todos os métodos abstratos obrigatoriamente devem ser implementados.

Page 110: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe abstrata

Rosicléia Frasson - 2014

Page 111: Programação desktop -  apresentação

Programação Orientada a Objetos

Classe abstrata

Rosicléia Frasson - 2014

Page 112: Programação desktop -  apresentação

Programação Orientada a Objetos

Interface

Rosicléia Frasson - 2014

Possui como propósito forçar uma subclasse a reescrever todos os métodos abstratos, definindo um comportamento para o mesmo.

As interfaces possuem apenas métodos abstratos.

Uma interface não possui atributos. Apenas variáveis estáticas e constantes.

A implementação de uma interface por uma classe indica um relacionamento do tipo É UM com a interface.

Uma classe pode implementar mais de uma interface.

Page 113: Programação desktop -  apresentação

Programação Orientada a Objetos

Interface

Rosicléia Frasson - 2014

Page 114: Programação desktop -  apresentação

Programação Orientada a Objetos

Interface

Rosicléia Frasson - 2014

Page 115: Programação desktop -  apresentação

Programação Orientada a Objetos

Classes Wrappers

Rosicléia Frasson - 2014

Page 116: Programação desktop -  apresentação

Programação Orientada a Objetos

Classes Wrappers

Rosicléia Frasson - 2014

Fornecem um mecanismo para empacotar valores primitivos em um tipo objeto, para que estes sejam inclusos em atividades reservadas a objetos;

Fornecem um conjunto de funções utilitárias para os tipos primitivos como as conversões de tipos primitivos em String e vice-versa.

Page 117: Programação desktop -  apresentação

Programação Orientada a Objetos

Classes Wrappers

Rosicléia Frasson - 2014

As classes Wrappers , exceto a Character, possuem dois construtores: um que recebe o tipo primitivo correspondente como argumento e o outro que recebe uma String como argumento.

Double d1 = new Double(1.0);Double d2 = new Double("1.0");

Integer i1 = new Integer(3);Integer i2 = new Integer("6");

Page 118: Programação desktop -  apresentação

Programação Orientada a Objetos

Classes Wrappers

Rosicléia Frasson - 2014

As classes Wrappers fornecem métodos para conversão de uma String em um tipo primitivo correspondente.

int idade = Integer.parseInt(JOptionPane.showInputDialog("Informe a idade"));

Cada classe wrapper fornece um método que retorna o tipo primitivo por ela encapsulado.

Integer a;int b = a.intValue();

Page 119: Programação desktop -  apresentação

Collections

Rosicléia Frasson - 2014

Page 120: Programação desktop -  apresentação

Collections

Listas: java.util.List

Rosicléia Frasson - 2014

Uma lista é uma coleção que permite elementos duplicados e mantém uma ordenação específica entre os elementos.

Os elementos ficam dispostos na lista na ordem em que foram inseridos.

A lista resolve os problemas do array: tamanho infinito, inserção, remoção.

Page 121: Programação desktop -  apresentação

Collections

Listas: java.util.List

Rosicléia Frasson - 2014

ArrayList<String> arrayList = new ArrayList();

LinkedList<String> linkedList = new LinkedList();

Vector<String> vector = new Vector();

Page 122: Programação desktop -  apresentação

Collections

Listas

Rosicléia Frasson - 2014

lista.add(p);

System.out.println(lista.size());

O método add adiciona um elemento no fim da lista.

O método size retorna a quantidade de elementos que a

lista possui.

Page 123: Programação desktop -  apresentação

Collections

Listas: Array List

Rosicléia Frasson - 2014

lista.remove(p);

lista.contains(p);

O método remove retira um elemento da lista.

O método contains verifica se um elemento está na lista.

Page 124: Programação desktop -  apresentação

Collections

Listas: Array List

Rosicléia Frasson - 2014

O ArrayList possui acesso aleatório aos seus elementos. Sendo assim, a busca de um elemento é feita de forma imediata, sem que a lista inteira seja percorrida.

Page 125: Programação desktop -  apresentação

Collections

Método sort

Rosicléia Frasson - 2014

O método sort recebe um List como argumento e ordena em ordem crescente.

Para efetuar a ordenação um objeto precisa implementar a interface Comparable que define o método compareTo.

arrayList.add("Ana");arrayList.add("Maria");arrayList.add("Joana");arrayList.add("Zenilda");arrayList.add("Karla");

Collections.sort(arrayList);

Page 126: Programação desktop -  apresentação

Collections

Métodos Collections

Rosicléia Frasson - 2014

binarySearch(List, Object): Realiza uma busca binária por determinado elemento na lista ordenada e retorna sua posição ou um número negativo, caso não encontrado.

arrayList.add("Ana");arrayList.add("Maria");arrayList.add("Joana");arrayList.add("Zenilda");arrayList.add("Karla");

int indice = Collections.binarySearch(arrayList, "Maria");

System.out.println(indice);

Page 127: Programação desktop -  apresentação

Collections

Métodos Collections

Rosicléia Frasson - 2014

max(Collection): Retorna o maior elemento da coleção.

ArrayList numeros = new ArrayList();numeros.add(1);numeros.add(4);numeros.add(56);numeros.add(7);

int maior = Collections.max(numeros);System.out.println("Maior: "+ maior);

Page 128: Programação desktop -  apresentação

Collections

Métodos Collections

Rosicléia Frasson - 2014

min(Collection): Retorna o menor elemento da coleção.

ArrayList numeros = new ArrayList();numeros.add(-1);numeros.add(4);numeros.add(-56);numeros.add(-7);

int menor = Collections.min(numeros);System.out.println("Menor: "+ menor);

Page 129: Programação desktop -  apresentação

Collections

Métodos Collections

Rosicléia Frasson - 2014

reverse(List): Inverte a lista.

arrayList.add("Ana");arrayList.add("Maria");arrayList.add("Joana");arrayList.add("Zenilda");arrayList.add("Karla");

Collections.reverse(arrayList);

Page 130: Programação desktop -  apresentação

Collections

java.util.Set

Rosicléia Frasson - 2014

Um conjunto Set não permite elementos duplicados.

Os elementos possuem uma forma especial de ordenação.

Collection<Integer> numeros = new HashSet();numeros.add(1);numeros.add(5);numeros.add(66);

Page 131: Programação desktop -  apresentação

Collections

Performance List X Set

Rosicléia Frasson - 2014

Collection<Integer> colecao = new HashSet<Integer>();long tempoInicial = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {

colecao.add(i);}for (int i = 0; i < 100000; i++) {

colecao.contains(i);}long tempoFinal = System.currentTimeMillis();System.out.printf("Tempo em milisegundos: ", (tempoFinal - tempoInicial));

Page 132: Programação desktop -  apresentação

Exceptions

Stacktrace

Rosicléia Frasson - 2014

main

primeiroMetodo

segundoMetodo

terceiroMetodo

Pilha de execução

Método com erro

Page 133: Programação desktop -  apresentação

Exceptions

Rosicléia Frasson - 2014

Page 134: Programação desktop -  apresentação

Exceptions

Tratamento de exceção

Rosicléia Frasson - 2014

O Java possui dois tipos de exceções:

unchecked: o compilador não checa se a exceção está sendo tratada.

checked: o compilador checa se a exceção está devidamente tratada.

Page 135: Programação desktop -  apresentação

Exceptions

Tratamento de exceção

Rosicléia Frasson - 2014

Page 136: Programação desktop -  apresentação

Exceptions

Tratamento de exceção

Rosicléia Frasson - 2014

Page 137: Programação desktop -  apresentação

Exceptions

Criação de um tipo de exceção

Rosicléia Frasson - 2014

Page 138: Programação desktop -  apresentação

Java.io

API Java.io

Rosicléia Frasson - 2014

Consiste em uma hierarquia de classes responsáveis pelo controle de entrada e saída de dados.

Page 139: Programação desktop -  apresentação

Java.io

Classe File

Rosicléia Frasson - 2014

A classe File lida diretamente com arquivos e sistema de arquivos.

Page 140: Programação desktop -  apresentação

Java.io

Classe File

Rosicléia Frasson - 2014

A classe File também possibilita a criação de arquivos e diretórios, bem como a remoção dos mesmos.

Page 141: Programação desktop -  apresentação

IO

Fluxo de bytes

Rosicléia Frasson - 2014

Saída de dados

Page 142: Programação desktop -  apresentação

IO

Fluxo de bytes

Rosicléia Frasson - 2014

Entrada de dados

Page 143: Programação desktop -  apresentação

IO

Rosicléia Frasson - 2014

Page 144: Programação desktop -  apresentação

IO

Fluxo de caracteres

Rosicléia Frasson - 2014

O fluxo de caracteres foi adicionado no Java 5 e fornecem um meio para entrada e saída de caracteres.

As classes abstratas Reader e Writer representam as superclasses da hierarquia de classes responsáveis pelo fluxo de caracteres.

Reader é usada para leitura de dados e Writer para saída. As classes da hierarquia trabalham com caracteres Unicode.

Page 145: Programação desktop -  apresentação

IO

Classe Reader

Rosicléia Frasson - 2014

Page 146: Programação desktop -  apresentação

IO

Classe Reader

Rosicléia Frasson - 2014

Page 147: Programação desktop -  apresentação

IO

Classe Writer

Rosicléia Frasson - 2014

Page 148: Programação desktop -  apresentação

IO

Classe Writer

Rosicléia Frasson - 2014

Page 149: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Modelo relacional

Page 150: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Modelo relacional

Entidades : São objetos do mundo real dentro do domínio da aplicação.

Atributos: São as propriedades que descrevem as entidades. Chaves: São atributos ou conjuntos de atributos que permitem

identificar sem ambiguidade cada instância de uma entidade, ou seja, garante a distinção entre as ocorrências das entidades.

Relacionamentos: São associações entre duas entidades ou entre uma entidade e ela mesma.

Page 151: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Relacionamentos

Um-para-um

Page 152: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Relacionamentos

Um-para-muitos

Page 153: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Relacionamentos

Muitos para muitos

Page 154: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

SQLSQL

Strutured Query Language

DDL Data Definition Language

DMLData Manipulation

Language

Page 155: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

SQL - DDL (Data Definition Language)

Page 156: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

SQL - DML (Data Manipulation Language)

Page 157: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Page 158: Programação desktop -  apresentação

Banco de dados e JDBC

Rosicléia Frasson - 2014

Page 159: Programação desktop -  apresentação

SVN

Rosicléia Frasson - 2014