JAVA - Pacotes

41
PACOTES Linguagem de Programação II Ciência da Computação Prof.ª Ms. Elaine Cecília Gatto

description

JAVA - Pacotes

Transcript of JAVA - Pacotes

Page 1: JAVA - Pacotes

PACOTESLinguagem de Programação IICiência da ComputaçãoProf.ª Ms. Elaine Cecília Gatto

Page 2: JAVA - Pacotes

Escopo de Declarações

• Entidades Java:• Classes, métodos, variáveis e parametros

• Declarações introduzem nomes que podem ser utilizados para referenciar essas entidades;• O escopo de uma declaração é a parte do

programa que pode referenciar a entidade declarada pelo seu nome;

Page 3: JAVA - Pacotes

Escopo de Declarações

• O escopo de uma declaração de parâmetro é o corpo do método em que a declaração aparece

• O escopo de uma declaração de variável local vai do ponto em que a declaração aparece até o final desse bloco

• O escopo de uma declaração de variável local que aparece na inicialização do cabeçalho de uma instrução FOR é o corpo da instrução FOR com as outras expressões do cabeçalho

Page 4: JAVA - Pacotes

Escopo de Declarações

• O escopo de um método ou campo de uma classe é o corpo inteiro dessa classe

• Qualquer bloco pode conter declarações de variáveis

• SOMBREAMENTO: quando um parametro ou uma variável local em um método tiver o mesmo nome de um campo, então o campo permanece OCULTO até que o bloco termine a execução

• EXEMPLO NO NETBEANS

Page 5: JAVA - Pacotes

Escopo de Classe

• Os modificadores de acesso PUBLIC e PRIVATE controlam o acesso ás variáveis e métodos de uma classe

• MÉTODOS PUBLIC: apresentam aos clientes da classe uma visualização dos serviços que a classe fornece

• Os clientes da classe não precisam se preocupar com a maneira como a classe realiza as tarefas

Page 6: JAVA - Pacotes

Escopo de Classe

• VARIÁVEIS E MÉTODOS PRIVATE: não permanecem diretamente acessíveis aos clientes da classe. Os detalhes de implementação da classe ficam ocultos.

Page 7: JAVA - Pacotes

REFERÊNCIA THIS

• A palavra reservada THIS permite que cada objeto faça uma referencia a si próprio.

• Quando um método NÃO-STATIC é chamado por um objeto particular, o corpo do método utilizada implicitamente a palavra-chave THIS para referenciar as variáveis de instância do objeto e outros métodos.

• Evite nomes de parametros ou variaveis local nos métodos que conflitem com nomes de campos

Page 8: JAVA - Pacotes

REFERÊNCIA THIS

• THIS também pode ser utilizado de forma explicita no corpo de um método NÃO-STATIC.

• Frequentemente é um erro de lógica quando um método contém ump arametro ou variavel local com o mesmo nome de um campo da classe

• Utilize a referencia THIS se desejar acessar o campo da classe, caso contrário, o parametro ou variavel local do método será referenciado

Page 9: JAVA - Pacotes

SOBRECARGA DE CONSTRUTORES

• Funciona como os métodos sobrecarregados, entretanto, é importante lembrar que:• CONSTRUTORES não possuem tipo• Construtores não possuem retorno

• Podemos ter vários construtores em uma classe desde que eles tenham números de parâmetros diferentes

• Construtor sem argumentos: é o construtor padrão da classe

Page 10: JAVA - Pacotes

GET E SET

• Métodos SET são chamados de métodos MODIFICADORES

• Métodos GET são chamados de métodos de acesso ou de consulta

• Com SET e GET é possível manipular campos privados de uma classe, entretanto, o acesso é restrito pela maneira como os métodos foram implementados pelo programador, garantindo a integridade dos dados.

Page 11: JAVA - Pacotes

GET E SET

• GET pode controlar como o cliente acessa a variável private

• SET pode avaliar cuidadosamente as tentaivas de modificar o valor da variável a fim de assegurar que o novo valor é apropriado para esse item de dados.

• Lembre-se: o programador deve fornecer a verificação de validade, isso não ocorre de forma automática!

Page 12: JAVA - Pacotes

MÉTODOS PREDICADOS

• São métodos que testam se uma condição é verdadeira ou falsa.

• DICA: métodos set e get facilitam a depuração do software quando há problemas na compilação e execução do mesmo

Page 13: JAVA - Pacotes

COMPOSIÇÃO

• É quando uma classe pode ter referencias a objetos de outras classes como membros

• Também conhecida como RELACIONAMENTO TEM UM

• É uma forma de reutilização de software

• Uma classe tem referencias a objetos de outras classes

Page 14: JAVA - Pacotes

ENUMERAÇÃO

• Define um conjunto de constantes representadas como identificadores únicos.

• Os tipos ENUM são tipos por referencia: é possível referencias um objeto de um tipo enum com uma referencia

