Académique Documents
Professionnel Documents
Culture Documents
em ingls Queues
pronuncia-se ku
Fac. Cincias Univ. Lisboa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Hoje
!
Especificao da fila.
Implementao vectorial.
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Construo da Especificao
!
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Construo da Especificao
! A operao isEmpty um predicado:
!
isEmpty: Queue;
! Para obter o elemento da frente da fila, precisamos de
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Constructors
! Claro que nem isEmpty nem front, j que no retornam
nenhuma Queue.
! A pergunta seguinte :
!
!
!
Fac. Cincias
Univ. Lisboa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Axioms
! O passo final, e o mais importante.
!
Obviamente:
isEmpty (make());#
! not isEmpty (enqueue (Q, E));#
!
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Mais Axioms
! Como no podemos observar o front de uma queue
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Mais Axioms
!
Combinando os dois:
!
front(enqueue(Q, E)) =
E when isEmpty(Q)
else front(Q);#
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Mais axiomas:
! Para relacionar dequeue com enqueue
! O lado esquerdo ser dequeue(enqueue(Q, E))
!
dequeue(Q)#
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Fica:
!
Exemplo:
Esta Q
d c b a
Esta enqueue(Q,e) e d c b a
E esta
dequeue(enqueue(Q,e)) e d c b
Novamente Q
d c b a
dequeue(Q) d c b
enqueue(dequeue(Q),e) e d c b
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Especificao de Element#
!
! specification
sorts
Element
end specification#
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Refinement do Queue
!
Usamos
!
!
! refinement
Fac. Cincias
Univ. Lisboa
implementao
! A classe LinkedList implementa a interface Queue#
!
Exemplo:
! Queue<String> names = new LinkedList<String>();#
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Implementao vectorial
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
constructors
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Mtodos pblicos
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Mtodos auxiliares
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa
Classe Adaptadora
! Chama-se adapter class a uma classe que implementa
Luis Antunes
Algoritmos e Estruturas de Dados 2010-2011
Fac. Cincias
Univ. Lisboa