Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Conceito de Objecto
A linguagem JAVA baseia-se nos conceitos da orientação a objectos.
No quotidiano estamos cercados por objectos, que identificamos pelo tipo, forma, etc.
Identificamos em cada objecto um conjunto de características.
− marca;
− cilindrada, etc.
Cada carro tem as suas características que diferem de uns para os outros.
A programação orientada a objectos tenta simular os aspectos referentes aos objectos e o seu
comportamento, transportando para o computador a realidade do dia-a-dia.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
2. Classes
Elementos que
caracterizam o
objecto produto
As variáveis que definem um produto podem ser instanciadas pelos objectos. O que significa que cada uma
das variáveis vai tomar um valor específico. Como se pode observar:
01 02
Cane ta Borracha
5 23
1,20€ 0,90€
O processo de criação de um objecto, a partir da classe é designado por processo de instanciação. Este
processo corresponde à alocação de memória para armazenar informações de um objecto.
A instrução em JAVA que permite, criar uma nova instância de um objecto é new.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Observação: Uma classe representa um modelo abstracto que serve apenas como base, os objectos
representam modelos concretos.
Exemplo 5 – Dentro do mesmo package onde foi criada a classe Produto, construa-se uma classe que vai usar
objectos do tipo produto:
double
int
String int
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Como se pode observar o resultado produzido, não é mais que a impressão dos valores atribuídos a cada um
dos elementos que constituem a classe Produto.
Cada objecto construído trata as variáveis de instância de forma exclusiva, ou seja, cada objecto tem variáveis
associadas a si.
Existem casos em que é necessário partilhar uma variável com todos os objectos, ou seja o conteúdo da
variável é controlado pela classe e não pelo objecto individualmente.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Exemplo 6 – Suponhamos que os produtos têm que ter um código de identificação de loja, que têm que ser
igual para todos os produtos da mesma loja.
O conteúdo deste tipo de variável tem que ser estático, a declaração tem que ser, da forma seguinte:
Se o valor do
código da loja for
definido para um
dos produtos vai
ser igual para os
restantes.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Uma vez que a variável “codigoloja” é controlada pela Classe e não pelos objectos ela pode ser inicializada da
seguinte forma:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
3. Métodos da Classe
Como foi referido, no início, os objectos têm características, mas também têm comportamento.
Em JAVA, o comportamento dos objectos é traduzido em métodos. Assim para uma classe são definidos
atributos e métodos que representam o comportamento dos objectos.
Exemplo 7 - Consideremos métodos distintos para mostrar: o nome dos Produtos e o respectivo preço:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Outros métodos podem ser definidos para a classe, por exemplo, calcular o preço do produto com IVA. Uma
vez que o IVA não é um valor fixo, pode ser pedido ao utilizador e passado por parâmetro para o método.
Na construção do método na classe, apenas, importa que o método tem que receber um valor do tipo real.
A figura seguinte ilustra a classe Produto, com o novo método para calcular o preço com IVA.
O método irá
receber onde for
chamado o valor
de uma variável do
tipo double
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
4. Encapsulamento
Até ao momento as variáveis e os métodos declarados na classe são visíveis para todos os objectos criados.
A ideia subjacente encapsulamento é que um utilizador não necessita de conhecer o funcionamento interno
de um programa, apenas o utiliza.
Assim, numa classe podem ser definidos os níveis de acesso, ou seja, a forma como os elementos da classe
podem ser vistos.
A instrução a usar para definir a forma de acesso, será consoante o acesso pretendido:
• public - nível de acesso que define elementos públicos, ou seja, elementos que podem ser acedidos a
partir de qualquer ponto do programa. O método main é sempre público.
• private - nível de acesso que define elementos privados, ou seja, elementos que apenas podem ser
acedidos por código que faça parte da mesma classe a que o elementos pertence. Esse código é aque-
le que existirá nos métodos da classe.
Exemplo 9 - Considere-se a classe Veiculo, com as variáveis: marca, modelo e velocidade; com os métodos
acelera, trava e mostravelocidade, definida dentro de uma outra classe que usa a primeira:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
O valor da variável
velocidade não pode ser
manipulado pelo objecto.
Para manipular o valor da
variável velocidade apenas
podem ser usados os
métodos da classe.
Resultado da execução:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
No caso do exemplo anterior, se, se tentar manipular a “velocidade” no main da classe ExEncapsumamento,
veja-se o que acontece:
Qualquer tentativa de manipulação da variável, “velocidade” fora da class Veiculo resulta num erro.
Outro exemplo:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
5. Construtores
Todos os objectos criados usam a instrução new. Mas esta instrução pode ser usada desde que não haja
um método construtor, este método como o próprio nome indica é responsável por construir um objecto
com determinados valores.
O método construtor:
• Tem obrigatoriamente o mesmo nome que a classe onde está definido;
• Se não for declarado, o JAVA assume, um método construtor por defeito, que como já foi
referido, inicializa as varáveis com valores numéricos a zero, as variáveis booleanas a false e
os objectos como Strings a null;
• È responsável, por alocar espaço, em memória para o novo objecto;
• Pode conter as seguintes atribuições:
o Abrir ficheiros;
o Inicializar periféricos;
o Inicializar variáveis;
o Outros procedimentos de acordo com o objecto criado;
o Pode conter chamada a outros métodos.
Exemplo 10 – Consideremos a classe Produto definida no exemplo 3. Defina-se um construtor para a classe:
Construtor com o
mesmo nome que a
classe que inicializa o
atributo codigo.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Ao imprimir o código do
produto ele toma o valor
com que foi inicializado
Todos os outros
atributos que não foram
inicializados tomam os
valores por defeito
O construtor é um método que funciona como qualquer outro método em Java, pode receber e devolver
valores.
Suponhamos que são sempre entregues 100 unidades de cada produto. O código dos produtos deve ser
sempre diferente, assim como o nome.
Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos
Solução:
Programação e Algoritmos II
© Ângela Oliveira
2006/2007