Você está na página 1de 5

ISUTC – Programação II Mujhahid Karim

Programação II – POO

Ficha(s) Pratica(s) 4 Pacotes e Encapsulamento

1. Pacotes
Pacote é o local onde ficam armazenadas as classes, ou seja um directório onde os pacotes agrupam
classes do mesmo tipo.

A palavra reservada package serve para indicar em qual pacote a classe em Java se encontra.

Exemplo 1: Se estamos na classe Conta e desejamos importar classes de um outro pacote para o
uso, devemos usar a seguinte sintaxe:

import nome_do_pacote.nome_da_classe;

No exemplo acima verificamos que a classe encontra-se no pacote encapsulamento que é o


directório onde fica armazenado a classe Cliente.java, note que quando esta no mesmo pacote não
precisa importar, o Java já faz essa tarefa para o programador, foi por este motivo que ate hoje não
usamos essa palavra, nossas classes sempre estão no mesmo pacote.

Exemplo 2: Deseja-se usar a classe Calendar do Java documentation para ilustrar datas, primeiro
devemos descobrir em que pacote ela encontra-se através da biblioteca JAVA_DOCS.

Exemplo 3: Um pacote pode conter enumeras classes, existe também a possibilidade de importar
todas as classes de um certo pacote. (maneira não aconselhada, porque não vamos importar uma
classe se ela não for importante para o caso de estudo).

1
ISUTC – Programação II Mujhahid Karim

1.1 Java.lang
Ate o momento, viemos usando os pacotes do java.lang e não existia o conceito de import, a
pergunta que deve ter surgido! Como? Isso só é possível porque o JAVA automaticamente importa
esse pacote por defeito, então poderíamos usar o String, System, Math, Boolean, Byte, Double,
Integer e outros sem preucupar em importar a classe java.lang.*;

2. POO – Encapsulamento
É a técnica usada em programação para isolar partes do programa. Uma das maneiras de aplicar
esse conceito é proibindo o acesso a variáveis de um objecto por objectos externos.

A instância de uma classe não consegue aceder as variáveis criadas na classe por uma questão de
segurança dos dados.

Ex 1 : INSTANCIA DA CLASSE ERRADO variáveis da CLASSE


INSTANCIA DA CLASSE  CERTO  métodos da CLASSE

Encapsular é fundamental para as mudanças no sistema, não obrigando assim o programador ter que
mudar a regra do negócio em várias partes do programa, mas sim em apenas um lugar.

Para limitar o acesso aos membros do objectos (métodos e atributos), utilizamos os modificadores
de acesso existente em JAVA (private, protected, public e default)

<Modificador de acesso> <tipo de dado> <nome do método>

Encapsulamento Publico: qualquer objecto pode acessar os membros, comportando como o mais
permissivo (public);

Encapsulamento Privado: O membro é acessível apenas internamente, comportando como o mais


restrito (private);

Encapsulamento Protegido: O membro é acedido pela própria classe e suas subclasses,


comportando como o moderado (protected);

Encapsulamento por Defeito: O objecto do mesmo pacote pode acessar os membros e subclasses
de outros pacotes (default);

2
ISUTC – Programação II Mujhahid Karim

Normalmente os atributos são privados e os métodos são públicos, essa regra deve ser seguida
porque o objectivo é que os atributos de um objecto apenas podem ser alterados por ele mesmo.
Desta forma inviabilizamos as situações como o exemplo descrito abaixo:
Classe Cliente.java

Classe Conta.java

Classe ArrancaConta.java

3
ISUTC – Programação II Mujhahid Karim

Erro 1:
O que notamos aqui, foi que na classe ArrancaConta.java existe duas contas de dois clientes diferentes,
onde um deles tem o carácter honesto e outro desonesto. Ate agora parece tudo normal, mas veja,
por causa de uma falha no aspecto da Boa Programação nesse exemplo, o cliente desonesto,
aproveita que a variável numConta é publica, invocando ela e mudando o valor do id da conta dele para
a conta de uma outra pessoa, e como já estudamos todo programa sempre usa uma variável para
identificar o cliente/pessoa/empresa ou qualquer objecto.

Erro 2:
Suponha agora que pela regra da Conta todas as pessoas que vão depositar um valor deve haver um
corte 1 Metical para ajuda de custo as pessoas mais necessitadas, e esse método chama-se
deposita(valor) e o método já esta preparado para cativar 1 Metical de todas pessoas que venham
depositar, mas o programador entrou agora na instituição e não tem conhecimentos sólidos em
programação porque andou dormindo nas aulas ele pode implementar o programa da seguinte
maneira

Se prestou atenção vai notar que ele fez o deposito sim, mas o problema foi que ele foi contra as
regras do Banco não cativando 1 Metical para ajuda do custo, mas o programador que fez a base do
programa também não programou correctamente, porque as variáveis que deveriam ser privadas da
classe estão a ser acedidas e usadas de qualquer forma.

O conceito de Encapsulamento começa aqui, toda variável que apenas deve ser usada dentro da
classe ela deve ser declarada como privada, para que o acesso seja somente interno, ou seja as
variáveis externas não devem ter o conhecimento dessas variáveis.

Ex: Imagina uma Trabalhadora domestica que usa a maquina de lavar roupa na casa do patrão, ela
o que deve saber? Ela apenas deve saber como ligar a maquina e como desligar, ela não precisa
saber como a maquina lava a roupa, como a maquina seca a roupa, que algoritmo a maquina usa
para uma boa lavagem, ou seja os detalhes ficam ocultos apenas para o classe.

Colocando as variáveis como privada, surge uma questão! Se quisermos obter apenas o saldo? Se
quisermos apenas obter o nome da conta, se quisermos apenas obter o número da conta?

Agora vamos entrar numa outra convenção quando programamos em JAVA. São os métodos
getters e setters, esses métodos são responsáveis por fornecer meio de acessar as variáveis.

Mas deve ficar claro que esses métodos apenas irão ser criados caso necessário, não haverá acesso
para atributos que não interessam a outros objectos.

A convenção para os métodos é a seguinte:

Getters: método que sempre retorna um atributo, é sempre composto pela palavra get<nome do
atributo> .
public String getNome()
{
return nome;
}

Setters: método que atribui o valor do atributo, é sempre composto pela palavra set<nome do
atributo> e o parâmetro do mesmo tipo.

4
ISUTC – Programação II Mujhahid Karim

public void setNome(String nome)


{
this.nome = nome;
}

--- FIM DO DOCUMENTO ---