Programação Orientada a Objetos*
description
Transcript of Programação Orientada a Objetos*
ProgramaçãoOrientada a Objetos*
PacotesProf. Isabel [email protected]://www.dcc.ic.uff.br/~isabel*Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA – Rafael Santos – Editora Campus – Série SBC
Pacotes
Aplicações em java envolvem múltiplas classes
Classes com propósito relacionado devem ser agrupadas
Classe de aplicação
Classes fornecedoras de serviços
Pacotes = estrutura de diretório +
.java (com a declaração do pacote) +
.class +
cláusula de importação na classe usuária
Pacotes
Pacotes e Modificadores de acesso
private + restritivo protected ausente (default) public - restritivo
Pacotes
Um nome declarado com o modificador ...
... private: só é acessível na própria classe;
... protected: só é acessível na própria classe e subclasses;
... ausente (default): só é acessível nas classes do pacote;
... public: acesso irrestrito.
Classe sem declaração de pacote: pertencem a um pacote padrão.Até o momento vínhamos declarando classes e construtores sem
modificadores: visíveis no pacote padrão !!!
Pacotes
Exemplo: Data, Hora, DataHora
serviço data serviço hora combina serviços data e hora
Pacote DataHora
1. Criar diretório DataHora (mesmo nome do pacote) contendo todas as classes do pacote
2. O diretório deve ser criado no caminho de procura de classes java3. Hierarquia em muitos níveis, refletindo o nome do domínio da instituição
em ordem reversa: UFF.graduaçãoComputação.POO nome do pacoteUFF\graduaçãoComputação\POO diretório do pacote
Pacotes
package DataHora;
public class Data {
byte dia;
byte mês;
short ano;
public Data(byte d,byte m,short a) {
dia = d; mês = m; ano = a; }
public String toString() {
return dia+"/"+mês+"/"+ano; }
} // fim da classe Data
DataHora/Data.java
Declaração do pacote DataHora: Primeira declaração da classe;
Colocar a classe Data dentro do diretório DataHora;
Public: qq outra classe (do pacote ou não) pode usar esta classe;
Construtor Public: caso contrário não seria possível criar instâncias desta classe aplicando o construtor;
Campos sem modificador: visíveis em todo pacote.
Pacotes
package DataHora;
public class Hora {
byte hora;
byte minuto;
byte segundo;
public Hora(byte h,byte m,byte s) {
hora = h; minuto = m; segundo = s;
}
public String toString() {
return hora+":"+minuto+":"+segundo;
}
} // fim da classe Hora
DataHora/Hora.java
Pacotes
package DataHora;
public class DataHora {
Data estaData;
Hora estaHora;
public DataHora(byte h,byte min,byte s,byte d,byte m,short a) {
estaData = new Data(d,m,a);
estaHora = new Hora(h,min,s); }
public String toString() {
....
}
} // fim da classe DataHora
DataHora/DataHora.java
Não há conflito: pacote e classe com o mesmo nome.
Usa diretamente as classes do pacote.
Pacotes
import DataHora.*;
class DemoDataHora {
public static void main(String[] argumentos){
Hora meiodia = new Hora((byte)12,(byte)00,(byte)00);
Data hoje = new Data((byte)11,(byte)5,(short)2001);
DataHora agora = new DataHora((byte)22,(byte)35,(byte)00,
(byte)11,(byte)5,(short)2001);
System.out.println(meiodia);
System.out.println(hoje);
System.out.println(agora);
....
} // fim do método main
} // fim da classe DemoDataHora
DemoDataHora.java
Usa o pacote DataHora: não precisa estar no mesmo diretório
Importa todas as classes do pacote
Pacotes
Diretório DataHora, contendo os códigos java:
F:\AULAS\POO\aula13\DataHora>dir
O volume na unidade F é isabel
O número de série do volume é 043F-09CB
Pasta de F:\AULAS\POO\aula13\DataHora
20/06/2006 15:28 <DIR> .
20/06/2006 15:26 <DIR> ..
19/06/2006 16:25 2.815 DataHora.java
19/06/2006 16:18 1.339 Data.java
19/06/2006 16:25 1.377 Hora.java
3 arquivo(s) 5.531 bytes
2 pasta(s) 10.900.996.096 bytes disponíveis
Pacotes
A compilação das classes do pacote:
F:\AULAS\POO\aula13\DataHora>cd ..
F:\AULAS\POO\aula13>javac DataHora\Data.java
F:\AULAS\POO\aula13>javac DataHora\Hora.java
F:\AULAS\POO\aula13>javac DataHora\DataHora.java
F:\AULAS\POO\aula13>
Pacotes
A compilação da classe usuária do pacote:
A execução da classe usuária do pacote:
F:\AULAS\POO\aula13>javac DemoDataHora.java
F:\AULAS\POO\aula13>
F:\AULAS\POO\aula13>java DemoDataHora
12:0:0
11/5/2001
22:35:0 de 11 de Maio de 2001
F:\AULAS\POO\aula13>
Pacotes
Exercício:
1. Criar pacotes: figuras Geométricas, classes do estacionamento;
2. Colocar aplicações em diretórios diferentes;3. Testa o uso dos pacotes.