Buscar

sisprog03_poo_parte3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada a Objetos 
Parte 3 
Notas de aula baseadas no curso do prof. 
Flavio Elias 
Sistemas	
  de	
  Programação	
  	
  
Turma	
  B	
  –	
  2s2014	
  
Daniel	
  Guerreiro	
  e	
  Silva	
  
Declarações e Controle de 
Acesso 
Pacotes 
•  É um conjunto de classes java organizados 
em uma “estrutura de diretório”. 
•  Normalmente, os pacotes são organizados 
por categoria, e muitas vezes as classes que 
fazem parte de um mesmo pacote tem 
relação entre si. 
•  Declaração de que uma classe pertence a 
um pacote: 
package nomepacote; 
3 
Pacotes 
•  Quando se utilizam classes que fazem 
parte de outro pacote (que também não 
seja java.lang.*, pacote pré-carregado 
por padrão), é necessário acrescentar o 
nome do pacote na lista de imports: 
 import java.util.*; 
4 
Declarações e Modificadores de 
Classe 
•  Modificadores de acesso 
–  Há 4 níveis de acesso, mas apenas 3 
modificadores. 
•  public, protected, private, default (sem 
modificador) 
–  Declaração de uma classe só pode ter o 
modificador public ou default (sem 
modificador) 
•  Modificadores não referentes a acesso 
– final, static, abstract, entre outros. 
5 
Declarações e Modificadores de 
Classe 
•  O que significa acessar uma classe? 
“Diretamente” 
–  Classe A criar uma instância da Classe B 
–  Classe A estender uma classe Classe B 
(tornar-se uma subclasse) 
“Indiretamente” 
–  Classe A acessar métodos e variáveis da 
Classe B (conforme o tipo de controle de 
acesso destes) 
6 
Declarações e Modificadores de 
Classe 
•  Modificadores de Acesso 
–  Acesso default (sem modificador): 
•  Permite acesso apenas a classes do mesmo 
pacote. 
•  Também chamado de Acesso em Nível de Pacote. 
–  Acesso public: 
•  Todas as classes de todos os pacotes podem 
acessar uma classe pública. 
7 
Declarações e Modificadores de 
Classe 
•  Modificadores não referentes a acesso 
–  Classes finais: 
•  Classes marcadas com o modificador “final”. 
•  Significa que a classe não pode ter subclasses. 
–  Classes abstratas: 
•  Classes marcadas com o modificador 
“abstract”. 
•  A classe não pode ser instanciada. 
•  Deve ser estendida (ter subclasses). 
•  Pode possuir métodos abstratos. 
•  Não pode ser final. 
8 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores de acesso 
–  Obs.: métodos e variáveis de instância (não 
locais) são conhecidos como membros. 
–  Membros Públicos 
•  Declarado com a palavra-chave “public”. 
•  Outras classes, independente do pacote a qual 
pertençam, poderão acessar o membro. 
–  Membros Privados 
•  Declarado com a palavra-chave “private”. 
•  Não podem ser acessados por membros de outra 
classe. 
9 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores de acesso 
–  Membros Default 
•  Declarado sem modificador de acesso. 
•  Podem ser acessados por classes do mesmo 
pacote. 
–  Membros Protegidos 
•  Declarado com a palavra-chave “protected”. 
•  Podem ser acessados por classes do mesmo 
pacote ou subclasses de outros pacotes. 
•  A subclasse só poderá ver o membro protegido 
através da herança. 
10 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores de acesso 
–  Modificadores e Variáveis Locais 
•  Nenhum modificador de acesso pode ser 
aplicado a variáveis locais. 
•  Somente o modificador (não referente a acesso) 
“final” pode ser aplicado a variáveis locais. 
•  Modificadores não referentes a acesso 
–  Métodos Finais 
•  Declarado com a palavra-chave “final”. 
•  O método não pode ser sobrescrito (overriding). 
11 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores não referentes a acesso 
–  Métodos Abstratos 
•  Declarado com a palavra-chave “abstract”. 
•  O método não é implementado. 
•  A implementação é feita em subclasses, através 
da sobrescrita do método. 
•  Não pode ser “final” e nem “private”. 
•  A classe também tem que ser abstrata. 
•  Uma classe concreta que estenda uma classe 
abstrata deve implementar todos os métodos 
abstratos. 
•  Exemplo: 
public abstract void sendData(byte[] dados); 
12 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores não referentes a acesso 
–  Métodos synchronized 
•  Método acessado por uma Thread de cada vez. 
–  Variáveis Finais 
int final RAIO = 3; 
•  Não podem ser reinicializadas (receber outra 
atribuição). 
•  A referência é final, mas o objeto não. 
13 
Declarações e Modificadores de 
Métodos e Variáveis 
•  Modificadores não referentes a acesso 
–  Membros Estáticos 
•  Declarado com a palavra-chave “static”. 
•  Membros estáticos pertencem à classe, em vez 
de a qualquer instância específica. 
•  Membro estático pode ser acessado sem existir 
nenhuma instância da classe. 
•  Como acessar: 
–  NomeClasse.nomeMetodo(); 
–  NomeClasse.nomeVariavel; 
•  Atenção: Um erro comum é tentar acessar um 
membro não estático a partir do método main(). 
14 
Regras de Declaração de Classes 
•  Apenas 1 classe pública por arquivo .java 
–  Ou seja, o mesmo arquivo pode ter múltiplas 
classes! 
•  Nome do arquivo = Nome da classe pública 
•  Declaração de pacote na 1ª linha do código 
•  Importação depois da declaração de pacote 
(se houver) e antes da declaração de classe 
15 
Regras de Declaração 
•  Estrutura do arquivo de código-fonte 
16 
package br.unb.principal; 
 
