#ifndef __APPLICATION__H #define __APPLICATION__H /* Cuando hacemos un programa serio, la función main() tiende a extenderse conforme crecen las necesidades de interactuar con el usuario. Si queremos dividir el trabajo entre un conjunto de funciones que comparten información con la función main(), habremos de encontrar lo siguiente: - La información tiene que pasarse a la función llamada mediante argumentos, lo que hace engorroso el paso de variables a cada función que necesite la información cada vez que se le llame. - Una manera de evitar esto, es utilizar variables globales, con el inconveniente de que no podremos controlar las excepciones que pudieran arrojar esas variables globales, aparte de que perderemos el encapsulamiento de la información del bloque principal. Debido a lo anterior, se propone cambiar el modelo de la aplicación a uno orientado a objetos, es decir, la información que comparte la función principal con las otras funciones se ha de guardar en variables miembros de clase, y las funciones serán también miembros de clase. De esta manera, podremos prescindir de las variables globales (y sus inconvenientes) y del paso de información mediante argumentos, ya que toda la información necesaria estará disponible para cada una de las funciones de la clase. La clase propuesta será una base sobre la que el usuario podrá construir sus aplicaciones, haciendo más sencillo y legible el trabajo realizado en la función main(), que sólo tendrá que instanciar un objeto derivado de la clase application e invocar a la función start(). Bastará con que la clase derivada agregue sus funciones y defina la función start(), que es la que se llamará para iniciar la aplicación y la que naturalmente, llamará a las nuevas funciones creadas. Ariel Medina */ namespace amv { class application { public: virtual void start()=0; }; } #endif