• Nenhum resultado encontrado

Pacotes, como Organizar suas Classes

No documento Apostila de Programação OO - SENAI.pdf (páginas 48-52)

SEÇÃO 1

Pacotes, como organizar

suas classes

Para falar dos pacotes em Java, vamos fazer uma analogia com as pastas que você cria costumei- ramente no sistema operacional. Imagine que você possua apenas uma pasta em todo seu compu- tador, como você faria para or- ganizar suas coisas? Certamente colocaria suas músicas em uma pasta, seus trabalho da disciplina de POO em outra pasta, e assim por diante.

Agora, imagine se essa separa- ção de pastas não fosse possível e tudo tivesse que ficar em um mesmo lugar, tudo misturado. Se- ria horrível, não é mesmo? Ainda bem que podemos organizar tudo em diretórios, fica muito mais fácil encontrar os documentos. Agora pense na seguinte situação: você e alguns amigos foram fazer um passeio e tiraram várias fotos com a sua câmera digital, e agora todos os seus amigos estão pedin- do uma cópia dessas fotos. Você pode simplesmente copiar a pas- ta de uma só vez e repassá-la aos seus amigos – o que é muito fácil – ou você pode ficar procurando as fotos em meio a outros docu- mentos e copiar, foto por foto, com o risco de esquecer alguma pelo caminho.

Na programação isso não é diferente. Não vamos criar todas as nossas classes dentro de um único diretório, mas sim, dividi-las de acordo com suas funcionalidades e necessidades do projeto.

Os diretórios dentro da programação são chamados de pacotes, ou

package. Imagine que temos uma classe salva dentro do seguinte dire-

tório no sistema operacional:

\br\com\poo\locadora

Isso significa que nossa classe está dentro do seguinte package:

br.com.poo.locadora

Observe que na estrutura de diretórios do sistema operacional, os no- mes das pastas são separados por barras “\”, e os packages são divididos por pontos “.”. Da mesma formaque existem padrões, no momento de criar nomes de classes, métodos e variáveis, existe um padrão para cria- ção de pacotes, nesse caso, todos os pacotes devem ser escritos apenas com letras minúsculas, independente se os nomes são compostos por mais de uma palavra.

Deve-se referenciar o pacote, onde a classe está gravada e no início des- ta, informando sempre a palavra package seguida do caminho completo do pacote. Para entender melhor, veja esse exemplo: imagine que a classe Pessoa encontrasse dentro do pacote “br.com.poo.entidade”. Tal classe ficaria assim:

package br.com.poo.entidade.Pessoa; public class Pessoa {

private String nome; private String telefone; private String rg; private String cpf; private String estadoCivil; private String sexo;

//implementação dos métodos }

Dentro de um mesmo pacote, podem estar quantas classes forem neces- sárias, e todas têm acesso direto umas as outras - é o que estava sendo feito até o momento - pois todas estavam em um mesmo pacote. Se quiséssemos acessar a classe Pessoa, de dentro da classe Locadora, imaginando que nesse momento elas estão no mesmo pacote, poderí- amos fazer um acesso direto por meio de “Pessoa pessoa = new Pes-

soa();”. Confira:

package br.com.poo.entidade.Locadora; public class Locadora{

public static void main(String[] args) {

Pessoa pessoa = new Pessoa();

pessoa.getEndereco().setBairro(“Bom Retiro”); pessoa.getEndereco().setCep(“89222-365”); //...

} }

Imagine que colocamos a classe Locadora dentro do pacote br.com.poo. locadora. Como fazer para acessar a classe Pessoa de dentro da classe Locadora? Como elas estão em pacotes diferentes, não há mais o acesso direto entre as classes, como fazer para acessar as classes que não estão no mesmo pacote?

Para que funcione corretamente, pode-se informar o caminho completo do pacote da classe que se quer acessar, fazendo da seguinte forma:

br.com.poo.entidade.Pessoa pessoa = new br.com.poo.entidade.Pessoa();

Fazendo dessa forma, não fica nem um pouco elegante o código fonte, e toda vez que se quiser fazer referência à classe Pessoa, seria necessário escrever o caminho completo. Nada prático, não acha?

Para resolver isso, o Java possui uma palavra reservada chamada import,

que serve para importar um pacote para dentro da classe onde o import foi utilizado. Com isso não existe a necessidade de digitar todo o cami- nho do pacote de uma classe toda vez que desejarmos fazer referência a ela.

Com a classe Locadora em outro diretório e utilizando o import para fazer acesso à classe Pessoa, e com a classe Locadora em outro diretório, esta ficaria da seguinte forma:

package br.com.poo.locadora.Locadora; import br.com.poo.entidade.Pessoa; public class Locadora{

public static void main(String[] args) {

Pessoa pessoa = new Pessoa();

pessoa.getEndereco().setBairro(“Bom Retiro”); pessoa.getEndereco().setCep(“89222-365”); //...

} }

Note que agora, o package da classe mostra que o pacote da classe Lo- cadora não é mais o “entidade”, e sim o pacote “locadora”.

package br.com.poo.locadora.Locadora;

Já o uso do import, indica que pode-se utilizar a classe Pessoa, que está dentro do pacote “br.com.poo.entidade” diretamente, como se a classe estivesse dentro do mesmo pacote. A instrução que permite isso é:

import br.com.poo.entidade.Pessoa;

Fazendo uso desse recurso, continua-se tendo acesso a todas as classes, independentemente delas estarem ou não no mesmo pacote.

É possível, também, importar todas as classes de um pacote de uma só vez. Para isso, basta utilizar o “*”, que indica que qualquer classe, em um pacote, pode ser acessada. Por exemplo:

import br.com.poo.entidade.*;

Nesse caso, se permite o acesso a todas as classes que estão dentro do pacote entidade.

O import vale também para clas- ses externas ao projeto, por exem- plo, se quisermos utilizar uma classe do Java, dentro de alguma das classes, como a ArrayList do Java, que implementa uma lista, para que se tenha acesso a essa classe, será necessário, obrigato- riamente, fazer um import dela para a classe em que se quer uti- lizá-la. Portanto, o import ficaria da seguinte forma:

import java.util.ArrayList;

Fazendo isso, poderíamos utilizar uma classe que não está no proje- to, mas está implementada direta- mente pelo próprio Java.

Note que, nesse caso, importamos apenas a classe ArrayList, que está dentro do pacote “util” do Java. Não é obrigatório importar um pacote inteiro, se você utilizar so- mente uma classe.

Nessa unidade, você viu que po- demos importar todo um pacote, o que dá acesso a todas as classes do pacote, ou utilizar o “*” para importar todas as classes de uma só vez.

Lembre-se que é importante dei- xar o sistema o mais limpo pos- sível, ou seja, importe somente as classes que serão utilizadas para não existir dúvidas sobre as clas- ses corretas.

No sistema, na classe Locadora, se- ria importada apenas a classe Pes- soa, que é a que nos interessa ter acesso. Isso é o correto a ser feito. Na próxima unidade, você apren- derá como reaproveitar códigos e reescrever métodos, mas antes de continuar, realize o exercício 21 do caderno de atividades práticas.

Unidade de

estudo 6

Seções de estudo

Seção 1 - Reaproveitamento de código Seção 2 - Reescrita de métodos

Herança

SEÇÃO 1

Reaproveitamento de

No documento Apostila de Programação OO - SENAI.pdf (páginas 48-52)

Documentos relacionados