Java: Pacotes e Modificadores de Visibilidade

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 11 Criado por Frederick H. Colclough, Colorado Technical University Compilação Separada.
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Programação Orientada a Objetos*
Programação em Java Prof. Maurício Braga
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
Interação entre objetos
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Modificador Final para Métodos e Classes
Orientação a Objetos: Encapsulamento e Classificação
Persistência de objetos em arquivo texto usando Java
Orientação a Objetos: Encapsulamento e Classificação
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska.
Iniciação ao Java – Márcio F. Campos
Laboratório de Java Herança e Agregação (Lab II) Prof. Guido Araújo.
Programação Básica em Java
Polimorfismo e Acoplamento Dinâmico
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Linguagem de Programação II
Membros estáticos.
Capítulo 13 Pacotes. 2 Capítulo 13 – Pacotes Pacotes Pacote Cláusula package Cláusula import Executando uma classe de pacote Modificadores de acesso.
Orientação a Objetos Classes
Interfaces em Java1 Interfaces Prof. Ricardo Linden.
Documentando con Javadoc
Capítulo 9 Herança 1.
Listas Encadeadas.
Classes e objetos Arrays e Sobrecarga
Herança e Polimorfismo
Herança P. O. O. Prof. Ângela e Grace.
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Métodos Estáticos Pacotes Manipulação de Data e Hora
Introdução a programação (if669cc)
Programação Orientada a Objetos com Java
Singleton e Adapter Professor: Nazareno Andrade
JAVA Orientação a Objetos
Linguagens Orientadas a Objeto
Interfaces.
Salas de Matemática.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
Tipos Abstratos de Dados
Classes, Objetos, Atributos e Métodos JAVA
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Os métodos equals() e hashCode()
Capítulo 5 Garbage Collector.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Marcio de Carvalho Victorino
Programação Orientada à Objetos
Stream – Fluxo I/O Sistema de Arquivos
LPII Professora Lucélia. Pacotes Um pacote em Java é um diretório onde ficam armazenadas uma ou mais classes. Geralmente as classes com a mesma afinidade.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Laboratório de Programação II Pacotes Visibilidade Referências a Objetos.
Herança e Arquitetura em camadas
OO com Java Luiz Carlos d´Oleron Roteiro de aula.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Java: Pacotes e Modificadores de Visibilidade Alcides Calsavara

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

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.

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).

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.

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).

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.

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( ... );

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.

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.

Pacotes - processo de criação - Definir um nome. Por exemplo, pucpr.ccet.ppgia. 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 ppgia.

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.

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.

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 ... }

Modificadores de Visibilidade

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

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

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

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

Modificadores public e private Exemplo 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( ); } }

Modificadores public e private Exemplo 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) ; } }

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.

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.

Modificadores package e protected - Exemplo 1 class Veiculo { int ano; // package protected int potencia; ... } class Carro extends Veiculo { ... potencia++; ano++; ... } class Retificadora { ... Carro c = new Carro (...) ; c.ano = 1980; c.potencia = 100; ... }

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

Resumo Visibilidade Public Protected Package Private Da mesma classe S De qualquer classe do mesmo pacote N De qualquer classe fora do pacote De uma subclasse no mesmo pacote De uma subclasse fora do pacote