O documento descreve os principais tópicos a serem abordados em um curso ou treinamento de Java, incluindo fundamentos da linguagem Java, orientação a objetos, coleções, exceções, entrada e saída de arquivos, banco de dados, interfaces gráficas e controle de versões.
5. 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
9. Sintaxe da linguagem Java
Ponto e vírgula, blocos, espaços em branco e case-sensitive
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.
Rosicléia Frasson - 2014
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." );
}
}
}
10. Sintaxe da linguagem Java
Palavras reservadas
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
Rosicléia Frasson - 2014
void volatile while
11. Sintaxe da linguagem Java
Tipos primitivos
Classificação Tipo Tamanho
lógico boolean 1 bit
Rosicléia Frasson - 2014
inteiro
byte 1 byte
short 2 bytes
int 4 bytes
long 8 bytes
ponto flutuante
float 4 bytes
double 8 bytes
caracter char 2 bytes
`
12. 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) -----
13. Sintaxe da linguagem Java
Declaração de variáveis
tipo nome Valor inicial
Rosicléia Frasson - 2014
double peso;
int idade;
char sexo;
double salario = 1200.00;
boolean ligado = true;
14. 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
15. 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
16. Sintaxe da linguagem Java
Declaração de variáveis
Date data; //data de devolução do produto X
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.
segue padrão?
Date dataDevolucaoProduto;
Date dt; X
17. Sintaxe da linguagem Java
Declaração de variáveis
String cliente; X
Rosicléia Frasson - 2014
Convenções
É indicado utilizar nomes que refletem o domínio em que o software será
utilizado.
segue padrão?
String contribuinte;
String usuário; X
18. Sintaxe da linguagem Java
Declaração de variáveis
* É uma sigla conhecida
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
19. 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.
20. 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
X
String dtValidadeProdutoVendido;
21. 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
22. Sintaxe da linguagem Java
Entrada e saída de dados
Classe Scanner e objeto System.in
import java.util.Scanner;
public class EntradaSaidaDadosConsole {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
Rosicléia Frasson - 2014
entrada.close();
}
}
23. Sintaxe da linguagem Java
Entrada e saída de dados
Métodos Classe Scanner e objeto System.out
System.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);
Rosicléia Frasson - 2014
24. Sintaxe da linguagem Java
Operadores básicos
. 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.
Rosicléia Frasson - 2014
25. Sintaxe da linguagem Java
Operadores lógicos
Rosicléia Frasson - 2014
> Maior
>= Maior ou igual
< Menor
<= Menor ou igual
== Igual
!= Diferente
&& E
|| OU
26. Sintaxe da linguagem Java
Operador condicional ternário
condição ? caso verdadeiro : caso falso
Scanner entrada = new Scanner(System.in);
Rosicléia Frasson - 2014
double nota;
System.out.println("Informe a nota do aluno: ");
nota = entrada.nextDouble();
System.out.println(nota >= 7 ? " Aluno aprovado " : " Aluno reprovado");
28. Sintaxe da linguagem Java
Operadores aritméticos
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;
Rosicléia Frasson - 2014
quociente = 2
quociente = 2.5
29. 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);
30. Sintaxe da linguagem Java
Operadores de atribuição
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
Rosicléia Frasson - 2014
31. Sintaxe da linguagem Java
Tipos primitivos e variáveis de referência
Rosicléia Frasson - 2014
34. 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: "));
35. 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.
36. Sintaxe da linguagem Java
Comando if ... else
Rosicléia Frasson - 2014
if (expressão){
bloco de comandos
} else{
bloco de comandos
}
37. 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();
}
}
38. 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;
}
39. 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!");
}
40. Sintaxe da linguagem Java
Estruturas de repetição
Uma estrutura de repetição permite que um programa execute
um bloco de instruções repetidamente enquanto a condição do
loop continue verdadeira.
Rosicléia Frasson - 2014
41. Sintaxe da linguagem Java
Comando for
for (inicialização; condição; incremento){
Rosicléia Frasson - 2014
bloco de comandos;
}
42. Sintaxe da linguagem Java
Comando for
public class RepeticaoFor {
public static void main(String[] args) {
for (int num = 0; num <=10; num++){
System.out.println(num);
Rosicléia Frasson - 2014
}
}
}
43. Sintaxe da linguagem Java
Comando while
Rosicléia Frasson - 2014
while (condição){
bloco de comandos;
}
44. Sintaxe da linguagem Java
Comando while
public class RepeticaoWhile {
public static void main(String[] args) {
Rosicléia Frasson - 2014
int num = 0;
while (num <= 10 ){
System.out.println(num);
num++;
}
}
}
45. Sintaxe da linguagem Java
Comando do ... while
Rosicléia Frasson - 2014
do{
bloco de comandos;
} while (condição);
46. Sintaxe da linguagem Java
Comando do ... while
import java.util.Scanner;
public class RepeticaoDoWhile {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
Rosicléia Frasson - 2014
int num;
do{
System.out.println("Informe um número: ");
num = entrada.nextInt();
}while(num > 0);
entrada.close();
}
}
47. Sintaxe da linguagem Java
Comando break
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)
Rosicléia Frasson - 2014
break;
}
}
}
48. Sintaxe da linguagem Java
Comando continue
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){
Rosicléia Frasson - 2014
continue;
}
System.out.println(num);
}
}
}
49. Sintaxe da linguagem Java
Comentários
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.
Rosicléia Frasson - 2014
50. Sintaxe da linguagem Java
Arrays
String[] nome = new String[10];
0 1 2 3 4 5 6 7 8 9
Rosicléia Frasson - 2014
nome[0] = "Maria";
0 1 2 3 4 5 6 7 8 9
Maria
51. 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();
}
}
52. Sintaxe da linguagem Java
Comando for each
Percorre uma coleção de dados sem a utilização de um contador explícito;
for ( declaração: expressão){
bloco de comandos;
Rosicléia Frasson - 2014
}
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.
53. Sintaxe da linguagem Java
Comando for each
public class ComandoForAprimorado {
public static void main(String[] args) {
Rosicléia Frasson - 2014
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);
}
}
54. Programação Orientada a Objetos
Organização POO
Rosicléia Frasson - 2014
Lógica de
negócio
encapsulada
Simplicidade
Alinhamento
com o modelo
de negócio
Flexibilidade
Redução da
quantidade
de código
56. Programação Orientada a Objetos
Objetos
Rosicléia Frasson - 2014
Funcionário
Jessica Funcionário
Márcio
Cupom fiscal
Augusto
Cupom fiscal
Fernando
Gerente João
Supermercado
Cliente
Augusto
Cliente
Fernando
Produto
despertador
Produto
queijo
Produto
torrada
57. Programação Orientada a Objetos
Classe
Funcionários
Rosicléia Frasson - 2014
Matrícula: 1234
Nome: João da Silva
Sexo: M
Matrícula: 2678
Nome: Joana Monteiro
Sexo: F
Matrícula: 9876
Nome: Marcio Oliveira
Sexo: M
- Recebe aumento
- Troca turno
Classe
Atributos Métodos
61. Programação Orientada a Objetos
Métodos
Assinatura do método = nome do método + lista de parâmetros
Rosicléia Frasson - 2014
62. Programação Orientada a Objetos
Métodos
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.
Rosicléia Frasson - 2014
63. Programação Orientada a Objetos
Métodos
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.
Rosicléia Frasson - 2014
65. Programação Orientada a Objetos
Sobrecarga de métodos
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.
Rosicléia Frasson - 2014
67. Programação Orientada a Objetos
Instâncias de classes
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.
Rosicléia Frasson - 2014
68. 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;
STACK
p1 @314955ec
p2 @896674ae
p3 null
HEAP
p1
p2
69. Programação Orientada a Objetos
Métodos equals e toString
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.
Rosicléia Frasson - 2014
(p1.equals(p))
p.toString();
(p1.equals(p))
p.toString();
70. Programação Orientada a Objetos
Construtor
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.
Rosicléia Frasson - 2014
(p1.equals(p))
p.toString();
78. Programação Orientada a Objetos
Métodos estáticos
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.
Rosicléia Frasson - 2014
80. Programação Orientada a Objetos
Classe Math
Disponibiliza uma série de operações e constantes
matemáticas.
Math.PI - Constante PI
Math.pow(a, b) - Potência na forma ab
Math.sqrt(a) - Raiz quadrada de a
Math.cbrt(a) - Raiz cúbica de a
Math.abs(a) - Retorna o valor absoluto de a
Math.min(a, b) - Retorna o menor valor
Math.max(a, b) - Retorna o maior valor
Math.ceil(a) - Arredonda para cima
Math.floor(a) - Arrenda para baixo
Rosicléia Frasson - 2014
81. Programação Orientada a Objetos
Enum
É 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.
Rosicléia Frasson - 2014
86. 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.
87. Programação Orientada a Objetos
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.
Rosicléia Frasson - 2014
88. Programação Orientada a Objetos
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.
package br.com.nomeempresa.sintaxeBasica;
Classes que não possuem a instrução package pertencem ao
pacote default.
Rosicléia Frasson - 2014
89. Programação Orientada a Objetos
javax.swing.JOptionPane.showMessageDialog(null, "Exemplo
utilização de nome plenamente qualificado do tipo");
Rosicléia Frasson - 2014
Importação de classes
Nome plenamente qualificado
Importação de pacotes
import javax.swing.JOptionPane;
public class Pacote {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Exemplo
utilização de importação de pacote");
}
}
90. Programação Orientada a Objetos
Rosicléia Frasson - 2014
Pacotes JSE
Pacote Funcionalidade
java.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.
91. Programação Orientada a Objetos
Encapsulamento
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.
Rosicléia Frasson - 2014
93. Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
public
protected
default
private
94. Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
public
Membro 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.
95. Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
protected
Membro 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.
96. Programação Orientada a Objetos
Modificadores de acesso
Rosicléia Frasson - 2014
default
Ausê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.
97. 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;
98. Programação Orientada a Objetos
Gets e sets
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.
Rosicléia Frasson - 2014
101. Programação Orientada a Objetos
Herança
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.
Rosicléia Frasson - 2014
103. Programação Orientada a Objetos
Herança
public class PessoaJuridica {
}
public class Fabricante extends PessoaJuridica{
}
public class Fornecedor extends PessoaJuridica{
Rosicléia Frasson - 2014
}
104. Programação Orientada a Objetos
Sobrescrita de métodos
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.
Rosicléia Frasson - 2014
106. Programação Orientada a Objetos
Sobrescrita de métodos
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.
Rosicléia Frasson - 2014
107. Programação Orientada a Objetos
Modificador final
Impede que uma classe seja extendida;
Impede que um método seja sobrescrito.
Rosicléia Frasson - 2014
108. Programação Orientada a Objetos
Polimorfismo
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.
Rosicléia Frasson - 2014
109. Programação Orientada a Objetos
Classe abstrata
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.
Rosicléia Frasson - 2014
112. Programação Orientada a Objetos
Interface
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.
Rosicléia Frasson - 2014
116. Programação Orientada a Objetos
Classes Wrappers
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.
Rosicléia Frasson - 2014
117. Programação Orientada a Objetos
Classes Wrappers
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");
Rosicléia Frasson - 2014
118. Programação Orientada a Objetos
Classes Wrappers
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.
Rosicléia Frasson - 2014
Integer a;
int b = a.intValue();
120. Collections
Listas: java.util.List
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.
Rosicléia Frasson - 2014
121. Collections
Listas: java.util.List
ArrayList<String> arrayList = new ArrayList();
LinkedList<String> linkedList = new LinkedList();
Vector<String> vector = new Vector();
Rosicléia Frasson - 2014
122. Collections
Listas
O método add adiciona um
elemento no fim da lista.
Rosicléia Frasson - 2014
lista.add(p);
System.out.println(lista.size());
O método size retorna a
quantidade de elementos que a
lista possui.
123. 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.
124. Collections
Listas: Array List
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.
Rosicléia Frasson - 2014
125. Collections
Método sort
O método sort recebe um List como argumento e ordena em
ordem crescente.
arrayList.add("Ana");
arrayList.add("Maria");
arrayList.add("Joana");
arrayList.add("Zenilda");
arrayList.add("Karla");
Collections.sort(arrayList);
Para efetuar a ordenação um objeto precisa implementar a
interface Comparable que define o método compareTo.
Rosicléia Frasson - 2014
126. Collections
Métodos Collections
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);
Rosicléia Frasson - 2014
127. Collections
Métodos Collections
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);
Rosicléia Frasson - 2014
128. Collections
Métodos Collections
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);
Rosicléia Frasson - 2014
130. Collections
java.util.Set
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);
Rosicléia Frasson - 2014
131. Collections
Performance List X Set
Collection<Integer> colecao = new HashSet<Integer>();
long tempoInicial = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
Rosicléia Frasson - 2014
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));
132. Exceptions
Stacktrace
Rosicléia Frasson - 2014
terceiroMetodo
segundoMetodo
primeiroMetodo
main
Pilha de execução
Método com
erro
134. Exceptions
Tratamento de exceção
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.
Rosicléia Frasson - 2014
138. Java.io
API Java.io
Consiste em uma hierarquia de classes responsáveis pelo
controle de entrada e saída de dados.
Rosicléia Frasson - 2014
139. Java.io
Classe File
A classe File lida diretamente com arquivos e
sistema de arquivos.
Rosicléia Frasson - 2014
140. Java.io
Classe File
A classe File também possibilita a criação de
arquivos e diretórios, bem como a remoção dos
mesmos.
Rosicléia Frasson - 2014
141. IO
Fluxo de bytes
Rosicléia Frasson - 2014
Saída de dados
142. IO
Fluxo de bytes
Rosicléia Frasson - 2014
Entrada de dados
144. IO
Fluxo de caracteres
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.
Rosicléia Frasson - 2014
149. Banco de dados e JDBC
Rosicléia Frasson - 2014
Modelo relacional
150. 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.
151. Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Um-para-um
152. Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Um-para-muitos
153. Banco de dados e JDBC
Rosicléia Frasson - 2014
Relacionamentos
Muitos para muitos
154. Banco de dados e JDBC
Rosicléia Frasson - 2014
SQL
SQL
Strutured Query
Language
DDL
Data Definition
Language
DML
Data Manipulation
Language
155. Banco de dados e JDBC
SQL - DDL (Data Definition Language)
Rosicléia Frasson - 2014
156. Banco de dados e JDBC
SQL - DML (Data Manipulation Language)
Rosicléia Frasson - 2014