From 64097dd9bd0bdf3439048f233e3248ce724fd965 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 21 Sep 2003 03:20:19 +0000 Subject: [PATCH] =?utf8?q?Se=20termina=20el=20TP=20(la=20documentaci=C3=B3?= =?utf8?q?n=20e=20informe).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Makefile | 13 ++++- dibujo.h | 4 +- documentacion.h | 142 ++++++++++++++++++++++++++++++++++++++++++++++++ tp3.cpp | 5 +- 4 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 documentacion.h diff --git a/Makefile b/Makefile index dec807f..dd63b98 100644 --- 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 diff --git a/dibujo.h b/dibujo.h index 2e71af0..cf466f2 100644 --- a/dibujo.h +++ b/dibujo.h @@ -21,9 +21,7 @@ #include "figura.h" #include -/** - * 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 index 0000000..4bb0baa --- /dev/null +++ b/documentacion.h @@ -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 + * 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 este documento en formato +PDF. +\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 11e602e..f4bff0d 100644 --- a/tp3.cpp +++ b/tp3.cpp @@ -22,10 +22,9 @@ #include /** - * 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; -- 2.43.0