Вы находитесь на странице: 1из 8

Departamento de Matemática 2.

Classes, Atributos e Métodos


Universidade dos Açores
Departamento de Matemática

Informática, Redes e Multimédia


Engenharia Informática e de Computadores
Disciplina
Docente
Paulo Leocádio Programação Centrada em Objectos
Endereço electrónico Programação com Objectos
pleocadio@uac.pt

Departamento de Matemática Docente: Paulo Leocádio E-mail: pleocadio@uac.pt Página ƒ 2

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

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
ƒ Modificadores de acesso (visibilidade)
( ) (respondem às mesmas mensagens),
mensagens) pelo que possuem igual
comportamento.
ƒ Sobrecarga de métodos (method overloading)
ƒ Uma classe é composta por:
ƒ Variáveis e métodos de classe
– Identificador que indica o nome da classe.
ƒ Ciclo de vida de um objecto – Atributos (ou variáveis de instância), ié, valores que cada objecto contém e
cujos domínios podem ser de:

• Tipos
Ti primitivos
i iti :inteiros,
i t i reais,
i caracteres,…
t

• Referências a outros objectos (ou tipos classe) : identificando relações


entre objectos.

– Métodos que são as operações que podem alterar os valores do objecto.

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 3 Página ƒ 3


Docente: Paulo Leocádio
ƒ Os atributos
Programação com E-mail:
e osObjectos
métodos /são pleocadio@uac.pt
Processamento
designados por demembros
Dados I da classe. 4 Página ƒ 4

1
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Classes, Atributos e Métodos


Classes, Atributos e Métodos
– Os métodos são catalogados em:

• Construtor: executado na criação do objecto.


