]> git.llucax.com Git - z.facultad/75.42/euler-oo.git/commitdiff
Se termina el trabajo práctico. Sólo falta el informe.
authorLeandro Lucarella <llucax@gmail.com>
Sun, 21 Sep 2003 00:24:51 +0000 (00:24 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 21 Sep 2003 00:24:51 +0000 (00:24 +0000)
Makefile
circulo.cpp
dibujo.cpp
figura.cpp
linea.cpp
punto.h
rectangulo.cpp
tp3.cpp [new file with mode: 0644]

index f742ab1fbcfe86c1a37d6db1b13df70f9f8a6ece..dec807f4905197cb68c1d89690aa38678f42d5e4 100644 (file)
--- a/Makefile
+++ b/Makefile
 #
 
 # Opciones para el compilador.
-#CXXFLAGS=-ansi -pedantic -Wall -O3
-CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG
+CXXFLAGS=-ansi -pedantic -Wall -O3
+#CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG
 
 # Pruebas.
-TESTS=
+TESTS=dllist_test
 
 # Programa a compilar.
 TARGETS=$(TESTS) tp3
@@ -28,12 +28,27 @@ all: $(TARGETS)
 
 # Pruebas.
 tests: $(TESTS)
+       ./dllist_test
 
 dllist_test: dllist.o
 
-memdebug_test: dllist.o meminfo.o memdebug.o
+tp3: dllist.o figura.o rectangulo.o cuadrado.o linea.o circulo.o dibujo.o
+
+dllist.o: dllist.cpp dllist.h
+
+figura.o: figura.cpp figura.h punto.h
+
+linea.o: figura.o linea.cpp linea.h
+
+circulo.o: figura.o circulo.cpp circulo.h
+
+rectangulo.o: figura.o rectangulo.cpp rectangulo.h
+
+cuadrado.o: rectangulo.o cuadrado.cpp cuadrado.h
+
+dibujo.o: dllist.o figura.o dibujo.cpp dibujo.h
+
 
-parser_equation_test: dllist.o strutil.o meminfo.o memdebug.o parseerror.o
 
 # Regla para borrar.
 clean:
index 6a1a7c0a90a5103d613b427b2bbf8b5df4f0221a..3fe240556bcae7d6b8d66c7bd6cb3bc0fc62a552 100644 (file)
@@ -35,7 +35,8 @@ Circulo::~Circulo(void) {
 }
 
 void Circulo::dibujar(std::ostream& out) const {
+    out << "Circulo(";
     Figura::dibujar(out);
-    out << ", radio: " << radio;
+    out << ", radio(" << radio << "))";
 }
 
index e591cd794511f5f5c2d4117d2fecfb0877bfa009..8232f5f819d1f0d332c077782d8bc826a70493ea 100644 (file)
@@ -47,6 +47,7 @@ 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())) {
+        out << "Dibujando: ";
         f->dibujar(out);
         out << std::endl;
     }
