Prévia do material em texto
Mónica Cameirão
monica.cameirao@staff.uma.pt Programação Orientada por Objetos
TIPOS ENUMERADOS
Tipos Enumerados
2
O JAVA permite definir um tipo enumerado,
que consiste num conjunto pequeno de
constantes definidas pelo programador.
Exemplos de enumerações:
Os pontos cardeais {Norte, Sul, Este, Oeste}
Os dias da semana {Dom, Seg, Ter, Qua, …}
Os estados de um semáforo {Verde, Amarelo,
Vermelho}
Declaração de tipos enumerados
3
No JAVA, um tipo enumerado é definido
através de uma classe especial identificada
pela palavra reservada enum.
No corpo desta classe declaram-se, separados
por vírgulas, os identificadores das designadas
constantes de enumeração.
Declaração de tipos enumerados
4
Na sua forma mais simples, a declaração de
um enum tem a seguinte sintaxe:
A enumeração Direcao tem 4 constantes de
enumeração.
public enum Direcao {
NORTE, SUL, ESTE, OESTE
}
Declaração de tipos enumerados
5
Usamos um tipo enumerado sempre que
queremos representar um conjunto fixo de
constantes.
public enum Luz {ON, OFF}
public enum Cafe {CURTO, NORMAL, CHEIO}
public enum Dia {DOM, SEG, TER, QUA, QUI, SEX, SAB}
Declaração de tipos enumerados
6
Uma vez definida a enumeração, podemos
declarar variáveis desse tipo:
Dia hoje;
As constantes são acedidas da seguinte forma:
hoje = Dia.QUI;
NetBeans - enum
7
Para criar um tipo enumerado:
Declaração de tipos enumerados
8
Declaramos as constantes no enum:
Métodos predefinidos
9
Qualquer enum definido pelo programador é
subclasse de java.lang.Enum.
Basta criar o tipo e teremos imediatamente
disponível um conjunto de métodos.
Métodos predefinidos – ordinal()
10
Cada elemento de um tipo enumerado tem um
valor ordinal associado, começando em 0:
public enum Cafe {CURTO, NORMAL, CHEIO}
0 1 2
O método ordinal() devolve o inteiro
associado a cada elemento:
Cafe meu = Cafe.NORMAL;
meu.ordinal(); → 1
Cafe meu = Cafe.NORMAL;
meu.name();
Métodos predefinidos – name()
11
public enum Cafe {CURTO, NORMAL, CHEIO}
O método name() devolve o nome de um
dado elemento:
→ NORMAL
Exemplo
12
Resultado?
Métodos predefinidos – values()
13
public enum Cafe {CURTO, NORMAL, CHEIO}
O método estático values() devolve um array
com as constantes do enum, que podem ser
iteradas com um ciclo for-each:
for ( Cafe meu : Cafe.values() )
//lógica a realizar
Exemplo
14
Resultado?
Atributos e métodos em tipos enumerados
15
Podemos associar valores a tipos enumerados. Os
valores são passados ao construtor quando as
constantes são criadas.
Cada constante da
enumeração é declarada com
um double referente a um
preço.
Nesta situação, necessitamos
ter um construtor para
passar os valores.
Variável que representa o
preço.
Atributos e métodos em tipos enumerados
16
Os enum podem ter métodos e atributos.
Quando existem atributos ou
métodos, a enumeração tem
de terminar com ;
O construtor de um enum tem
de ser private. Serve para
criar e inicializar as
constantes.
Atributos e métodos em tipos enumerados
17
Podemos ter um
seletor que
permite
consultar o
preço de uma
t-shirt de
acordo com os
tamanhos
existentes.
Testando
18
Exercício
19
Pretende-se criar uma encomenda de t-shirts
de diferentes tamanhos e calcular o valor total
da mesma.
Crie uma classe Encomenda.
Uma encomenda tem como atributo um
HashMap<K,V> em que as chaves são do tipo
TShirt e os valores do tipo Integer para
representar o número de t-shirts.
Exercício
20
Exercício
21
Inclua um método para adicionar um novo item
à encomenda.
Exercício
22
Inclua um método para calcular e devolver o
valor total da encomenda.
Exercício
23
Teste realizando uma encomenda de algumas
t-shirts de diferentes tamanhos.
Exercício
24
Referências
25
Java Software Solutions, Foundations of
Program Design, John Lewis, William Loftus,
Addison Wesley
Programação em Java – Curso Completo.,
Pedro Coelho, FCA.
Java 8, F. Mário Martins, FCA.