• Uma declaração de um tipo ENUM é declarado como uma declaração ENUM

Page 15: JAVA - Pacotes

ENUMERAÇÃO

• Cada declaração ENUM declara uma classe ENUM com as restrições seguintes:

• Tipos ENUM são implicitamente FINAL, porque declaram constantes que nao devem ser modificadas

• Constantes ENUM são implicitamente STATIC

• Qualquer tentativa de criar um objeto de um tipo ENUM com um operador NEW resulta em um erro de compilação

Page 16: JAVA - Pacotes

ENUMERAÇÃO

• As constantes ENUM podem ser utilizadas em qualquer lugar em que constantes podem ser utilizadas (switch/case, for, etc)

• MÉTODO VALUES: é um método STATIC que retorna um ARRAY das constantes de ENUM na ordem em que elas foram declaradas

• MÉTODO RANGE: exibe o intervalo das constantes do ENUM

Page 17: JAVA - Pacotes

Coleta de Lixo e o Método Finalize

• RARAMENTE UTILIZADO!!!!!!!!!

• Toda classe JAVA contém métodos da classe OBJECT (pacote.java.lang)

• Você NÃO DEVE UTILIZAR o MÉTODO FINALIZE!!!!!!!

• A JVM realiza coleta de lixo automatica para reivindicar a memória ocupada por objetos que não estão mais em uso

Page 18: JAVA - Pacotes

Coleta de Lixo e o Método Finalize

• Todo objeto criado utiliza recursos do sistema computacional, particularmente a memória.

• É necessário devolver ao sistema os recursos quando eles não estão mais em uso.

• Exemplo: um aplicativo abre um arquivo no disco para modificar seu conteúdo. Se o aplicativo não fechar o arquivo, nenhum outro aplicativo poderá usar o arquivo até que ele seja fechado

Page 19: JAVA - Pacotes

Coleta de Lixo e o Método Finalize

• O MÉTODO FINALIZE é chamado pelo COLETOR DE LIXO para faze a limpeza de terminação sobre um objeto um pouco antes de o coletor de lixo reivindicar a memória do objeto

• O MÉTODO FINALIZE não recebe parâmetros e tem o tipo de retorno VOID

• O COLETOR DE LIXO nunca pode executar antes de um programa terminar

Page 20: JAVA - Pacotes

Coleta de Lixo e o Método Finalize

• A razão pela qual programadores NÃO DEVEM usar o MÉTODO FINALIZE é que não se sabe quando o método finalize será chamado.

• Não há garantias de que o coletor de lixo executrar em uma data/hora específica.

• Muitas classes JAVA fornecem métodos para liberação de recursos.

Page 21: JAVA - Pacotes

Relembrando: STATIC

• Estático, parado, constante

• Quando definimos uma classe e criamos vários objetos dela, já sabemos que cada objeto será uma cópia fiel da classe, porém com suas próprias variáveis e métodos em lugares distintos da memória.

Page 22: JAVA - Pacotes

Relembrando: STATIC

• Quando definimos variáveis com a palavra static em uma classe ela terá um comportamento especial: ela será a mesma para todos os objetos daquela classe.

• Não haverá um tipo dela em cada objeto. Todos os objetos, ao acessarem e modificarem essa variável, acessarão a mesma variável, o mesmo espaço da memória, e a mudança poderá ser vista em todos os objetos.

Page 23: JAVA - Pacotes

Relembrando: STATIC

• Quando usar variáveis static em Java?????

• Quando você quiser ter um controle sobre os objetos ou quando todos os objetos devem partilhar uma informação

• Evitar ter que fazer Composição ou chamar métodos de outros objetos

Page 24: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• Um campo STATIC é utilizado no caso em que apenas UMA CÓPIA de uma variável particular deve ser compartilhada por todos os objetos de uma classe

• Também chamado de VARIÁVEL DE CLASSE

• Uma variável STATIC representa INFORMAÇÕES DE ESCOPO DE CLASSE (todos os objetos compartilham os mesmos dados)

Page 25: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• Portanto, UTILIZE uma variável static quando todos os objetos de uma classe precisarem utilizar a mesma cópia da variável

• Variáveis estáticas tem escopo de classe

• Membros PUBLIC STATIC podem ser acessados por meio de uma referencia a qualquer objeto da classe

Page 26: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• Membros PUBLIC STATIC podem ser acessados qualificando o nome de membro com o nome de classe e um ponto.

• Uma CLASSE de membros da classe PRIVATE STATIC pode ser acessada somente por métodos da classe.

• Variáveis e métodos de classe estática existem e podem ser utilizados, mesmo que nenhum objeto dessa classe tiver sido instanciado

Page 27: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• Para acessar um MEMBRO PRIVATE STATIC quando nenhum objeto da classe existe, um MÉTODO PRIVATE STATIC deve ser fornecido e o método deve ser chamado qualificando seu nome com o nome da classe e um ponto.

