]> git.llucax.com Git - z.facultad/75.07/algowars.git/blob - doc/HISTORY.TXT
Se expanden keywords del svn.
[z.facultad/75.07/algowars.git] / doc / HISTORY.TXT
1 \r
2 UNIVERSIDAD DE BUENOS AIRES - Facultad de Ingeniería\r
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~   ======================\r
4 \r
5   +-------------------------------+\r
6   | ALGORITMOS Y PROGRAMACIÓN III |  2do cuatrimestre de 2000\r
7   +-------------------------------+\r
8 \r
9 \r
10 Cátedra: Ing. Carlos Fontela\r
11 =======\r
12 \r
13 Grupo: 10\r
14 -----\r
15 \r
16 ALGOWARS - Episodio IV \r
17 ======================\r
18 \r
19 Para mayor información visite: http://www.algowars.llucax.hn.org/\r
20 \r
21 Cambios realizados:\r
22 ------------------\r
23 \r
24 05/10/00: Se terminaron de realizar algunos cambios en las clases cNavePropia,\r
25           cEspacio, cNaveEnemiga y cObjetoVolador. Se les agregó, modificó y\r
26           reemplazó algunos métodos (documentado en cada unidad en particular).\r
27           Se empezó a migrar los comentarios del código fuente para hacerlo\r
28           compatible con DelphiDoc (una herramienta similar al JavaDoc pero\r
29           para Delphi que permite generar automáticamente documentación a\r
30           partir de los comentarios en el código fuente).\r
31           Se reestructuró el proyecto en diferentes directorios para simplificar\r
32           el desarrollo. La nueva estructura es la siguiente:\r
33            ---------------\r
34               algowars\                        Directorio con el proyecto entero\r
35               algowars\HISTORIA.TXT            Este documento\r
36               algowars\bin                     Binarios ejecutables compilados\r
37               algowars\dcu                     Unidades compiladas\r
38               algowars\doc                     Documentación del proyecto en gral.\r
39               algowars\doc\uml                 Diagramas UML\r
40               algowars\doc\ref                 Referencia de las clases del proyecto\r
41                                                 (y sus métodos) en formato HTML\r
42                                                 Generada con DelphiDoc\r
43                                                 (http://www.softconsult.se)\r
44               algowars\src                     Código fuente general\r
45               algowars\src\test                Proyectos temporales que fueron\r
46                                                 utilizados para probar las unidades\r
47               algowars\src\ov                  Unidad que contiene cObjetoVolador y\r
48                                                 sus subclases\r
49               algowars\src\ov\naves            Unidad que contiene cNave y sus\r
50                                                 subclases\r
51            ---------------\r
52  \r
53 01/11/00: Se realizaron cambios profundos en el modelo, como el agregado de un\r
54           sistema de coordenadas a todos los objetos voladores.\r
55           También se cambiaron TODOS los métodos mGetXxxx para que devuelvan una\r
56           copia del atributo porque de otra manera se esta violando, en parte,\r
57           el encapsulamiento, ya que al devolver un puntero al atributo, en\r
58           definitiva estamos permitiendo acceso a la estructura interna del\r
59           objeto. Un claro ejemplo de los problemas que traía esa\r
60           implementación es el problema que trajo el cambio de la estructura\r
61           interna de cObjetoVolador, ya que para mantener la "interfaz" intacta,\r
62           se tuvo que simular la existencia de un atributo que no existía mas,\r
63           devolviendo un puntero a un objeto nuevo que luego nunca se liberaba.\r
64 10/11/00: Se agrega un condicional para el preprocesador del compilador, para que\r
65           si no se compila como una versión de DEBUG, que no utilice el objeto\r
66           cObjeto y por consiguiente, su método abstracto mGetDebugInfo.\r
67 02/12/00: Se terminó de implementar los disparos. Entre los cambios principales\r
68           están los siguientes:\r
69           Se separó la funcionalidad de la cámara en una clase nueva: cFiltro.\r
70           La cámara tiene un atributo cFiltro que se encarga de filtrar los \r
71           objetos que se pueden ver.\r
72           Se reutiliza la clase cFiltro para implementar el sistema de lockeo de\r
73           la cNavePropia. Para hacer esto se hizo una subclase que también filtra\r
74           las armas.\r
75           Se separó la clase auxiliar cLista en su propia unidad.\r
76 04/12/00: Se creo una clase abstracta cObjetoPersistente de la cual derivarán\r
77           todas las demás clases que soportan persistencia. Esta clase provee un\r
78           identificador único de la clase y métodos para serializar y deserializar\r
79           las clases. La serialización se realiza representando el objeto en una\r
80           cadena de texto con un formato parecido al XML (con el que cualquier\r
81           persona que conozca XML o incluso HTML se va a sentir familiarizado).\r
82           Para hacer esto se hace un uso muy importante de expresiones regulares,\r
83           utilizando la clase TRegExpr (externa).\r
84 08/12/00: Se termina de implementar la persistencia. Para lograr esto, además de\r
85           implementarse los métodos mSerializar y mDesSerializar en todas las\r
86           clases que son ahora persistentes, se agregaron algunos métodos auxiliares\r
87           y una nueva unidad con funciones útiles para el manejo de persistencia\r
88           (SerializacionUtils). Los métodos auxiliares se limitaron a ser métodos\r
89           para acceder y establecer atributos.\r
90           También se implementa el almacenamiento de escenarios (configuración\r
91           inicial del juego) de una forma prácticamente idéntica a la del\r
92           almacenamiento de un juego.\r
93           Se cambian las clases cCamara y cFiltro para que sean abstractas. Las\r
94           clases que se utilizan ahora derivan de estas. Se implementan variantes\r
95           de la cámara y filtro frontal, para crear cámaras que "vean" lateralmente,\r
96           arriba, abajo, etc. Siempre como subclases de cCamara y cFiltro.\r
97           Se cambia la clase cVista para que soporte cámaras múltiples. Para esto\r
98           se agrega un array de cámaras.\r
99 09/12/00: Se termina de implementar las vistas, creando dos nuevas clases:\r
100           cCamaraMapa y cFiltroMapa. Además se hacen algunos cambios internos a la\r
101           clase cNavePropia para poder obtener el arma recién disparada sobre la que\r
102           se monta la cámara del Arma.\r
103           Se reorganiza el proyecto en una nueva serie de directorios:\r
104             algowars/src/vista         Tiene las clases que implementan las vistas\r
105             algowars/src/modelo        Tiene las clases que implementan el modelo\r
106             algowars/src/forms         Tiene las clases que implementan los formularios\r
107             algowars/src/auxiliares    Tiene las clases auxiliares\r
108             algowars/src/test          Tiene proyectos utilizados para pruebas del\r
109                                         programa.\r
110             algowars/src/test/cb       Tiene proyectos y clases auxiliares para pruebas\r
111                                         de caja blanca específicamente.\r
112             algowars/src/test/cn       Tiene proyectos y clases auxiliares para pruebas\r
113                                         de caja negra específicamente.\r