Programação Orientada a Objetos*

13
Programação Orientada a Objetos* Pacotes Prof. Isabel Cafezeiro isabel @ dcc . ic . uff . br 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

description

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. - PowerPoint PPT Presentation

Transcript of Programação Orientada a Objetos*

Page 1: 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

Page 2: Programação Orientada a Objetos*

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

Page 3: Programação Orientada a Objetos*

Pacotes

Pacotes e Modificadores de acesso

private + restritivo protected ausente (default) public - restritivo

Page 4: Programação Orientada a Objetos*

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 !!!

Page 5: Programação Orientada a Objetos*

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

Page 6: Programação Orientada a Objetos*

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.

Page 7: Programação Orientada a Objetos*

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

Page 8: Programação Orientada a Objetos*

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.

Page 9: Programação Orientada a Objetos*

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

Page 10: Programação Orientada a Objetos*

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

Page 11: Programação Orientada a Objetos*

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>

Page 12: Programação Orientada a Objetos*

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>

Page 13: Programação Orientada a Objetos*

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.