home *** CD-ROM | disk | FTP | other *** search
-
- 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.
-
-