View
534
Download
7
Category
Preview:
DESCRIPTION
Programação Desktop
Citation preview
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
Fundamentos da linguagem Java
Distribuições do Java
Rosicléia Frasson - 2014
Fundamentos da linguagem Java
Compilador e interpretador Java
Rosicléia Frasson - 2014
Fundamentos da linguagem Java
Java SE
Rosicléia Frasson - 2014
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
Fundamentos da linguagem Java
IDE - Eclipse
Rosicléia Frasson - 2014
Fundamentos da linguagem Java
Gerenciamento de memória Java
Rosicléia Frasson - 2014
Fundamentos da linguagem Java
Garbage Collector
Rosicléia Frasson - 2014
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." );
}}
}
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
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
`
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) -----
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;
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
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
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
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
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
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.
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
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
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();}
}
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);
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.
Sintaxe da linguagem Java
Operadores lógicos
Rosicléia Frasson - 2014
> Maior>= Maior ou igual< Menor
<= Menor ou igual== Igual!= Diferente
&& E|| OU
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
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)
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
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);
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
Sintaxe da linguagem Java
Tipos primitivos e variáveis de referência
Rosicléia Frasson - 2014
Sintaxe da linguagem Java
Pool de Strings
Rosicléia Frasson - 2014
Sintaxe da linguagem Java
Classe String: métodos utilitários
Rosicléia Frasson - 2014
equals replace trim contains lenght toUpperCase toLowerCase charAt substring valueOf
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: "));
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.
Sintaxe da linguagem Java
Comando if ... else
Rosicléia Frasson - 2014
if (expressão){
bloco de comandos
} else{
bloco de comandos
}
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();
}}
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;}
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!");}
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.
Sintaxe da linguagem Java
Comando for
Rosicléia Frasson - 2014
for (inicialização; condição; incremento){ bloco de comandos;}
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);}
}}
Sintaxe da linguagem Java
Comando while
Rosicléia Frasson - 2014
while (condição){
bloco de comandos;
}
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++;
}}
}
Sintaxe da linguagem Java
Comando do ... while
Rosicléia Frasson - 2014
do{
bloco de comandos;
} while (condiçã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();}
}
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;
}}
}
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);}
}}
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.
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
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();}
}
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.
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);
}}
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
Programação Orientada a Objetos
Princípios POO
Rosicléia Frasson - 2014
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
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
Programação Orientada a Objetos
Classe
Rosicléia Frasson - 2014
Representação UML
Programação Orientada a Objetos
Classe
Rosicléia Frasson - 2014
Classe Java
Programação Orientada a Objetos
Atributos
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Métodos
Rosicléia Frasson - 2014
Assinatura do método = nome do método + lista de parâmetros
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.
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.
Programação Orientada a Objetos
Métodos
Rosicléia Frasson - 2014
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.
Programação Orientada a Objetos
Sobrecarga de métodos
Rosicléia Frasson - 2014
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.
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
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();
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();
Programação Orientada a Objetos
Construtor
Rosicléia Frasson - 2014
(p1.equals(p))p.toString();
Programação Orientada a Objetos
Construtor
Rosicléia Frasson - 2014
(p1.equals(p))p.toString();
Programação Orientada a Objetos
Construtor
Rosicléia Frasson - 2014
(p1.equals(p))p.toString();
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;}
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
Programação Orientada a Objetos
Atributos estáticos
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Constantes
Rosicléia Frasson - 2014
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.
Programação Orientada a Objetos
Métodos estáticos
Rosicléia Frasson - 2014
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.
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.
Programação Orientada a Objetos
Enum
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Enum
Rosicléia Frasson - 2014
Os enums podem ser declarados
internamente em uma classe.
Programação Orientada a Objetos
Composição
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Composição
Rosicléia Frasson - 2014
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.
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.
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;
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"); }}
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.
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.
Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
public
protected
default
private
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.
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.
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.
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;
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.
Programação Orientada a Objetos
Gets e sets
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Gets e sets
Rosicléia Frasson - 2014
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.
Programação Orientada a Objetos
Herança
Rosicléia Frasson - 2014
Pessoa Jurídica
Fabricante Fornecedor
Programação Orientada a Objetos
Herança
Rosicléia Frasson - 2014
public class Fornecedor extends PessoaJuridica{
}
public class Fabricante extends PessoaJuridica{
}
public class PessoaJuridica {
}
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.
Programação Orientada a Objetos
Sobrescrita de métodos
Rosicléia Frasson - 2014
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.
Programação Orientada a Objetos
Modificador final
Rosicléia Frasson - 2014
Impede que uma classe seja extendida;
Impede que um método seja sobrescrito.
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.
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.
Programação Orientada a Objetos
Classe abstrata
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Classe abstrata
Rosicléia Frasson - 2014
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.
Programação Orientada a Objetos
Interface
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Interface
Rosicléia Frasson - 2014
Programação Orientada a Objetos
Classes Wrappers
Rosicléia Frasson - 2014
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.
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");
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();
Collections
Rosicléia Frasson - 2014
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.
Collections
Listas: java.util.List
Rosicléia Frasson - 2014
ArrayList<String> arrayList = new ArrayList();
LinkedList<String> linkedList = new LinkedList();
Vector<String> vector = new Vector();
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.
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.
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.
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);
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);
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);
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);
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);
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);
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));
Exceptions
Stacktrace
Rosicléia Frasson - 2014
main
primeiroMetodo
segundoMetodo
terceiroMetodo
Pilha de execução
Método com erro
Exceptions
Rosicléia Frasson - 2014
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.
Exceptions
Tratamento de exceção
Rosicléia Frasson - 2014
Exceptions
Tratamento de exceção
Rosicléia Frasson - 2014
Exceptions
Criação de um tipo de exceção
Rosicléia Frasson - 2014
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.
Java.io
Classe File
Rosicléia Frasson - 2014
A classe File lida diretamente com arquivos e sistema de arquivos.
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.
IO
Fluxo de bytes
Rosicléia Frasson - 2014
Saída de dados
IO
Fluxo de bytes
Rosicléia Frasson - 2014
Entrada de dados
IO
Rosicléia Frasson - 2014
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.
IO
Classe Reader
Rosicléia Frasson - 2014
IO
Classe Reader
Rosicléia Frasson - 2014
IO
Classe Writer
Rosicléia Frasson - 2014
IO
Classe Writer
Rosicléia Frasson - 2014
Banco de dados e JDBC
Rosicléia Frasson - 2014
Modelo relacional
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.
Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Um-para-um
Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Um-para-muitos
Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Muitos para muitos
Banco de dados e JDBC
Rosicléia Frasson - 2014
SQLSQL
Strutured Query Language
DDL Data Definition Language
DMLData Manipulation
Language
Banco de dados e JDBC
Rosicléia Frasson - 2014
SQL - DDL (Data Definition Language)
Banco de dados e JDBC
Rosicléia Frasson - 2014
SQL - DML (Data Manipulation Language)
Banco de dados e JDBC
Rosicléia Frasson - 2014
Banco de dados e JDBC
Rosicléia Frasson - 2014
SVN
Rosicléia Frasson - 2014
Recommended