En este paquete se incluyen algunas demos para XCLASS 2.0 Todos los ejemplos que vienen con este paquete son eso, ejemplos. Si a alguien le interesara profundizar realmente en alguno de ellos ser¡a aconsejable que terminase de pulir alguno de ellos antes de empezar a derivar clases. CLASE MANTEN ============ Historia de esta clase: Siempre he buscado tener una "superfunci¢n" que con una sola llamada se encargase del mantenimiento t¡pico de un fichero. La verdad es que cada vez que comenzaba un programa terminaba haci‚ndome una "superfunci¢n" nueva. Esto era porque siempre se me ocurr¡a alguna funcionalidad nueva o dejeba de gustarme algo de la anterior. Esta funci¢n terminaba teniendo much¡simos par metros de cara a hacerla m s flexible. Buscando un compromiso entre sencillez de utilizaci¢n y flexibilidad en su forma de trabajar, v¡ que lo ideal ser¡a una clase donde poder sepa- rar los dos momentos b sicos de esta "funci¢n": 1-Definici¢n y creaci¢n 2-Ejecuci¢n De esta forma podr¡a tener una definici¢n est ndar y, antes de su eje- cuci¢n, poder modificar aquellos comportamientos que me interesasen. Ahora puedo crear una ventana para la edici¢n del fichero actual: obj := Manten( 3, 4, 18, 70 ) y antes de ejecutarla modificar lo que quiera, p.e.: eliminar el segundo campo e insertar otro de otro fichero: obj:DelColumn( 2 ) obj:InsColumn( 2, tbcolumnnew( "PRECIO", {|| OTRO->dbseek( UNO->ARTIC ), ; OTRO->PRECIO } ) ) y para poner todo esto en funcionamiento: obj:Exec() Para ver la demo ejecuta HAZDEMO1.BAT ANIMAL.PRG ========== Todos los que hemos tenido un AMSTRAD 6128 recordamos un programa que ven¡a con ‚l. Era un ejemplo de programa "que va aprendiendo". Se trata de que el programa acierte un animal que hemos pensado siempre que con- testemos a las preguntas que nos hace. Si falla en su respuesta nos pide la informaci¢n para reconocer al nuevo animal y la siguiente vez que se ejecute tendr  en cuenta su anterior fracaso. Con este ejemplo pretendo demostrar dos cosas: -La potencia de las funciones grabadoras-lectoras de objetos -La flexibilidad y alcance de ciertas clases, a veces utilizadas como simples estructurras de datos. Como vereis, el c¢digo es realmente corto. Perd¢n por lo poco cuidado de la presentaci¢n, pero lo que interesa es el algoritmo en s¡. CLASE LISTA =========== Se trata de la t¡pica lista doblemente enlazada muy utilizaca en C. Por falta de tiempo no se incluye una demo de esta clase. CLASE PILA ========== Si ya sabes lo que es una pila, no necesitar s ning£n ejemplo de uso. S¢lo recordar que su potencia queda aumentada con las funciones de grabaci¢n y lectura de objetos. Para los que no la conozcan, es una estructura de datos en que los elementos se van "apilando". Cada vez que se introduce un elemento ‚ste queda en cabeza, y cuando se lee un elemento tiene que ser el que est  en cabeza, desapareciendo este despu‚s de la lectura. El uso m s com£n es guardar valores temporalmente, como: Push( setcolor() ) //Guardamos el estado actual del entorno Push( setcursor() ) Push( recno() ) . . . dbgoto( Pop() ) setcursor( Pop() ) setcolor( Pop() ) CLASE ARBOL =========== La que aqu¡ se incluye no deja de ser un esbozo. Ser¡a interesante contemplar casos donde los elementos son m s complejos, o a¤adirle m‚todos para borrar un elemento... Recordar algunas caracter¡sticas interesantes de la estructura- rbol: -Siempre se puede leer de forma ordenada. -Se puede buscar un elemento con un m¡nimo de lecturas. -Se adapta a las funciones de grabaci¢n-lectura de objetos Suele haber tres formas de "recorrer" el  rbol: -InOrden: efect£a la lectura izquierda-nodo-derecha. Da una lista orde- nada. -PreOrden: lectura nodo-izquierda-derecha. T¡pico en b£squeda de elementos. -PostOrden: lectura izquierda-derecha-nodo. Con ‚l se puede obtener, p.e., la notaci¢n polaca de una expresi¢n aritm‚tica en InOrden.