1 java: pacotes e modificadores de visibilidade alcides calsavara

26
Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

1

Java:Pacotes e

Modificadores de Visibilidade

Alcides Calsavara

Page 2: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

2

Encapsulamento

Processo de ocultamento de partes internas da implementação de um objeto e permissão de acesso ao objeto somente através de uma interface bem definida.

Os atributos de um objeto são manipulados (para leitura e escrita) somente por métodos definidos para o objeto (através da hierarquia de classes correspondente).

Page 3: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

3

Modificadores de Visibilidade

Permitem controlar a manipulação de membros (atributos e métodos) por métodos considerando os escopos de classe, subclasse e pacote, de forma combinada.

Modificadores:– private– protected– package– public

Page 4: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

4

Pacote (package)

Organização lógica de classes em grupos Corresponde à noção de módulo Há pacotes disponibilizados em Java: java.io,

java.lang, java.net, java.awt, ... Usuários podem criar seus próprios pacotes:

basta adicionar a cláusula package <nome> como primeira linha de comando em um arquivo

Page 5: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

5

Modificador private

Um membro qualificado como private somente é acessível a partir de métodos da própria classe à qual pertence o membro.

Page 6: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

6

Modificador public

Um membro qualificado como public é acessível a partir de qualquer método de qualquer classe, independentemente de subclasse e de pacote.

Page 7: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

7

Modificadores public e privateExemplo 1

class Pessoa{ private int idade;private int altura;

public Pessoa(int i, int a) { idade = i; altura = a; }private void cresce( ) { idade++; altura++; }private void decresce( ) { idade++; altura--; }public void envelhece( ) { if (idade < 22) cresce( ) else decresce( ); }

}

Page 8: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

8

Modificadores public e privateExemplo 2

class Funcionario extends Pessoa

{ private int nivel; private int horas;

public Funcionario(int i, int a, int n, int h)

{ super(i, a); nivel = n; horas = h; }

public double salario( )

{ return ( nivel * 80 * horas) ; }

}

Page 9: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

9

Modificador package

Um membro qualificado como package é acessível a partir de qualquer método de qualquer classe pertencente ao mesmo pacote que a classe à qual pertence o membro, independentemente de subclasse.

Page 10: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

10

Modificador protected

Um membro qualificado como protected é acessível a partir de qualquer método de qualquer classe, exceto se a classe de acesso estiver em pacote distinto e não for subclasse da classe à qual pertence o membro.

Page 11: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

11

Modificadores package e protected - Exemplo 1

