Escolar Documentos
Profissional Documentos
Cultura Documentos
Cur So Java
Cur So Java
Orientado a Objetos
em Java
Fev/2010
p ro g ra m a f o n t e (. ja v a )
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
_ __ ___ ______ ___ __
__
compilador
b y te c o d e ( .c l a s s )
100 10 000 111 000
101 01 011 101 011
100 00 111 100 010
101 01 010 101 010
101 01 011 110 100
110 00 101 110 101
010 10 101 010 101
M á q u in a V i r t u a l p / M á q u i n a V i r tu a l p / M á q u i n a V i r tu a l p /
S o l a r is W in d o w s X P L in u x
S o la r is W in d o w s X P L in u x
Após a compilação:
É gerado um arquivo .class para cada .java
correspondente.
String nome;
int i = 5;
int j = i++;
System.out.println(i); // ira imprimir o valor 6
System.out.println(j); // ira imprimir o valor 5
int k = ++i;
System.out.println(i); // ira imprimir o valor 7
System.out.println(k); // ira imprimir o valor 7
Literal interpretado
como do tipo float
else {
System.out.println("x é maior que y ");
z = y;
}
Conectores lógicos:
&& (AND)
|| (OR)
! (NOT)
Sintaxe:
for(inicialização;expressão-
booleana;incremento)
bloco-de-comandos
inicialização incremento
Ex.:
Ex.:
int i = 0;
while(i < 10) {
System.out.println("O valor de i: " + i);
}
Ex.:
int i = 0;
do {
System.out.println("O valor de i: " + i);
}
while(i < 10)
int x = 0;
for(int i = 0; i < 10; i++) {
x = x + i;
if(x > 15)
break;
}
for(;;){
System.out.println("Está em loop infinito");
}
Orientação a objetos:
É um paradigma de programação
A solução do problema corresponde a interações
de objetos criados em tempo de execução
Em Java:
Identidade: endereço do objeto na memória
Estado: valores armazenados no objeto
Comportamento: operações aplicáveis sobre o
objeto
Analogia:
Planta de um edifício (especificação da classe)
O edifício construído (objeto)
Operações:
Métodos ou mensagens
Membros:
Usado indistintamente para atributos e métodos
construtores
metodos
}
Exs.:
System
Object
String
M e m ó r ia
x y
int x = 2;
int y = x; 2 2
Memória
“AAA”
msg1
msg2
“BBB”
msg1 = msg2; The image cannot be display ed. Your computer may not hav e enough memory to open the image, or the image may hav e been corrupted. Restart y our computer, and then open the file again. If the red x still appears, y ou may hav e to delete the image and then insert it again.
M e m ó ria
“A A A ”
m sg1
m sg2 “B B B ”
objetos diferentes
“A A A ”
m sg1
m sg2 “A A A "
linhas
posição de início
da cópia
Prof. Rômulo Silva
Arrays - varredura
Utilizando a propriedade length:
int[] meuArray = {10,20,30};
for(int i = 0; i < meuArray.length; i++){
System.out.println(meuArray[i]);
}
Efeito:
A classe derivada (especializada) herda todos os
atributos e métodos definidos na classe genérica
incrementaIdade(): void
Aluno
matricula
Pessoa
nome
idade
atributos e método
incrementaIdade(): void herdados pela classe Aluno
Aluno
matricula
Aplicação da herança:
Reuso de código (implementação)
A B
C chamada ambígua
chamada inválida
(erro de compilação)
Ex.:
casting
Aluno Funcionario
getSalario(): float
Professor Diretor
executa método
definido na classe Funcionario
executa método
definido na classe Professor
executa método
definido na classe Professor
executa a definição de
getSalario() com
parâmetro do tipo float
boolean temAbono;
Versões do método
getSalario()
Aluno Funcionario
getSalario(): float
Professor Diretor
Convenção de nomeação:
Em letras minúsculas
Agregar ao nome do pacote o domínio da
empresa (Internet) de trás para frente
Exs:
• package org.eclipse.core.runtime;
• package com.sun.java.swing;
Ex.:
package com.b3informatica.biblioteca;
class Livro {
...
}
class Livro {
...
}
com.b3informatica.biblioteca.Livro
package com.empresa.biblioteca;
class Livro {
...
}
com.empresa.biblioteca.Livro
package com.b3informatica.biblioteca;
class Livro {
...
}
com.b3informatica.biblioteca;
Prof. Rômulo Silva
Reutilização de pacotes
Para usar classes de um pacote deve-se importá-la
Sintaxe:
import nomedopacote.NomedaClasse;
Declaração de import deve antes da definição da
classe cliente, após a declaração do pacote.
package com.empresa.informatica;
classe importada
import java.io.FileInputStream;
class Livro {
...
}
Sintaxe:
modificador-visibilidade atributo;
modificador tipo-retorno nomeMetodo (lista-
parâmetros) {
Corpo-metodo
}
modificador de método
package com.empresa.biblioteca;
import java.io.*;
public ContaInstancia() {
nroInstancias++; chamada de
} método estático
Figura
desenha()
Sintaxe:
interface NomeInterface {
assinaturasMetodos
}
<<interface>>
Conjunto
addElemento(Object x): void
removeElemento(Object x): void
getElemento(int pos): Object
MeuConjunto
MeuConjunto ConjuntoTamFixo
...
String str = "um elemento";
conj.addElemento(str);
...
válido para objetos
da classe Conjunto e
ConjuntoTamFixo
Erros incontornáveis:
Falta de memória, erro interno da JVM
Sintaxe:
public tipo-retorno nomeMetodo(lista-
parametros) throws TipoExcecao1,
TipoExcecao2, ..., TipoExcecaoN {
// corpo do método
...
}
<<interface>> <<interface>>
java.util.List java.util.Set
List:
Seqüência definida
Elementos indexados
Set:
Seqüência arbitrária
Não há elementos repetidos
TreeSet
Implementação de uma árvore rubro-negra
(Red-black Tree)
LinkedHashSet
Implementação de lista ligada e hash table com
inserção ordenada
LinkedList
Implementação de lista duplamente encadeada
Vector
Implementação de array redimensionável
sincronizado
Implementações:
PriorityQueue: fila implementada através de
uma estrutura de dados heap
ConcurrentLinkedQueue: fila bloqueante não
limitada baseada em nós ligados.
ArrayBlockingQueue: fila bloqueante limitada
usando array
Ex.:
Pilha p = new Pilha(5);// elementos
do tipo Object
Pilha p2 = new Pilha<Integer>(7);//
elementos do tipo Integer
...
File f = new File("c:\\temp");
if(f.isDirectory()) {
String[] arqs = f.list();
...
InputStream OutputStream
ByteArrayInputStream ByteArrayOutputStream
FileInputStream FileOutputStream
FilterInputStream FilterOutputStream
BufferedInputStream BufferedOutputStream
Reader Writer
BufferedReader BufferedWriter
InputStreamReader OutputStreamWriter
FileReader FileWriter
ja v a .a w t.C o m p o n e n t
ja v a .a w t.C o n ta in e r
ja v a x .s w in g .J C o m p o n e n t
WEST
EAST
SOUTH
public TesteBorderLayout(){
super("Teste de BorderLayout");
Container c = getContentPane();
c.setLayout(new BorderLayout());
JTextArea area = new JTextArea();
area.setText("linha1/nlinha2/nlinha3");
c.add(new JLabel("Nome"), BorderLayout.WEST);
c.add(new JTextField("Joao da Silva"), BorderLayout.EAST);
c.add(new JButton("Confirma"), BorderLayout.SOUTH);
c.add(new JTextArea("linha1\nlinha2\nlinha3"),
BorderLayout.CENTER);
setSize(400,120);
setVisible(true);
}
public static void main(String[] args) {
TesteBorderLayout fr = new TesteBorderLayout();
}
}
public TestaCombinacaoLeiaute(){
super("Teste de BorderLayout");
Container c = getContentPane();
c.setLayout(new BorderLayout());
JTextArea area = new JTextArea();
area.setText("linha1/nlinha2/nlinha3");
c.add(new JLabel("Nome"), BorderLayout.WEST);
c.add(new JTextField("Joao da Silva"), BorderLayout.EAST);
JPanel painelBotoes = new JPanel();
painelBotoes.setLayout(new FlowLayout()); Composição
painelBotoes.add(new JButton("Confirma")); de leiautes
painelBotoes.add(new JButton("Cancela"));
c.add(painelBotoes , BorderLayout.SOUTH);
c.add(new JTextArea("linha1\nlinha2\nlinha3"),
BorderLayout.CENTER);
setSize(400,120);
setVisible(true);
}
...
Prof. Rômulo Silva
Swing – mais Leiautes
BoxLayout
GridBagLayout
CardLayout
java.util.EventObject
java.awt.AWTEvent
KeyEvent MouseEvent
Formulário 1
Formulário 2
Padrão de nome:
WindowListener -> WindowAdapter
MouseListener -> MouseAdapter
KeyListener -> KeyAdapter
...
// em outro arquivo
public class TrataEventoJanela extends WindowAdapter {
public void windowClosed(WindowEvent e) {
// aqui implementa-se o tratamento desejado
...
}
}
...
} classe anônima
...