• Um método é uma sequência de acções, executada por um objecto,
que poded alterar
lt ou dar
d a conhecer
h o seu estado
t d (valor
( l d
dos » Têm usualmente o mesmo identificador da classe.
atributos). » Nunca devolvem tipos.

» Não podem ser evocados.


• Enquanto que o valor dos atributos reside no objecto, o método
» Normalmente usados para inicializar os atributos.
reside na classe.

• Assinatura dum método: • Destrutor: executado na destruição do objecto.


objecto

• Modificador: altera valor dos atributos.


– identificador do método;
• Selector: dá a conhecer o valor dos atributos, sem os alterar.
– identificador e tipo dos parâmetros;

– valor de retorno.
Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 5 Página ƒ 5
Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 6 Página ƒ 6

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Classes, Atributos e Métodos Exemplo


“Considere uma lâmpada de N watts que poderá estar em 2 estados:
acesa e apagada.”
Identificador da classe ƒ Classe
– Lampada: classe que caracteriza uma lâmpada e descreve o seu
Atributos comportamento
( ou variáveis de instância)

ƒ Atributos
Métodos
– watts: numérico de tipo inteiro que guarda os watts da lâmpada
Construtores
– estado: um booleano que indicará se a lâmpada está acesa (true) ou
Modificadores
apagada (false).
Selectores

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 7 Página ƒ 7


Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 8 Página ƒ 8

2
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Exemplo Exemplo

ƒ Métodos ƒ Métodos
– Construtores – Selectores

» Lampada (parâmetro: watts): método que cria um objecto do » getWatts():inteiro: método que retorna o número de watts de
tipo Lampada com um determinado número de watts e apagada um objecto do tipo Lampada.

» Lampada (parâmetro: watts, parâmetro: estado): método que » getEstado():booleano: método que retorna o estado actual de
cria um objecto do tipo Lampada com um determinado número um objecto do tipo Lampada..
de watts e estado.
estado

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 9 Página ƒ 9


Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 10Página ƒ 10

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Exemplo Exemplo

ƒ Métodos ƒ Métodos
– Selectores – Modificadores
» getWatts():inteiro: método que retorna o número de watts de » acende(): método que acende uma lâmpada que esteja
um objecto do tipo Lampada. apagada
» apaga(): método que apaga uma lâmpada que esteja acesa
» getEstado():booleano: método que retorna o estado actual de
um objecto do tipo Lampada. OBS:
– O método setEstado(parâmetro: estado) não é implementado porque não
explicita de modo suficientemente claro o tipo de acção pretendida.
pretendida
OBS: O método getEstado() pode, ainda, ser substituído por dois outros métodos: – O método setWatts(parâmetro: watts) não é implementado porque não
deverá ser possível alterar os watts de uma lâmpada após a sua criação.
estaAcesa():booleano que verifica se a lâmpada está acesa
– Os métodos acende() e apaga() poderiam ainda retornar um booleano a
estaApagada():booleano que verifica se a lâmpada está apagada
confirmar a execução, ou não da acção pretendida.

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 11Página ƒ 11 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 12Página ƒ 12

3
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Implementação Java do exemplo /* métodos selectores: retornam os valores dos atributos */


public class Lampada{ public int getWatts(){
return this.watts;
/* atributos de instância*/ Classe } Classe
private int watts;
p
Lampada p
Lampada
private
i b l
boolean estado;
d public boolean getEstado () {
return this.estado;
/* construtores*/ }

public Lampada(int watts){ /* métodos modificadores: actualizam os atributos */


this.watts = watts; /* da classe com os valores dos parâmetros */
estado = false; public void acende () {
} if (this.estado == false)
this.estado = true;
public Pessoa(int watts, boolean estado) { }
this.watts = watts; public void apaga() {
this.estado = estado; if (this.estado == true)
} this.estado = false;
}
}

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 13Página ƒ 13 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 14Página ƒ 14

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Modificadores de acesso (visibilidade)


; Classes, Atributos e Métodos O Java fornece mecanismos de controlo de acessibilidade
(visibilidade) tanto para classes como para os respectivos membros.
ƒ Modificadores de acesso (visibilidade)
ƒ Classes:
ƒ Sobrecarga de métodos (method overloading)
– Quando nenhum modificador é usado na definição da visibilidade de
ƒ Variáveis e métodos de classe uma classe então esta pode ser acedida apenas a partir do interior
do package a que pertence.
ƒ Ciclo de vida de um objecto
• Exemplo: class Exemplo

– Uma classe declarada como public poderá ser acedida dentro e fora
do package a que pertence.

• Exemplo: public class Exemplo

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 15Página ƒ 15 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 16Página ƒ 16

4
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Modificadores de acesso (visibilidade)


Modificadores de acesso (visibilidade)
ƒ Métodos:
– public - o método pode ser evocado dentro da própria classe ou a partir de
ƒ Métodos: (continuação)
qualquer outra classe.
public void exemplo() {...}
– Uma classe comunica com outras classes através do conjunto dos
– private - o método é acessível apenas dentro da classe a que pertence. seus métodos que não foram declarados como private, pois apenas
private void exemplo() {...} esses são visíveis do exterior. O conjunto desses métodos constitui
a interface (API) da classe.
– 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. – Os métodos construtores da classe devem ser declarados como
protected void exemplo()
p p () {{...}} public pois só assim poderemos instanciar a classe a que pertencem
– "friendly" - quando nada se indica o método é acessível a qualquer classe a partir de qualquer programa Java.
do mesmo package.
void exemplo() {...}

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 17Página ƒ 17 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 18Página ƒ 18

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos


2. Classes, AtributoseeMétodos
Métodos

Modificadores de acesso (visibilidade)


ƒ Variáveis de instância (atributos): ; Classes, Atributos e Métodos

; Modificadores de acesso ((visibilidade))


– Embora
E b o Java
J permita
it declarar
d l as variáveis
iá i ded instância
i tâ i como
public (e também por omissão) essa prática não é aconselhável.
ƒ Sobrecarga de métodos (method overloading)
– Por razões de preservação do encapsulamento da estrutura interna
ƒ Variáveis e métodos de classe
da classe as variáveis de instância devem ser declaradas como
private. ƒ Ciclo de vida de um objecto

– O acesso e modificação das variáveis de instância deve ser feito


através de métodos com visibilidade public.

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 19Página ƒ 19 Docente: Paulo Leocádio


Programação E-mail:
com Objectos pleocadio@uac.pt de Dados I
/ Processamento 20Página ƒ 20

5
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Sobrecarga de métodos (method overloading


overloading))
ƒ Podemos ter métodos com o mesmo nome desde que tenham ; Classes, Atributos e Métodos
assinaturas diferentes. Quando isso acontece dizemos que temos
sobrecarga
g de métodos ((method overloading).
g) ; Modificadores de acesso (visibilidade)
( )

; Sobrecarga de métodos (method overloading)


ƒ A assinatura de um método é constituída por:
– nome do método ƒ Variáveis e métodos de classe
tipo de args
– numero de argumentos ƒ Ciclo de vida de um objecto
– tipo de argumentos public void exemplo (int a, double b, char c)
– ordem
d d argumentos
dos t
nº de args = 3
Exemplo: nome

public void soma (int a, int b) Æ num.soma(2,5)


