Estruturas e Algoritmos
Algoritmos e Estruturas de Dados
2. Classes, Atributos e Métodos
1
2. Classes, Atributos e Métodos
|
Classes, Atributos e Métodos
|
Modificadores de acesso (visibilidade)
|
Sobrecarga de métodos (method overloading)
|
Variáveis e métodos de classe
|
Ciclo de vida de um objecto
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
2
2. Classes, Atributos e Métodos
Classes, Atributos e Métodos
|
Uma classe é um objecto especial que serve de molde ou padrão para a
criação de objectos similares designados por instâncias da classe. Estes
objectos possuem a mesma estrutura interna (atributos) e a mesma
interface (respondem às mesmas mensagens), pelo que possuem igual
comportamento.
|
Uma classe é composta por:
z
Identificador que indica o nome da classe.
z
Atributos (ou variáveis de instância), ié, valores que cada objecto contém
e cujos domínios podem ser de:
• Tipos primitivos :inteiros, reais, caracteres,…
• Referências a outros objectos (ou tipos classe) : identificando relações
entre objectos.
z
|
Métodos que são as operações que podem alterar os valores do objecto.
Os atributos e os métodos são designados por membros da classe.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
3
2. Classes, Atributos e Métodos
Classes, Atributos e Métodos
• Um método é uma sequência de acções, executada por um
objecto, que pode alterar ou dar a conhecer o seu estado (valor
dos atributos).
• Enquanto que o valor dos atributos reside no objecto, o método
reside na classe.
• Assinatura dum método:
• identificador do método;
• identificador e tipo dos parâmetros;
• valor de retorno.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
4
2. Classes, Atributos e Métodos
Classes, Atributos e Métodos
z Os
métodos são catalogados em:
• Construtor: executado na criação do objecto.
• Têm usualmente o mesmo identificador da classe.
• Nunca devolvem tipos.
• Não podem ser evocados.
• Normalmente usados para inicializar os atributos.
• Destrutor: executado na destruição do objecto.
• Modificador: altera valor dos atributos.
• Selector: dá a conhecer o valor dos atributos, sem os alterar.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
5
2. Classes, Atributos e Métodos
Classes, Atributos e Métodos
Identificador da classe
Atributos
( ou variáveis de instância)
Métodos
Construtores
Modificadores
Selectores
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
6
2. Classes, Atributos e Métodos
;
Classes, Atributos e Métodos
|
Modificadores de acesso (visibilidade)
|
Sobrecarga de métodos (method overloading)
|
Variáveis e métodos de classe
|
Ciclo de vida de um objecto
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
7
2. Classes, Atributos e Métodos
Modificadores de acesso (visibilidade)
O Java fornece mecanismos de controlo de acessibilidade
(visibilidade) tanto para classes como para os respectivos membros.
|
Classes:
z Quando
nenhum modificador é usado na definição da visibilidade
de uma classe então esta pode ser acedida apenas a partir do
interior do package a que pertence.
• Exemplo: class Exemplo
z Uma
classe declarada como public poderá ser acedida dentro e
fora do package a que pertence.
• Exemplo: public class Exemplo
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
8
2. Classes, Atributos e Métodos
Modificadores de acesso (visibilidade)
|
Métodos:
z public
- o método pode ser evocado dentro da própria classe ou a
partir de qualquer outra classe.
public void exemplo() {...}
z private
- o método é acessível apenas dentro da classe a que
pertence.
private void exemplo() {...}
z protected
- o método é acessível dentro da própria classe ou de
qualquer outra classe pertencente ao mesmo package. O método
é ainda acessível a partir de eventuais subclasses da classe a
que pertence.
protected void exemplo() {...}
z "friendly"
- quando nada se indica o método é acessível a
qualquer classe do mesmo package.
void exemplo() {...}
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
9
2. Classes, Atributos e Métodos
Modificadores de acesso (visibilidade)
| Métodos: (continuação)
z Uma
classe comunica com outras classes através do conjunto dos
seus métodos que não foram declarados como private, pois
apenas esses são visíveis do exterior. O conjunto desses métodos
constitui a interface (API) da classe.
z Os
métodos construtores da classe devem ser declarados como
public pois só assim poderemos instanciar a classe a que
pertencem a partir de qualquer programa Java.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
10
2. Classes, Atributos e Métodos
Modificadores de acesso (visibilidade)
|
Variáveis de instância (atributos):
z
Embora o Java permita declarar as variáveis de instância como
public (e também por omissão) essa prática não é aconselhável.
z
Por razões de preservação do encapsulamento da estrutura
interna da classe as variáveis de instância devem ser declaradas
como private.
z
O acesso e modificação das variáveis de instância deve ser feito
através de métodos com visibilidade public.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
11
2. Classes, Atributos e Métodos
;
Classes, Atributos e Métodos
;
Modificadores de acesso (visibilidade)
|
Sobrecarga de métodos (method overloading)
|
Variáveis e métodos de classe
|
Ciclo de vida de um objecto
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
12
2. Classes, Atributos e Métodos
Sobrecarga
overloading)
|
de
métodos
(method
Podemos ter métodos com o mesmo nome desde que tenham
assinaturas diferentes. Quando isso acontece dizemos que temos
sobrecarga de métodos (method overloading).
tipo de args
nome por:
A assinatura de um método é constituída
z nome do método
public void exemplo (int a, double b, char c)
z numero de argumentos
z tipo de argumentos
nº de args = 3
z ordem dos argumentos
Exemplo:
public void soma (int a, int b) Æ
num.soma(2,5)
public void soma (double a, double b) Æ num.soma(2.0,5d)
|
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
13
2. Classes, Atributos e Métodos
;
Classes, Atributos e Métodos
;
Modificadores de acesso (visibilidade)
;
Sobrecarga de métodos (method overloading)
|
Variáveis e métodos de classe
|
Ciclo de vida de um objecto
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
14
2. Classes, Atributos e Métodos
Variáveis e métodos de classe
z
Por vezes existem atributos (variáveis) e métodos que não dizem
respeito ao objecto (instância) em si, mas sim à própria classe. A
estes atributos dá-se o nome de variáveis de classe.
z
Para aceder e modificar estas variáveis têm que ser definidos
métodos próprios denominados de métodos de classe.
Quer as variáveis, quer os métodos de classe diferenciam-se dos
de instância pela inclusão do qualificador static.
z
private static int contador; //variável de classe
private static void incrementa () { //método de classe
++contador; }
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
15
2. Classes, Atributos e Métodos
;
Classes, Atributos e Métodos
;
Modificadores de acesso (visibilidade)
;
Sobrecarga de métodos (method overloading)
;
Variáveis e métodos de classe
|
Ciclo de vida de um objecto
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
16
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
z
A vida de um objecto compreende três fases distintas. São elas:
• Criação
• Utilização
• Remoção
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
17
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
| Criação
Esta fase envolve três partes:
(1) Declaração de uma variável para referir um objecto
tipo_de_dados nome_da_variável
z
Notifica o compilador que nome irá ser usado para referenciar um
objecto do tipo indicado.
z
Uma declaração não cria novos objectos.
z
A referência irá se manter a null até que exista alguma atribuição.
Exemplo:
Pessoa p;
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
p
null
18
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
| Criação (continuação)
(2) Instanciação de um objecto
tipo_de_dados nome_da_variável = new tipo_de_dados()
z
O operador new reserva memória para o novo objecto e evoca o
construtor.
z
O operador new retorna a referência para o novo objecto
objecto
p
Exemplo:
nome = null
numTelefone = 0
numBI = 0
Pessoa p = new Pessoa()
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
19
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
| Criação (continuação)
p1
p2
objecto
nome = “Ana”
numTelefone = 123456789
numBI = 135792468
(3) Inicialização de um objecto
O operador new evoca o construtor de acordo com os parâmetros
indicados.
z Uma classe pode ter vários construtores, que diferem no número e tipo
dos argumentos.
z Os construtores possuem o mesmo nome da classe.
z Uma declaração de uma variável não implica sempre uma instanciação
de uma classe. Tudo depende do que pretendemos fazer
Vários construtores Æ Várias formas de inicializar
z
Pessoa p1 = new Pessoa (“Ana”,123456789,135792468)
Pessoa p2 = p1
Programação com Objectos / Processamento de Dados I
20
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
| Utilização
Uma vez criado um objecto podemos utilizá-lo enviando e
recebendo mensagens do mesmo.
Para isso é necessário conhecer o seu interface (API) com o
exterior.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
21
2. Classes, Atributos e Métodos
Ciclo de vida de um objecto
| Remoção
|
|
O Java Runtime Environment (JRE) possui um "garbage collector"
que periodicamente liberta a memória usada pelos objectos que já não
estão a ser referenciados.
Podemos evocar o "garbage collector" explicitamente através do
método gc da classe System
System.gc();
|
É útil em situações onde se prevê a necessidade de utilizar grandes
quantidades de memória, ou em situações em que se utilizou grandes
quantidades de memória.
Algoritmos e Estruturas de Dados / Estruturas e Algoritmos
22
Download

Programação com Objectos Processamento de Dados I