#ifndef STACK_H #define STACK_H #include "stack-iterator.h" using namespace StackLib; namespace StackLib { class Stack { // Classe Abstrata !!! public: enum TpStack { STACK_VE, STACK_LE }; virtual void push(int) = 0; // abstract method ... virtual int pop() = 0; // Late binding !!! virtual bool isEmpty() = 0; virtual bool isFull() = 0; virtual int top() = 0; virtual StackIterator *iterator() = 0; // Factory Method para construcao de Stack static Stack *create(TpStack); // factory method }; } #endif