#ifndef FORMA_H
#define FORMA_H
#include "quadro.H"
/** Representa o conceito de forma como algo que tem uma posição, que se pode
mover, e que se sabe desenhar num quadro. */
class Forma {
public:
/// Constrói uma forma dada uma posição.
Forma(Posicao const& posicao);
/** Destrutor virtual. Garante que os destrutores das classes derivadas
são invocados mesmo através dum ponteiro para a classe Forma. */
virtual ~Forma() = 0;
/// Devolve a posição da forma.
Posicao posicao() const;
/// Desenha a forma num quadro.
virtual void desenhaEm(Quadro& quadro) const = 0;
/// Desloca a forma para nova posição.
virtual void movePara(Posicao const& nova_posicao);
private:
// A posição da forma (um ponto particular, como um centro ou canto):
Posicao posicao_;
};
#include "forma_impl.H"
#endif // FORMA_H