Aula 15 (AT1): Organização de Classes em Pacotes

Propaganda
Linguagens de Programação Orientadas a Objetos
Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa
Marco Fagundes
[email protected]
Aulas 15 e 16 - Pacotes em Java
http://www.ufpa.br/sampaio/bd2003/lpoo
Elaborado com base no Material do Prof. Alexandre Mora (Cin-UFPE) e Prof. Ricardo Santos(IESAM)
 Marco Fagundes
1 de 23
Tipos de Módulos em Java


Classes
• agrupam definições de métodos, atributos, inicializadores,
etc.
• definem tipos
Pacotes
• agrupam definições de classes relacionadas
• estruturam sistemas de grande porte, facilitando a
localização das classes
• oferece um nível mais alto de abstração
– há mais classes do que pacotes
2 de 23
Declaração de Classes


Uma classe pode ser declarada da seguinte maneira:
class Teste{
}
Porém, existem algumas observações que devem ser levadas em
consideração no momento de declarar uma classe.
3 de 23
Declaração de Classes




Somente podemos ter uma única classe public por arquivo .java
O nome do arquivo deve coincidir com o nome da classe public
Se uma classe faz parte de um package, a declaração do package
deve ser a primeira linha da classe
Comandos import devem aparecer entre a declaração package e a
declaração de classe
4 de 23
Pacotes e Diretórios


As classes de um pacote são definidas em arquivos com o mesmo
cabeçalho:
package nomeDoPacote;
Cada pacote é associado a um diretório do sistema operacional:
• os arquivos .class das classes do pacote são colocados neste
diretório
• é recomendável que o código fonte das classes do pacote
também esteja neste diretório
5 de 23
Nomeando Pacotes

O nome de um pacote é parte do nome do seu diretório
associado
appAcad.turmas
deve estar no diretório
...\appAcad\turmas
assumindo que o compilador Java foi informado, através da
variável de ambiente (CLASSPATH) para procurar classes em
.../
6 de 23
Pacotes e Subdiretórios


Subdiretórios não correspondem a “subpacotes”, são pacotes como
outros quaisquer
Por exemplo, não existe nenhuma relação, além de lógica, entre
appAcad.turmas e appAcad.disciplinas:
package appAcad.turmas;
public class /*...*/
package appAcad.disciplinas;
public class /*...*/
7 de 23
Pacotes e Visibilidade de Declarações

public

• atributos, métodos e classes
• declaração pode ser utilizada (é visível) em qualquer lugar
private
• atributos e métodos
• declaração só pode ser utilizada na classe onde ela é introduzida
8 de 23
Pacotes e Visibilidade de Declarações

protected

• atributos e métodos
• declaração só pode ser utilizada no pacote onde ela é
introduzida, ou nas subclasses da classe onde ela é introduzida
Default (Ausência de modificador)
• atributos, métodos e classes
• declaração só pode ser utilizada no pacote onde ela é
introduzida
9 de 23
Modificadores de Acesso

Destacam-se inicialmente os seguintes modificadores de acesso que
podem ser utilizados com as classes são:
• public
• default
10 de 23
Modificadores de Acesso



Estes modificadores podem ser utilizados com as classes, métodos e
membros de dados.
Porém, devemos nos preocupar primeiramente com a visibilidade da
classe.
De nada adianta termos um método public se a classe não for
visível para outra classe.
11 de 23
Acesso Default


Para declarar uma classe com acesso default, basta não utilizar um
modificador de acesso.
Se uma classe possui acesso default, somente uma classe que está
no mesmo pacote poderá acessá-la.
12 de 23
Acesso Default

O que significa acessar uma classe?
• Criar uma instância da classe.
• Criar um relacionamento de herança com a classe.
• Acessar métodos e variáveis da classe.
13 de 23
Acesso Default
package appAcad.turmas;
class Turma{
}
package appAcad.disciplinas;
import appAcad.turmas;
class Disciplina{
}
14 de 23
Acesso Default
../appAcad
/turmas
Turma.java
Turma.class
/disciplinas
Disciplina.class
Disciplina.java
15 de 23
Acesso Public


O Modificador de acesso public, permite que a classe seja
visualizada a partir de qualquer package existente
Desta forma, qualquer classe em qualquer package é capaz de
“enxergar” a classe declarada como public
16 de 23
Acesso Public
package appAcad.turmas;
public class Turma{
}
package appAcad.disciplinas;
import appAcad.turmas;
class Disciplina{
}
17 de 23
Acesso Public
../appAcad
/turmas
Turma.java
Turma.class
/disciplinas
Disciplina.class
Disciplina.java
18 de 23
Testando o Acesso Default e Public
../appAcad
/turmas
Turma.java
Turma.class
/disciplinas
Disciplina.class
Disciplina.java
TesteApp.Java
TesteApp.class
19 de 23
Reuso de Declarações


As declarações feitas em um arquivo são visíveis em qualquer outro
arquivo do mesmo pacote, a menos que elas sejam privadas
Qualquer arquivo de um pacote pode usar as definições visíveis de
outros pacotes, através do mecanismo de importação de pacotes...
20 de 23
Estruturando Aplicações com Pacotes


Agrupar classes relacionadas, com dependência (de
implementação ou conceitual) entre as mesmas
Evitar dependência mútua entre pacotes:
package a.b;
import c.d.*;
/*...*/
package c.d;
import a.b.*;
/*...*/
Sugere problemas de modelagem!
21 de 23
Estruturando Aplicações com Pacotes

Estruturação típica de um sistema de informação:
• um pacote para cada coleção de negócio, incluindo as classes
básicas, coleções de dados, interfaces, e exceções associadas
• um pacote sistema.util contendo classes auxiliares de propósito
geral
22 de 23
Pacotes da Biblioteca de Java






Acesso a Internet e WWW (java.net)
Applets (java.applet)
Definição de interfaces gráficas (java.awt)
Suporte a objetos distribuídos (java.rmi)
Interface com Banco de Dados (java.sql)
Básicos: threads e manipulação de strings (java.lang), arquivos
(java.io), utilitários de propósito geral (java.util)
23 de 23
Download