Monitoria IP ~if669 Garbage Collection e pacotes Tópicos Pacotes: Como e porque usá-los Garbage Collection: Descrição do Mecanismo Por que usar pacotes? ORGANIZAÇÃO E MODULARIZAÇÃO! É o mesmo motivo porque existem diretórios e pastas nos sistemas operacionais, tudo poderia estar no C:/ , mas isso seria altamente caótico(conflitos de nomes, etc. ) Como usar? Simples! Tipos* que são do mesmo grupo, pertencem ao mesmo pacote. Ex. O pacote java.io tem tipos usados para entrada e saída, enquanto o pacote java.lang possui tipos que tem funções básicas. *classes e interfaces Como usar? Exemplo prático Imaginem que vocês desenvolveram uma série de tipos que representam objetos gráficos, círculos, retângulos, linhas, pontos etc. Como usar? Exemplo prático Todos esses tipos devem ser distribuídas dentro do mesmo pacote: – Vocês e outros programadores sabem que esses tipos estão relacionados. – Vocês e outros programadores sabem onde achar tipos que fornecem funções gráficas. – Os nomes de seus tipos não irão entrar em conflito com classes de outros pacotes. Como usar? Sintaxe Deve ser declarado na primeira linha do código fonte. Só escrever package seguido do nome. package graphics; public class Circulo{ . . . } Não é recomendável deixar o campo package em branco. Como usar? Sintaxe Para acessar uma classe que está dentro de um pacote, basta usar o import package br.cin.ufpe.util; import java.util.ArrayList; public class Teste { private ArrayList lista; . . . } Como usar? Nomeando os pacotes A convenção é usar o dominio invertido da instituição: – www.cin.ufpe.br -> br.ufpe.cin.nomedopacote – www.empresa.org -> org.empresa.nomedopacote Só são permitidos nomes minúsculos sem caracteres especiais(com exceção do ‘_’) Como usar? Nomeando os pacotes Por que usar as convenções? – Evita possíveis conflitos de nomes, já que pacotes não podem possuir o mesmo nome. – Alguns nomes são muito intuitivos e bastante usados, como base, examples, graphics, io, util, etc. Usar esses nomes sem o prefixo da instituição pode causar problemas com a distribuição do programa Garbage Collection Em java não é possível destruir um objeto diretamente O garbage collector percebe quando um objeto não será mais usado e o destrói automaticamente – Podemos “ajudar” o cg do java, basta apontar um objeto para null que ele provavelmente será tratado mais rápido: private ArrayList lista; . . . //Usando lista lista = null; //Lista não é mais necessária Garbage Collection - Nem tudo são flores É impossível fazer um Garbage Collector funcionar perfeitamente, então um código que foi bem escrito onde o programador desalocou os objetos manualmente sempre séra mais eficiente. É impossível ter certeza quando e onde o Garbage Collector vai atuar. Garbage Collection – Vantagens Código mais enxuto O programador não precisa se preocupar em desalocar os objetos Menos erros Muitas aplicações não sentem o peso de performance do CG Dúvidas ?