Sei sulla pagina 1di 17

Programação Orientada a Objectos

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.

Exemplo 1 – Um carro tem características como:


− cor;
− modelo;

− marca;

− cilindrada, etc.

Cada carro tem as suas características que diferem de uns para os outros.

Para além das características, pode observar-se nos objectos um comportamento.

Exemplo 2 -No caso de um carro pode observar:


− Existe uma forma de travar (diminuir a velocidade).
− O carro pode estar em movimento ou pode estar parado.
− Existe uma forma de acelerar (aumentar a velocidade).

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

Todos os programas construídos envolveram o uso de uma classe com main.


A diferença entre um programa e uma classe é o método main, ou seja, uma classe que possui este método é
uma aplicação ou programa que pode utilizar outras classes externas.
As classes são modelos a partir dos quais podem ser criados objectos.

Exemplo 3 – Consideremos um produto:

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€

Foram instanciados dois produtos.

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

Exemplo 4 – A criação de um vector de inteiros é:


int [] vector = new int [dimensão];
Ou seja, está a ser construída uma nova instância de uma estrutura do tipo vector de inteiros.

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:

São declaradas 3 variáveis


do tipo produto. Para que
sejam criadas novas
instâncias da classe
produto é necessário usar
a instrução new.

O que vai acontecer ao ser


executada esta instrução? O
novo produto A, apenas foi
O valor por defeito do JAVA criado, ainda não foi
quando se declarar variáveis do instanciado!
tipo numérico é zero e null
(vazio) quando se declaram
variáveis do tipo String.

double
int

String int

Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos

Como se instanciam os objectos?

Instanciar = a dar valores ao Produto A

Instanciar = a dar valores ao Produto B

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:

A variável é declarada como estática.


Como funciona uma variável declarada desta forma:

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:

Declaração das variáveis – atributos do Produto

Declaração dos métodos

Método que mostra


o nome de um Método que mostra
produto o preço de um
produto

Programação e Algoritmos II
© Ângela Oliveira
2006/2007
Programação Orientada a Objectos

Como se usam os métodos da classe?

Chamada dos métodos


da classe para mostrar os
valores instanciados
para o Produto A.

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

Acrescentando a chamada do método na Classe “UsarProduto3” tem-se:

E o resultado da execução será:

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.

Um exemplo prático do dia a dia de encapsulamento será:

Exemplo 8 - Um telespectador não necessita de conhecer o funcionamento interno do aparelho televisivo,


apenas conhece a forma como se manipula para poder fazer uso dele.

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.

• protected - nível de acesso relacionado com relações de herança entre classes.

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

Este tipo de situação, protege a variável de tomar valores absurdos. Como?


O caso prático de encapsulamento está inerente nos métodos “acelera” e “trava” da classe “Veiculo”. Porquê?
Uma vez, que como vimos nas duas situações anteriores, os objectos não podem manipular esta variável, os
métodos “acelera” e “trava” definem os valores máximo e mínimo, respectivamente, para que a variável
velocidade não possa tomar valores absurdos. Neste caso, a velocidade está limitada ao intervalo [0,10].
Da mesma forma que uma variável um método também pode ser declarado private.

Exemplo 10 – Uso de um método privado, na classe Veiculo:

Exercicio: Qual o output do código anterior? Onde encontra representado encapsulamento?


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

Consideremos a classe UsaProduto4:

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.

Exercício: Como elaborar o método construtor neste caso?

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

Potrebbero piacerti anche