-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
* $Id$
*/
-#include "dllist.h"
-#include "figura.h"
#include "dibujo.h"
-Dibujo::Dibujo(void): figuras() {}
+#ifdef DEBUG
+# include <iostream>
+#endif
+
+Dibujo::Dibujo(void): figuras() {
+#ifdef DEBUG
+ std::cerr << "En constructor de Dibujo." << std::endl;
+#endif
+}
Dibujo::~Dibujo(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Dibujo." << std::endl;
+#endif
}
bool Dibujo::agregar_figura(Figura* figura) {
}
}
-void Dibujo::dibujar(void) {
+void Dibujo::dibujar(std::ostream& out) {
// Dibujo cada elemento.
for (Figura* f = static_cast<Figura*>(figuras.begin());
figuras.have_more(); f = static_cast<Figura*>(figuras.next())) {
- // TODO cout << f << endl; // FIXME
+ f->dibujar(out);
+ out << std::endl;
}
}
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#include "dllist.h"
#include "figura.h"
+#include <ostream>
/**
* Representa un conjunto de figuras.
class Dibujo {
protected:
+
/// Lista de figuras.
DLList figuras;
public:
+
/**
* Constructor.
*/
/**
* Dibuja.
+ *
+ * \param out Stream de salida donde dibujar.
*/
- virtual void dibujar(void);
+ virtual void dibujar(std::ostream& out);
};
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#include "dllist.h"
#include <cstdlib>
-DLList::DLList(void): _first(NULL), _current(NULL), _last(NULL) {}
+#ifdef DEBUG
+# include <iostream>
+#endif
+
+DLList::DLList(void): _first(NULL), _current(NULL), _last(NULL) {
+#ifdef DEBUG
+ std::cerr << "En constructor de DLList." << std::endl;
+#endif
+}
DLList::~DLList(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de DLList." << std::endl;
+#endif
/* Elimino los nodos. */
while (!empty()) {
pop();
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#include <cstdlib>
+#ifdef DEBUG
+# include <iostream>
+#endif
+
/// Nodo de la lista doblemente enlazada.
struct DLListNode {
/// Constructor.
DLListNode(DLListNode* prev = NULL, void* data = NULL,
- DLListNode* next = NULL): prev(prev), data(data), next(next) {}
+ DLListNode* next = NULL): prev(prev), data(data), next(next) {
+#ifdef DEBUG
+ std::cerr << "En constructor de DLListNode." << std::endl;
+#endif
+ }
+
+ /// Destructor.
+ virtual ~DLListNode(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de DLListNode." << std::endl;
+#endif
+ }
};
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
* $Id$
*/
-#include "punto.h"
#include "figura.h"
-#include <ostream>
-#include <cstdlib>
#include <cstring>
+#ifdef DEBUG
+# include <iostream>
+#endif
+
Figura::Figura(size_t color, size_t grosor, const Punto& centro,
const char* nombre): color(color), grosor(grosor), centro(centro) {
+#ifdef DEBUG
+ std::cerr << "En constructor de Figura." << std::endl;
+#endif
strncpy(this->nombre, nombre, 30);
}
-Figura::~Figura(void) {}
+Figura::~Figura(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Figura." << std::endl;
+#endif
+}
void Figura::dibujar(std::ostream& out) const {
out << "color: " << color << ", grosor: " << grosor
<< ", nombre: " << nombre << ", centro: ";
centro.dibujar(out);
- out << std::endl;
}
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
* Figura dibujable.
*/
class Figura {
+
protected:
/// Color.
/**
* Dibuja.
+ *
+ * \param out Stream de salida en donde dibujar.
*/
virtual void dibujar(std::ostream& out) const;
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#include <ostream>
+#ifdef DEBUG
+# include <iostream>
+#endif
+
/// Punto de un plano.
struct Punto {
+
/// Coordenada x.
- int x;
+ float x;
+
/// Coordenada y.
- int y;
+ float y;
+
/// Constructor.
- Punto(int x, int y): x(x), y(y) {}
+ Punto(float x, float y): x(x), y(y) {
+#ifdef DEBUG
+ std::cerr << "En constructor de Punto." << std::endl;
+#endif
+ }
+
/// Destructor.
- virtual ~Punto(void) {}
+ virtual ~Punto(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Punto." << std::endl;
+#endif
+ }
+
/// Dibuja un punto.
virtual void dibujar(std::ostream& out) const {
- out << "(" << x << "," << y << ")" << std::endl;
+ out << "(" << x << "," << y << ")";
}
+
};
#endif // PUNTO_H
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#include "rectangulo.h"
+#ifdef DEBUG
+# include <iostream>
+#endif
+
Rectangulo::Rectangulo(size_t color, size_t grosor, const Punto& centro,
const char* nombre, float ancho, float alto):
- Figura(color, grosor, centro, nombre), ancho(ancho), alto(alto) {}
+ Figura(color, grosor, centro, nombre), ancho(ancho), alto(alto) {
+#ifdef DEBUG
+ std::cerr << "En constructor de Rectángulo." << std::endl;
+#endif
+}
-Rectangulo::~Rectangulo(void) {}
+Rectangulo::~Rectangulo(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Rectángulo." << std::endl;
+#endif
+}
void Rectangulo::dibujar(std::ostream& out) const {
Figura::dibujar(out);
-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
#ifndef RECTANGULO_H
#define RECTANGULO_H
-#include "punto.h"
-#include <cstdlib>
-#include <ostream>
+#include "figura.h"
/**
* Figura dibujable.
*/
class Rectangulo: public Figura {
+
protected:
+
/// Ancho.
float ancho;
+
/// Alto.
float alto;
public:
+
/// Constructor.
Rectangulo(size_t color, size_t grosor, const Punto& centro,
const char* nombre, float ancho, float alto);