• EXEMPLO NO NETBEANS• (8.12 E 8.13)

Page 28: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• Objetos STRINGS originais em Java são imutáveis: eles não podem ser modificados depois de criados!

• Quando concatenamos STRINGS na verdade estamos criando um novo objeto STRING.

• Dica: ter muitas referências a um objeto STRING é seguro!!!

Page 29: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• MÉTODO STATIC GC:

• Classe java.lang

• Indica que o coletor de lixo deve tentar fazer o melhor que puder para reivindicar os objetos que são elegíveis para a coleta de lixo

• Isso não quer dizer que tudo será coletado!!!!

Page 30: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• REFORÇANDO: A JVM não garante quando o coletor de lixo será executado

• IMPORTANTE: um método declarado STATIC não pode acessar membros de clsse NÃO-STATIC, porque um método STATIC pode ser chamado mesmo quando nenhum objeto da classe foi instanciado.

Page 31: JAVA - Pacotes

MEMBROS DA CLASSE STATIC

• A referencia THIS não pode ser utilizada em um MÉTODO STATIC pela mesma razão

• A referencia THIS deve referenciar um objeto específico da classe

• Quando um método STATIC é chamado, talvez não haja nenhum objeto da sua classe na memória.

• A referencia THIS é exigida para permitir que um método de uma classe acesse outros membros NÃO-STATIC da mesma classe

Page 32: JAVA - Pacotes

IMPORT STATIC

• Permite que os programadores referenciem membros STATIC importados como se fossem declarados na classe que os utiliza

• O nome da classe e o ponto não são necessários para utilizar um membro static importado

Page 33: JAVA - Pacotes

IMPORT STATIC

• Duas formas:

• Import static simples: importa um membro static particular. Exemplo: import static nomeDoPacote.nomeDaClasse.nomeDoMembro

• Import static por demanda: importa todos os membros static de uma classe. Exemplo: import static nomeDoPacote.nomeDaClasse.*;

• Exemplo no netbeans

Page 34: JAVA - Pacotes

VARIÁVEIS DE INSTÂNCIA FINAL

• PRINCÍPIO DO MENOR PRIVILÉGIO: deve ser concedido ao código somente a quantidade de privilégio e acesso que o código precisa para realizar sua tarefa designada, e não mais que isso.

• FINAL: especifica que uma variavel não é modificável, isto é, uma constante. Qualquer tentativa de modificá-la é um erro

• Não é necessário inicializar as variáveis final. Elas podem ser inicializadas em cada construtor.

• Exemplo no netbeans

Page 35: JAVA - Pacotes

Reutilização de software

• Quando um programa JAVA executa em um computador, é trabalho da JVM traduzir os comandos JAVA em comandos que o computador local possa entender.

• Fazer uso das APIs

• RAD: desenvolvimento rapido de aplicações ou rapid applications development

Page 36: JAVA - Pacotes

Abstração de dados e encapsulamento

• Ocultamento de informações: quando classes ocultam detalhes de implementação dos seus clientes.

• ABSTRAÇÃO DE DADOS: um cliente de uma classe não precisa se preocupar com a forma com que aquela classe foi implementada. O cliente se preocupa apenas com a funcionalidade que a classe lhe oferece, não com o modo com que essa funcionalidade foi implementada.

Page 37: JAVA - Pacotes

Abstração de dados e encapsulamento

• ADT: abstract data type ou tipos de dados abstratos

• INT: é uma representação abstrata de um número inteiro

• ESTOURO ARITMÉTICO: quando um valor muito grande é gerado e não cabe em uma variável do tipo INT, já que esta é limitada em tamanho de bytes

Page 38: JAVA - Pacotes

Abstração de dados e encapsulamento

• ADT:• Captura uma representação dos dados• Captura as operações que podem ser realizadas

nesses dados

• O programador java não pode alterar a base da linguagem por conta própria, mas ele pode estender via novos tipos, pode criar tipos por meio de novas classes

Page 39: JAVA - Pacotes

Abstração de dados e encapsulamento

• Exemplos no netbeans

• Pacotes faciliam a reutilização de sotware permitindo que programas importem classes de outros pacotes

• Pacotes fornecem uma convenção para nomes de classes, ajudando a evitar conflitos

Page 40: JAVA - Pacotes

Acesso de pacote

• É quando nenhum modificador de acesso é especificado para um método ou variável quando esse método ou variável é declarado em uma classe

• MODIFICADORES DE ACESSO: public, private ou protected

• Importante: se um programa utilizar multiplas classe no mesmo pacote, essas classes poderão acessar diretamente os membros de acesso de pacote de outras classes por meio de referências a objetos das classes apropriadas.

Page 41: JAVA - Pacotes

Acesso de pacote

• Exemplos no netbeans

• EXERCÍCIOS