SHARE
TWEET

Untitled

a guest May 19th, 2017 45 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //IQueue.h
  2. #pragma once
  3. #include "IFileSerializable.h"
  4.  
  5. /// Interface que define o comportamento de uma queue
  6. /// Versão 1.1 (12/04/2010)
  7.  
  8. template <class T>
  9. class IQueue: public IFileSerializable{
  10. public:
  11.     /// Construtores a implementar:
  12.     /// - omissão
  13.     /// - cópia
  14.     /// - Eventualmente, de conversão tais como:
  15.     /// Bag     -> Queue
  16.     /// Set     -> Queue
  17.     /// Sequence -> Queue
  18.     /// Dictionary (Dict)   -> Queue
  19.  
  20.     /// Métodos para a Queue
  21.    
  22.     /// Método que permite verificar se a Queue está vazia.
  23.     /// @return Devolve true se a Queue estiver vazia e false caso contrário.
  24.     virtual bool empty()const=0;
  25.  
  26.     /// Método que permite verificar se a Queue está cheia.
  27.     /// @return Devolve true se a Queue estiver cheia e false caso contrário.
  28.     virtual bool full()const=0;
  29.  
  30.     /// Método que permite determinar o número de elementos da Queue
  31.     /// @return Devolve o número de elementos existentes na Queue.
  32.     virtual int count()const=0;
  33.  
  34.     /// Método que permite remover todos os elementos da Queue.
  35.     /// @return Devolve o número de elementos removidos.
  36.     virtual int remAll()=0;
  37.  
  38.     /// Método que permite adicionar um novo elemento à queue.
  39.     /// @param c Elemento a adicionar à queue.
  40.     /// @return Devolve true se o elemento c efectivamente adicionado e false caso contrário.
  41.     virtual bool enqueue(const T &c)=0;
  42.  
  43.     /// Método que permite remover um elemento da queue.
  44.     /// @param c Elemento removido da queue.
  45.     /// @return Devolve true se efectivamente remover um elemento da queue e false caso contrário.
  46.     virtual bool dequeue(T &c)=0;
  47.  
  48.     /// Método que permite aceder ao próximo elemento a ser removido da queue.
  49.     /// @param c Próximo elemento a ser removido da queue.
  50.     /// @return Devolve true se existir o elemento c e false caso contrário.
  51.     virtual bool head(T &c)=0;
  52.  
  53.     /// Métodos entre Queues
  54.  
  55.     /// Método que permite fazer a concatenação de duas queues.
  56.     /// @param q Queue cujos elementos serão concatenados com o objecto.
  57.     /// @return Devolve a referência do objecto (Queue sobre a qual se fez a concatenação),
  58.     /// contendo já os elementos da Queue que entra como parâmetro.
  59.     virtual IQueue<T> &concate(IQueue<T> &q)=0;
  60.  
  61.     /// Método que permite verificar se duas Queues são iguais.
  62.     /// @param q Queue com a qual o objecto vai ser comparado.
  63.     /// @return Devolve true se as Queues são iguais e false caso contrário.
  64.     virtual bool equal(IQueue<T> &q)const=0;
  65.  
  66.     /// Redefinição de operadores
  67.  
  68.     /// Sobrecarga de operador ! - Permitindo verificar se a Queue está vazia.
  69.     /// @return Devolve true se a Queue estiver vazia e false caso contrário.
  70.     virtual bool operator!()const=0;
  71.  
  72.     /// Sobrecarga do operador () - Permitindo adicionar um novo elemento à Queue.
  73.     /// @param c Parâmetro a adicionar à Queue (deve ficar armazenado na Queue uma cópia de c).
  74.     /// @return Devolve true se o elemento for efectivamente inserido e false caso contrário.
  75.     virtual bool operator()(T &c)=0;
  76.  
  77.     /// Sobrecarga do operador [] - Permitindo remover um elemento da Queue.
  78.     /// @param c Elemento removido da Queue.
  79.     /// @return Devolve true se efectivamente for devolvido um elemento e false caso contrário.
  80.     virtual bool operator[](T &c)=0;
  81.  
  82.     /// Sobrecarga do operador = - Permitindo fazer a atribuição entre Queues.
  83.     /// @param q Identifica a Queue a atribuir ao objecto.
  84.     /// @return Devolve a referência do objecto (já após a atribuição).
  85.     //virtual IQueue<T>& operator=(IQueue<T> &q)=0;
  86.  
  87.     /// Sobrecarga do operador = - Permitindo fazer a atribuição de um Bag à Queue.
  88.     /// @param b Identifica o Bag a atribuir ao objecto.
  89.     /// @return Devolve a referência do objecto (já após a atribuição).
  90.     // virtual IQueue<T>& operator=(IBag<T> &b)=0;
  91.  
  92.     /// Sobrecarga do operador = - Permitindo fazer a atribuição de um Set à Queue.
  93.     /// @param s Identifica o Set a atribuir ao objecto.
  94.     /// @return Devolve a referência do objecto (já após a atribuição).
  95.     // virtual IQueue<T>& operator=(ISet<T> &s)=0;
  96.  
  97.     /// Sobrecarga do operador = - Permitindo fazer a atribuição de uma Sequence à Queue.
  98.     /// @param s Identifica a Sequence a atribuir ao objecto.
  99.     /// Nota: Na queue devem ficar guardados os valores associados aos índices.
  100.     /// @return Devolve a referência do objecto (já após a atribuição).
  101.     // virtual IQueue<T>& operator=(ISeq<T> &s)=0;
  102.  
  103.     /// Sobrecarga do operador += - Permitindo fazer a concatenação entre duas Queues.
  104.     /// @param q Queue cujos elementos serão concatenados com o objecto.
  105.     /// @return Devolve a referência do objecto (Queue sobre a qual se fez a concatenação),
  106.     /// contendo já os elementos da Queue que entra como parâmetro.
  107.     virtual IQueue<T>& operator+=(IQueue<T> &q)=0;
  108.  
  109.     /// Sobrecarga do operador == - Permitindo verificar se duas Queue são iguais.
  110.     /// @param q Queue com a qual o objecto vai ser comparado.
  111.     /// @return Devolve true se as Queues forem iguais e false caso contrário.
  112.     virtual bool operator==(IQueue<T> &q)const=0;
  113.  
  114.     /// Sobrecarga do operador != - Permitindo verificar se duas Queues são diferentes.
  115.     /// @param q Queue com a qual o objecto vai ser comparado.
  116.     /// @return Devolve true se as Queues forem diferentes e false caso contrário.
  117.     virtual bool operator!=(IQueue<T> &q)const=0;
  118.  
  119.     /// Métodos amigáveis
  120.     //// friend ostream& operator<< <T>(ostream&,IQueue<T>&);
  121. };
RAW Paste Data
Top