POO - Introdução

Propaganda
Programação
Orientada a Objetos*
Pacotes
Prof. Isabel Cafezeiro
[email protected]
http://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
fornecedoras de
serviços
Classe de aplicação
Classes com
propósito
relacionado devem
ser agrupadas
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
protected
ausente (default)
public
+ restritivo
- 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.
2.
3.
Criar diretório DataHora (mesmo nome do pacote) contendo todas as classes
do pacote
O diretório deve ser criado no caminho de procura de classes java
Hierarquia em muitos níveis, refletindo o nome do domínio da instituição em
ordem reversa:
UFF.graduaçãoComputação.POO
nome do pacote
UFF\graduaçãoComputação\POO
diretório do pacote
Pacotes
package DataHora;
public class Data {
byte dia;
byte mês;
short ano;
Declaração do pacote DataHora:
Primeira declaração da classe;
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
}
{
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.
DataHora/Data.java
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;
Não há conflito: pacote e classe com o
mesmo nome.
public class DataHora {
Data estaData;
Usa diretamente as classes do pacote.
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
Pacotes
import DataHora.*;
class DemoDataHora {
Usa o pacote DataHora: não precisa
estar no mesmo diretório
Importa todas as classes do pacote
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
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:
F:\AULAS\POO\aula13>javac DemoDataHora.java
F:\AULAS\POO\aula13>
A execução da classe usuária do pacote:
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.
2.
3.
Criar pacotes: figuras Geométricas, classes do
estacionamento;
Colocar aplicações em diretórios diferentes;
Testa o uso dos pacotes.
Download