]> git.llucax.com Git - z.facultad/75.42/euler-oo.git/commitdiff
Se termina el TP (la documentación e informe).
authorLeandro Lucarella <llucax@gmail.com>
Sun, 21 Sep 2003 03:20:19 +0000 (03:20 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 21 Sep 2003 03:20:19 +0000 (03:20 +0000)
Makefile
dibujo.h
documentacion.h [new file with mode: 0644]
tp3.cpp

index dec807f4905197cb68c1d89690aa38678f42d5e4..dd63b983b7a258eb89686a4f20a8541b0ef0b61c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -49,6 +49,9 @@ cuadrado.o: rectangulo.o cuadrado.cpp cuadrado.h
 dibujo.o: dllist.o figura.o dibujo.cpp dibujo.h
 
 
+# Preety-printing del código fuente.
+corrida.txt: tp3
+       @./tp3 > corrida.txt
 
 # Regla para borrar.
 clean:
@@ -56,11 +59,15 @@ clean:
        @rm -fR $(TARGETS) *.o core tp2 corrida_*.txt html latex* *.ps *.pdf
 
 # Preety-printing del código fuente.
-code.ps: 
-       enscript -j -E -U2 -C --fancy-header=squeeze --color -pcode.ps
+FUENTES=dllist.h dllist.cpp punto.h figura.h figura.cpp rectangulo.h \
+       rectangulo.cpp cuadrado.h cuadrado.cpp linea.h linea.cpp circulo.h \
+       circulo.cpp dibujo.h dibujo.cpp tp3.cpp
+code.ps:  $(FUENTES)
+       @enscript -j -Ecpp -U2 -C --fancy-header=squeeze --color -pcode.ps \
+       $(FUENTES)
 
 # Informe.
-informe: code.ps
+informe: code.ps corrida.txt
        @doxygen
        @cd latex && make refman.pdf && cd ..
        @doxygen Doxyfile.imprimible
index 2e71af0f9cc537e8de209b0fbae515d082933a14..cf466f2bf34b16ae535dc03ba97c328eaa853742 100644 (file)
--- a/dibujo.h
+++ b/dibujo.h
@@ -21,9 +21,7 @@
 #include "figura.h"
 #include <ostream>
 
-/**
- * Representa un conjunto de figuras.
- */
+/// Representa un conjunto de figuras.
 class Dibujo {
 
     protected:
diff --git a/documentacion.h b/documentacion.h
new file mode 100644 (file)
index 0000000..4bb0baa
--- /dev/null
@@ -0,0 +1,142 @@
+/* vim: set et ts=4 sw=4 fdm=indent tw=80 fdl=1 fdn=1 fo+=t:
+ *
+ * Taller de Programación (75.42).
+ *
+ * Trabajo Práctico Número 1:
+ * Graficador de la solución de una ecuación diferencial por el método
+ * de Euler (explícito).
+ *
+ * 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 21:01:52 ART 2003
+ *
+ * $Id$
+ */
+
+/** \mainpage Trabajo Práctico III
+
+\htmlonly
+También puede ver <a href="../latex/refman.pdf">este documento en formato
+PDF</a>.
+\endhtmlonly
+
+\latexonly
+También puede ver este documento en formato HTML en html/index.html.
+\endlatexonly
+
+\section objetivo Objetivo.
+    Los temas a practicar son:
+    - Introducción a la Programación Orientada a Objetos.
+    - Clases.
+    - Encapsulamiento de código.
+    - Parámetros por defecto.
+    - Herencia.
+    - Métodos virtuales.
+    - \e Overloading y \e overriding.
+
+\section desarrollo Desarrollo.
+    Se desea desarrollar una aplicacion donde el usuario pueda crear un dibujo
+    a partir de \ref Figura "figuras básicas" (\ref Rectangulo "rectángulos",
+    \ref Cuadrado "cuadrados", \ref Linea "líneas", \ref Circulo "círculos",
+    etc).
+
+    Desarrolle a tal fin una clase Dibujo (y un
+    \ref ::main "programa de prueba"), que implemente una
+    \ref DLList "lista encadenada" de \ref Figura "figuras".
+
+    Toda Figura tiene definidos los siguientes atributos, que serán utilizados
+    al \ref Figura::dibujar "dibujar" la Figura en pantalla.
+    - \ref Figura::color "color" (entero 0 a 15).
+    - \ref Figura::grosor "grosor" (entero 1 a 10).
+    - \ref Figura::centro "posición central" (\ref Punto::x "x",
+      \ref Punto::y "y").
+    - \ref Figura::nombre "nombre".
+
+    Se definen las siguientes \ref Figura "figuras", con los respectivos
+    atributos:
+    - \ref Rectangulo "rectángulo" (\ref Rectangulo::ancho "ancho",
+      \ref Rectangulo::alto "alto").
+    - \ref Cuadrado "cuadrado" (\ref Cuadrado::ancho "ancho").
+    - \ref Linea "línea" (\ref Linea::ini "x0", \ref Linea::ini "y0",
+      \ref Linea::fin "x1", \ref Linea::fin "y1").
+    - \ref Circulo "círculo" (\ref Circulo::radio "radio").
+
+    Cada una de estas \ref Figura "figuras" debe implementarse en clases
+    separadas, derivadas de una clase base Figura, y deben tener un método
+    virtual \ref Figura::dibujar "dibujar", que imprima en pantalla un
+    string con un texto similar al siguiente:
+    \verbatim Dibujando Figura con los siguientes atributos: ... \endverbatim
+    donde \c Figura es el tipo de Figura y \c ... son cada uno de los atributos
+    de la Figura.
+
+    La clase Dibujo debe implementar los métodos
+    \ref Dibujo::agregar_figura "AgregarFigura",
+    \ref Dibujo::dibujar "Dibujar",
+    \ref Dibujo::borrar_todo "BorrarTodo", que permitan agregar una figura al
+    dibujo, dibujarlas y borrar todo el dibujo respectivamente.
+
+    \note
+        - El programa de prueba debe liberar TODA la memoria alocada antes de
+          terminar.
+        - El programa debe ser correctamente modularizado.
+        - No utilice funciones globales (con excepción de main()).
+        - No utilice memoria dinámica como atributos de la clase Figura ni sus
+          derivadas.
+
+
+\section resolucion Resolución.
+    \subsection dibujo Dibujo.
+        La clase Dibujo fue implementada usando una versión modificada (ahora
+        implementada como una clase) de la
+        \ref DLList "lista doblemente enlazada" realizada para el TP2. Esta
+        lista almacena todas las \ref Dibujo::figuras "figuras" por lo que la
+        clase Dibujo sólo debe preocuparse por
+        \ref Dibujo::agregar_figura "agregar figuras" a la lista,
+        \ref Dibujo::dibujar "recorrer la lista dibujando las figuras" y 
+        \ref Dibujo::borrar_todo "eliminar las figuras de la lista".
+
+    \subsection figuras Figuras.
+        No hay mucho que decir sobre las figuras. Se creó una clase (una
+        estructura para ser exacto, pero tiene constructor y métodos) Punto
+        para guardar el \ref Figura::centro "centro de la figura" (y los
+        extremos de la \ref Linea "línea").
+        Al Cuadrado se lo hizo heredar del Rectangulo ya que un Cuadrado \b es
+        \b un Rectangulo. Todo lo que hace es limitar, en su
+        \ref Cuadrado::Cuadrado "constructor", que el
+        \ref Cuadrado::ancho "ancho" sea igual al \ref Cuadrado::alto "alto".
+
+    \subsection corrida Corrida.
+        A continuación se presenta la salida de la corrida del programa.
+        \verbinclude corrida.txt
+
+\section requerimientos Requerimientos y modo de uso.
+    \subsection plataforma Plataforma y compilador.
+        Este trabajo práctico fue realizado y probado bajo la plataforma Debian
+        GNU/Linux sid. El compilador utilizado fue GNU GCC versión 3.3.1.
+        El ejecutable entregado corre bajo esta esta plataforma y u uso se
+        describe en la \ref uso "sección siguiente".
+
+        De todas formas, al estar programado sólo utilizando funciones ANSI
+        C/C++, debería poder compilarse bajo cualquier plataforma y compilador
+        que soporte este estándar.
+
+    \subsection uso Modo de uso.
+        El \ref ::main "programa" debe ser llamado desde un intérprete de
+        comandos. Para compilarlo basta con tener el programa \c make y
+        ejecutarlo. Eso genera (entre otras cosas) el archivo \c tp3 que puede
+        ser ejecutado de la siguiente manera:
+        \verbatim $ ./tp3 \endverbatim
+
+\section conclusiones Conclusiones.
+    No tuve mayores problemas a la hora de resolver el TP. Sólo un par de veces
+    intenté poner modificadores \c const en la declaración de métodos (ya sea
+    declarando parámetros como \c const o declarando el método como \c const)
+    pero luego tuve errores de compilación porque resultaba que en realidad sí
+    se modificaban cosas. En particular me pasó en Dibujo, al intentar hacer
+    que el método Dibujo::dibujar() sea \c const pero no puede ser así ya que la
+    \ref Dibujo::figuras "lista interna" se modifica al ser recorrida y, por lo
+    tanto, el objeto Dibujo también se modifica.
+
+*/
diff --git a/tp3.cpp b/tp3.cpp
index 11e602e6934f045eb3cbe19e002f9d2d923a072f..f4bff0dd796a4beeaa6f17c3a6f1af027bbcf3a6 100644 (file)
--- a/tp3.cpp
+++ b/tp3.cpp
 #include <iostream>
 
 /**
- * Programa para probar la DLList.
+ * Programa principal del \ref main "Trabajo Práctico".
  *
- * \return EXIT_SUCCESS o código de error devuelto por abort() si hubo un
- *         error.
+ * \return EXIT_SUCCESS si terminó correctamente.
  */
 int main(void) {
     Dibujo dibujo;