130 likes | 248 Views
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. Pacotes.
E N D
ProgramaçãoOrientada 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
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 + 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 classee 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 • 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; 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 Usa o pacote DataHora: não precisa estar no mesmo diretório 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 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: • Criar pacotes: figuras Geométricas, classes do estacionamento; • Colocar aplicações em diretórios diferentes; • Testa o uso dos pacotes.