Programação com Objectos
Processamento de Dados I
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
Programação com Objectos / Processamento de Dados I
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.
Programação com Objectos / Processamento de Dados I
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.
Programação com Objectos / Processamento de Dados I
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.
Programação com Objectos / Processamento de Dados I
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
Programação com Objectos / Processamento de Dados I
6
2. Classes, Atributos e Métodos
Exemplo
“Uma conta bancária contém sempre um saldo e pertence a
uma pessoa. A pessoa tem um nome, telefone e um número
de BI. Na conta pode ser depositado ou levantado dinheiro.
Sempre que entender, o titular pode consultar o saldo da
conta”.
|
Classes
z Conta,
que identifica uma conta bancária
z Pessoa,
|
que identifica uma pessoa
Atributos primitivos
z Conta:
saldo (float)
z Pessoa:
nome (string), numTelefone (long), numBI (long)
Programação com Objectos / Processamento de Dados I
7
2. Classes, Atributos e Métodos
Exemplo
z Atributos
referência
• Conta: titular (instância de uma Pessoa)
z Métodos
• Conta:
• Levantamento (parâmetro: quantia a levantar)
• Deposito (parâmetro: quantia a depositar)
• Saldo (retorna: saldo da conta)
• Pessoa:
• numTelefone (retorna: número de telefone)
• numBI (retorna: número de BI)
Programação com Objectos / Processamento de Dados I
8
2. Classes, Atributos e Métodos
Implementação Java do exemplo
Classe Pessoa
public class Pessoa {
/* atributos da classe */
private String nome;
private long numTelefone;
private long numBI;
/* construtor por defeito
*/
/* inicializa: nome = null, numTelefone=0 e numBI=0 */
public Pessoa(){ }
/* construtor com parâmetros
*/
/* inicializa os atributos da classe */
/* com os valores dos parâmetros
*/
public Pessoa(String nome, long numTelefone, long numBI) {
this.nome = nome;
this.numTelefone = numTelefone;
this.numBI = numBI;
}
Programação com Objectos / Processamento de Dados I
9
2. Classes, Atributos e Métodos
/* métodos modificadores actualizam os atributos */
/* da classe com os valores dos parâmetros
*/
public void setNome (String nome) {
this.nome = nome;
}
public void setNumTelefone (long numTelefone) {
this.numTelefone = numTelefone;
}
/* métodos selectores retornam os valores dos atributos */
public String getNome(){
return nome;
}
public long getNumTelefone () {
return numTelefone;
}
public long getNumBI () {
return numBI;
}
}
Programação com Objectos / Processamento de Dados I
10
2. Classes, Atributos e Métodos
public class Conta {
Classe Conta
/* atributos da classe */
private float saldo;
private Pessoa titular;
/* construtor por defeito
public Conta(){
saldo = 0;
titular = new Pessoa();
}
*/
/* construtor com parâmetros
*/
/* inicializa os atributos da classe */
/* com os valores dos parâmetros
*/
public Pessoa(float saldo, Pessoa titular) {
this.saldo = saldo
this.titular = titular;
}
Programação com Objectos / Processamento de Dados I
11
2. Classes, Atributos e Métodos
/* métodos modificadores actualizam os atributos */
/* da classe com os valores dos parâmetros
*/
public void levantamento (float valor) {
if (saldo >= valor)
saldo = saldo – valor;
else
System.out.print("Saldo da sua conta é inferior");
}
public void deposito (float valor) {
saldo += valor;
}
public void setTitular (Pessoa pes) {
titular = pes;
}
/* métodos selectores retornam os valores dos atributos */
public String getTitular(){
return titular.getNome();
}
public float consultarSaldo () {
return saldo;
}
}
Programação com Objectos / Processamento de Dados I
12
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
Programação com Objectos / Processamento de Dados I
13
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
Programação com Objectos / Processamento de Dados I
14
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() {...}
Programação com Objectos / Processamento de Dados I
15
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.
Programação com Objectos / Processamento de Dados I
16
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.
Programação com Objectos / Processamento de Dados I
17
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
Programação com Objectos / Processamento de Dados I
18
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)
|
Programação com Objectos / Processamento de Dados I
19
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
Programação com Objectos / Processamento de Dados I
20
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; }
Programação com Objectos / Processamento de Dados I
21
2. Classes, Atributos e Métodos
Exemplo
z
Consideremos a classe Conta definida anteriormente. Pretende-
se adicionar a esta a variável nContas que indica o n.º de contas já
criadas, isto é, o n.º de objectos do tipo Conta. O seu valor é
incrementado aquando da criação de uma conta e decrementado no
acto de eliminação de uma conta..
z
Assim, nContas não caracteriza nenhuma conta em particular, logo
não é uma variável de instância, mas de classe.
Que alterações seria necessário efectuar na classe Conta?
Programação com Objectos / Processamento de Dados I
22
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
Programação com Objectos / Processamento de Dados I
23
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
Programação com Objectos / Processamento de Dados I
24
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;
Programação com Objectos / Processamento de Dados I
p
null
25
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()
Programação com Objectos / Processamento de Dados I
26
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
27
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.
Programação com Objectos / Processamento de Dados I
28
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.
Programação com Objectos / Processamento de Dados I
29
Download

Classes, atributos e métodos