index f228a1648e7230023a154777ec5c8e67bea24ed1..1d81d9ac21dda9aa21e1973c7faf087716b9dcb5 100644 (file)
 #endif
 
 Figura::Figura(size_t color, size_t grosor, const Punto& centro,
-        const char* nombre): color(color), grosor(grosor), centro(centro) {
+        const char* nombre): centro(centro) {
+    if (color > 15) {
+        this->color = 15;
+    } else if (color < 0) {
+        this->color = 0;
+    } else {
+        this->color = color;
+    }
+    if (grosor > 10) {
+        this->grosor = 10;
+    } else if (grosor < 1) {
+        this->grosor = 1;
+    } else {
+        this->grosor = grosor;
+    }
 #ifdef DEBUG
     std::cerr << "En constructor de Figura." << std::endl;
 #endif
@@ -36,8 +50,9 @@ Figura::~Figura(void) {
 }
 
 void Figura::dibujar(std::ostream& out) const {
-    out << "color: " << color << ", grosor: " << grosor
-        << ", nombre: " << nombre << ", centro: ";
+    out << "color(" << color << "), grosor(" << grosor
+        << "), nombre(" << nombre << "), centro(";
     centro.dibujar(out);
+    out << ")";
 }
 
index 5eeae032fbb5c63d43e77cd7ccd1daad991d9702..af5f32951c420c1ec873f24b5d78f8fbbbd1d10d 100644 (file)
--- a/linea.cpp
+++ b/linea.cpp
@@ -35,10 +35,12 @@ Linea::~Linea(void) {
 }
 
 void Linea::dibujar(std::ostream& out) const {
+    out << "Linea(";
     Figura::dibujar(out);
-    out << ", ini";
+    out << ", ini(";
     ini.dibujar(out);
-    out << ", fin: ";
+    out << "), fin(";
     fin.dibujar(out);
+    out << "))";
 }
 
diff --git a/punto.h b/punto.h
index c9d9ee0edec9bfa0f6b66e3be44fcdfd056c915f..55c4476b8e562d95d790d772bea80e489c2c3342 100644 (file)
--- a/punto.h
+++ b/punto.h
@@ -39,6 +39,13 @@ struct Punto {
 #endif
     }
 
+    /// Constructor de copia.
+    Punto(const Punto& p): x(p.x), y(p.y) {
+#ifdef DEBUG
+        std::cerr << "En constructor de copia de Punto." << std::endl;
+#endif
+    }
+
     /// Destructor.
     virtual ~Punto(void) {
 #ifdef DEBUG
@@ -48,7 +55,7 @@ struct Punto {
 
     /// Dibuja un punto.
     virtual void dibujar(std::ostream& out) const {
-        out << "(" << x << "," << y << ")";
+        out << "Punto(" << x << ", " << y << ")";
     }
 
 };
index 44cf975e5ecc7b5824bb0f394aa4b7ebc8d28fac..450e670baec91a29b0b106051557aa984535a9ba 100644 (file)
@@ -35,7 +35,8 @@ Rectangulo::~Rectangulo(void) {
 }
 
 void Rectangulo::dibujar(std::ostream& out) const {
+    out << "Rectangulo(";
     Figura::dibujar(out);
-    out << ", ancho: " << ancho << ", alto: " << alto;
+    out << ", ancho(" << ancho << "), alto(" << alto << "))";
 }
 
diff --git a/tp3.cpp b/tp3.cpp
new file mode 100644 (file)
index 0000000..11e602e
--- /dev/null
+++ b/tp3.cpp
@@ -0,0 +1,55 @@
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
+ *
+ * Taller de Programación (75.42).
+ *
+ * Ejercicio Número 3:
+ * Lista de figuras.
+ *
+ * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
+ * Puede copiar, modificar y distribuir este programa bajo los términos de
+ * la licencia GPL (http://www.gnu.org/).
+ *
+ * Creado: sáb sep 20 19:52:13 ART 2003
+ *
+ * $Id$
+ */
+
+#include "dibujo.h"
+#include "rectangulo.h"
+#include "cuadrado.h"
+#include "linea.h"
+#include "circulo.h"
+#include <iostream>
+
+/**
+ * Programa para probar la DLList.
+ *
+ * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
+ *         error.
+ */
+int main(void) {
+    Dibujo dibujo;
+
+    // Creo y agrego un rectángulo.
+    dibujo.agregar_figura(new Rectangulo(1, 10, Punto(1.1, -0.4),
+                "rectángulo 1", 20.5, 10.2));
+
+    // Creo y agrego un cuadrado.
+    dibujo.agregar_figura(new Cuadrado(0, 210, Punto(1.1, -0.4), "cuadrado 1",
+                0.25));
+
+    // Creo y agrego una línea.
+    dibujo.agregar_figura(new Linea(120, 0, Punto(1.1, -0.4), "línea 1",
+                Punto(11.5, -10.4), Punto(0, 0)));
+
+    // Creo y agrego un círculo.
+    dibujo.agregar_figura(new Circulo(4, 8, Punto(1.1, -0.4), "círculo 1",
+                12.25));
+
+    // Dibujo y libero todo.
+    dibujo.dibujar(std::cout);
+    dibujo.borrar_todo();
+
+    return EXIT_SUCCESS;
+}
+