import java.util.*; 
import br.unb.utilitarios.Util; 
 
// Esta é uma classe de teste 
public class Teste { 
 public static void main(String[] args) { 
 System.out.println(Util.converteKgOz(args[0])); 
 } 
} 
Implementação de Interfaces 
•  Uma Interface define o que uma classe 
(que a implementa) pode fazer, mas não 
define como fazer. 
•  É uma “classe” 100% abstrata. 
•  Todos os métodos são implicitamente 
public abstract. 
•  Os métodos não podem ser estáticos. 
•  Todas as variáveis são implicitamente 
public static final, ou seja, 
constantes. 17 
Implementação de Interfaces 
•  Uma interface pode ter herança: estender 
uma ou mais interfaces diferentes. 
•  Não pode implementar outra interface ou 
classe. 
•  É declarada com a palavra-chave 
interface 
18 
Implementação de Interfaces 
•  Definindo	
  uma	
  interface:	
  
19 
public interface Conexao { 
 public static final int TIMEOUT = 60; //segundos 
 int RETRY = 5; 
 
 boolean conectar(String endereco); 
 
 public abstract boolean desconectar(); 
 
 void enviarDados(byte[] dados); 
} 
Implementação de Interfaces 
•  Implementando	
  uma	
  interface:	
  
20 
public class ConexaoSemFio implements Conexao { 
 boolean conectar(String endereco) { 
 // Código específico 
 for(int i=0; i<RETRY; i++) { } 
 } 
 public boolean desconectar() { 
 // Código específico 
 } 
 void enviarDados(byte[] dados) { 
 // Código específico 
 } 
} 
Classes Internas 
Classes Internas (Inner Classes) 
§  São	
  Classes	
  que	
  são	
  implementadas	
  dentro	
  de	
  
outras	
  classes	
  
class MyOuter { 
 class MyInner { } 
} 
 
29/09/14 22 
Classes Internas (Inner Classes) 
public class Externa { 
 private int x; 
 public class Interna { 
 public void metodoI () { 
 System.out.println(“x = ” + x); 
 } 
 } 
 public void metodoE () { 
 Interna interna = new Interna (); 
 interna.metodoI(); 
 } 
} 23 
Classes Internas 
•  Acesso a partir de um método ou classe 
que não seja nem da classe Externa nem 
da Interna: 
Externa.Interna 
24 
Classes Internas 
public	
  staFc	
  voidmain	
  (String[]	
  args)	
  {	
  
	
  MyOuter	
  mo	
  =	
  new	
  MyOuter();	
  
	
  MyOuter.MyInner	
  inner	
  =	
  mo.new	
  MyInner();	
  
	
  inner.seeOuter();	
  
}	
  
	
  
25 
Classes Locais (a métodos) 
class	
  MyOuter2	
  {	
  
	
  private	
  String	
  x	
  =	
  "Outer2";	
  
	
  void	
  doStuff()	
  {	
  
	
   	
  class	
  MyInner	
  {	
  
	
   	
   	
  public	
  void	
  seeOuter()	
  {	
  
	
   	
   	
   	
  System.out.println("Outer	
  x	
  is	
  "	
  +	
  x);	
  
	
   	
   	
  }	
  
	
   	
  }	
  	
  
	
  }	
  
}	
  
26 
Classes Locais (a métodos) 
•  Não podem ser referenciadas de fora do 
método. 
27 
Classes Anônimas 
public void metodoBeta() { 
 botao.addActionListener( new ActionListener() { 
 public void actionPerformed(ActionEvent e) { 
 System.out.println(“Ação”); 
 } 
 } 
 ); 
) 
Crie uma nova classe (sem nome) que implemente a 
interface ActionListener e, a propósito aqui esta a 
implementação dos métodos da interface: 
actionPerformed 
28 
Nested Classes 
•  São	
  staFc	
  inner	
  classes	
  
•  Não	
  tem	
  o	
  mesmo	
  relacionamento	
  com	
  as	
  
classes	
  externas	
  tal	
  como	
  as	
  classes	
  internas	
  
regulares	
  tem	
  
class BigOuter { 
 static class Nested { ...} 
 ... 
} 
29 
Nested Classes 
class BigOuter { 
 static class Nested { } 
} 
class Broom { 
 public static void main (String [] 
args) { 
 BigOuter.Nested n = new 
BigOuter.Nested(); 
 } 
} 
30

Outros materiais