public void soma (double a, double b) Æ num.soma(2.0,5d)

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 21Página ƒ 21 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 22Página ƒ 22

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Variáveis e métodos de classe


Exemplo
– Por vezes existem atributos (variáveis) e métodos que não dizem
– Consideremos a classe Lampada definida anteriormente. Pretende-
respeito ao objecto (instância) em si, mas sim à própria classe. A estes
se adicionar a esta a variável contaLampadas
p que indica o n.º de
q
atributos dá-se
dá se o nome de variáveis de classe.
classe
lâmpadas já criadas, isto é, o n.º de objectos do tipo Lampada. O seu
– Para aceder e modificar estas variáveis têm que ser definidos valor é incrementado aquando da criação de uma lâmpada e
métodos próprios denominados de métodos de classe. decrementado no acto de eliminação de uma conta..

– Quer as variáveis, quer os métodos de classe diferenciam-se dos de – Assim, contaLampadas não caracteriza nenhuma lâmpada em
instância pela inclusão do qualificador static. particular, logo não é uma variável de instância, mas de classe.

private static int contador; //variável de classe

private static void incrementa () { //método de classe Que alterações seria necessário efectuar na classe Lampada?
++contador; }
Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 23Página ƒ 23 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 24Página ƒ 24

6
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Implementação Java do exemplo


public class Lampada{
; Classes, Atributos e Métodos
/* atributo de classe */ Classe
private static int contaLampadas=0;
p
Lampada ; Modificadores de acesso (visibilidade)
( )

/* atributos de instância*/ ; Sobrecarga de métodos (method overloading)


private int watts;
private boolean estado; ; Variáveis e métodos de classe
(…)
ƒ Ciclo de vida de um objecto
/* método de classe: para incrementar contaLampadas de cada
vez que for criada uma nova lâmpada
lâmpada*/
/

private static void incContaLampadas(){


++contaLampadas;
}

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 25Página ƒ 25 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 26Página ƒ 26

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Ciclo de vida de um objecto


Ciclo de vida de um objecto
ƒ Criação
– A vida de um objecto compreende três fases distintas. São elas:
Esta fase envolve três partes:
• Criação
(1) Declaração de uma variável para referir um objecto
• Utilização
tipo_de_dados nome_da_variável
• Remoção
– Notifica o compilador que nome irá ser usado para referenciar um objecto
do tipo indicado.

– Uma declaração
ç não cria novos objectos.
j

– A referência irá se manter a null até que exista alguma atribuição.

Exemplo:
p
Pessoa p; null

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 27Página ƒ 27 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 28Página ƒ 28

7
Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Ciclo de vida de um objecto Ciclo de vida de um objecto objecto


p1 nome = “Ana”
ƒ Criação (continuação)
ƒ Criação (continuação) numTelefone = 123456789
p2 numBI = 135792468
(2) Instanciação de um objecto
(3) Inicialização de um objecto
tipo_de_dados nome_da_variável = new tipo_de_dados() – O operador new evoca o construtor de acordo com os parâmetros
indicados.
– O operador new reserva memória para o novo objecto e evoca o construtor.
– Uma classe pode ter vários construtores, que diferem no número e tipo dos
– O operador new retorna a referência para o novo objecto argumentos.
– Os construtores possuem o mesmo nome da classe.
– Uma declaração de uma variável não implica sempre uma instanciação de
objecto uma classe.
l T d depende
Tudo d d do
d que pretendemos
t d f
fazer
Exemplo: nome = null Vários construtores Æ Várias formas de inicializar
p
numTelefone = 0
Pessoa p = new Pessoa() numBI = 0 Pessoa p1 = new Pessoa (“Ana”,123456789,135792468)

Pessoa p2 = p1

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 29Página ƒ 29 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 30Página ƒ 30

Departamento de Matemática 2. Classes, Atributos e Métodos Departamento de Matemática 2. Classes, Atributos e Métodos

Ciclo de vida de um objecto Ciclo de vida de um objecto

ƒ Utilização ƒ Remoção

ƒ O Java Runtime Environment (JRE) possui um "garbage collector" que


Uma vez criado um objecto podemos utilizá-lo enviando e recebendo
periodicamente liberta a memória usada pelos objectos que já não estão
mensagens do mesmo. a ser referenciados.
ƒ Podemos evocar o "garbage collector" explicitamente através do
Para isso é necessário conhecer o seu interface (API) com o exterior.
método gc da classe System

System.gc();
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.

Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 31Página ƒ 31 Docente: Paulo Leocádio E-mail: pleocadio@uac.pt 32Página ƒ 32

Вам также может понравиться