class Veiculo { int ano; // packageprotected int potencia; ... }

class Carro extends Veiculo{ ... potencia++;

ano++; ... }class Retificadora{ ... Carro c = new Carro (...) ;

c.ano = 1980; c.potencia = 100; ... }

Page 12: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

12

Modificadores package e protected - Exemplo 2

package Basico; // arquivo 1

class Veiculo { int ano; // package

protected int potencia; ... }

package Extensao; // arquivo 2

class Carro extends Veiculo

{ ... potencia++; ... } // sem acesso a ano

class Retificadora

{ ... Carro c = new Carro (...) ; ... }

// sem acesso a ano e potencia

Page 13: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

13

Visibilidade Public Protected Package Private

Da mesma classe S S S S

De qualquer classe do mesmo pacote S S S N

De qualquer classe fora do pacote S N N N

De uma subclasse no mesmo pacote S S S N

De uma subclasse fora do pacote S S N N

 

Resumo

Page 14: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

14

Pacotes (packages)- definição básica -

Maneira de organizar classes em grupos

Um pacote contém um número qualquer de classes relacionadas de acordo com:– propósito– escopo– herança

Page 15: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

15

Pacotes- utilidades/razões -

Permitem organizar classes em unidades, de forma similiar à organização de arquivos em pastas, facilitando a sua manipulação.

Reduzem problemas de conflitos de nomes, pois classes podem ser "escondidas" em pacotes.

Page 16: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

16

Pacotes- utilidades/razões -

Permitem proteger classes, atributos e métodos de forma mais abrangente que proteção baseada em classes (modificadores de visibilidade package e protected).

Podem ser usados para identificação de classes (um pacote de classes para um certo propósito pode conter o nome da organização e o nome do autor do pacote).

Page 17: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

17

Pacotes- organização em hierarquia -

Um pacote pode conter outro pacote, definindo uma hierarquia de pacotes.

Exemplo: O pacote java, contém os pacotes io, net, util e awt. O pacote awt, por sua vez, contém o pacote image e outros. Assim o nome completo deste último pacote é java.awt.image.

Page 18: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

18

Pacotes- utilização -

Classes do pacote java.lang (System, Date, String, Integer, ...) são automaticamente disponíveis.

Uma classe de outro pacote pode ser referenciada através de seu nome completo (por exemplo, java.awt.Font f = new java.awt.Font(); ).

Classes de outro pacote usadas com freqüência devem ser "importadas" (individual ou coletivamente), permitindo que sejam referenciadas somente por nome (por exemplo, Font).

Page 19: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

19

Pacotes- comando import -

Usado para importar uma certa classe. Ex:import java.util.Vector ;...Vector v = new Vector();

Usado para importar todas as classes públicas de um pacote. Ex: import java.awt.* ;

Não importa pacotes recursivamente. Por exemplo, import java.awt.* não importa as classes do pacote image.

Devem aparecer no início de um arquivo.

Page 20: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

20

Pacotes- conflitos de nomes -

Duas classes com o mesmo nome (obviamente, pertencentes a dois pacotes distintos) só podem ser referenciadas através de seu nome completo.

Exemplo: Classe Table disponível nos pacotes Oracle e SQLServer.

import Oracle.* ;

import SQLServer.* ;

Oracle.Table t1 = new Oracle.Table( ... );

SQLServer.Table t2 = new SQLServer.Table( ... );

Page 21: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

21

Pacotes- variável CLASSPATH -

Java combina duas coisas para encontrar classes: o nome do pacote e a lista de diretórios especificada na variável de ambiente CLASSPATH.

Para cada nome de pacote deve haver um diretório no sistema de arquivos, recursivamente (a hierarquia de diretórios espelha a hierarquia de pacotes). Por exemplo, para o pacote java.applet deve haver o diretório java e, dentro deste, o diretório applet, contendo as classes do pacote.

Page 22: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

22

Pacotes- variável CLASSPATH -

(cont.) Cada diretório raiz (correspondente a um

pacote raiz) deve estar contido em um dos diretórios listados na variável CLASSPATH.

Por exemplo, a variável CLASSPATH pode ser definida como

C:\java\lib; C:\netscape\lib; .

onde o ponto final significa o diretório corrente.

Page 23: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

23

Pacotes- processo de criação -

Definir um nome. Por exemplo, pucpr.ccet.analise.

Criar a correspondente estrutura de diretórios. Por exemplo, criar o diretório pucpr dentro de um dos diretórios especificados em CLASSPATH, daí, dentro de pucpr, criar o diretório ccet, e dentro deste o diretório analise.

Page 24: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

24

Pacotes- processo de criação - (cont.) Usar o comando package para inserir classes

em um pacote.– Deve ser único em um arquivo e deve ser o

primeiro comando presente no arquivo.– Todas as classes definidas no arquivo passam a

fazer parte do pacote especificado.– Quando não especificado, as classes são

inseridas no pacote default de Java.– Pode ser especificado com o mesmo nome de

pacote em diversos arquivos.

Page 25: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

25

Pacotes- proteção de classes -

Uma classe só é visível fora de seu pacote se for qualificada como public.

Um arquivo pode conter diversas classes, mas somente uma delas pode ser qualificada como public (o nome do arquivo deve ser igual ao nome dessa classe).

Um comando import do tipo import p.* importa somente as classes públicas do pacote p.

Page 26: 1 Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

26

Pacotes- proteção de classes - (cont.) Exemplo:

package colecoes;

public class Lista { // arquivo Lista.java

private Nodo raiz;

public void insere(Object o) { ... }

...}

class Nodo { // visibilidade package

... }