domingo, 19 de abril de 2009

Programación Orientada a Objetos en VFP

Visual FoxPro incluye la capacidad para trabajar con clases como parte de proporcionar las características de programación orientada a objeto. Cuando tu diseñas y creas una clase, estas construyendo un plantilla donde puedes crear objetos desde esa clase. Visual FoxPro incluye herramientas de diseño para crear y administrar clases.

Clases en Visual FoxPro

Las Clases definen propiedades, métodos y eventos los cuales son características y funcionalidades que los objetos poseen y que podemos usar para manipular objetos. Las clases pueden contener otros objetos o miembros de datos así como también variables. Por ejemplo, la clase del CommandButton tiene una propiedad Nombre, la cual define el nombre del botón de comando al contrario de la propiedad Caption, que define el texto que el botón de comando desplegará al usuario.
Los métodos de una clase definen y almacena códigos de procedimientos que se ejecutan cuando se llaman los métodos para un objeto de una clase. Por ejemplo, la clase CommandButton tiene un método Move, que mueve el botón de comando a una coordenada específica.
Los eventos de una clase definen código que se ejecuta cuando el sistema o los usuarios llevan a cabo acciones que disparan los eventos para un objeto de esa clase. Por ejemplo, la clase del CommandButton contiene un evento Clic, el cual es un procedimiento que podemos usar para definir el código que se ejecuta cuando el usuario hace clic en el botón de comando.
Las Clases pueden también contener a otros objetos, por ejemplo, la Clase de un Formulario puede contener un control de objeto, así como también un botón de comando. También se pueden especificar miembros de datos, al igual que variables como parte de una clase.

Los objetos tienen propiedades

Un objeto tiene ciertas propiedades o atributos. Los objetos que se crean en Visual FoxPro también tienen propiedades que están determinadas por la clase en la que se basa el objeto. Estas propiedades pueden establecerse en tiempo de diseño o en tiempo de ejecución.
Cada objeto reconoce y puede responder a determinadas acciones denominadas eventos. Un evento es una actividad específica y predeterminada, iniciada por el usuario o por el sistema. Los eventos, en la mayor parte de los casos, se generan por interacción del usuario. Por ejemplo, con un teléfono, se desencadena un evento cuando un usuario descuelga el receptor. Los eventos también se desencadenan cuando el usuario presiona los botones para efectuar una llamada.
En Visual FoxPro, las acciones del usuario que desencadenan eventos incluyen clics, movimientos del mouse y pulsaciones de teclas. Inicializar un objeto y encontrar una línea de código que produce un error son eventos iniciados por el sistema.
Los métodos son procedimientos asociados a un objeto. Los métodos se diferencian de los procedimientos normales de Visual FoxPro en que están vinculados inseparablemente a un objeto y tienen nombres distintos que los procedimientos normales de Visual FoxPro.
Los eventos pueden tener métodos asociados. Por ejemplo, si escribe código de método para el evento Click, ese código se ejecutará cuando se produzca el evento Click. Los métodos también pueden existir independientemente de los eventos. Se debe llamar a estos métodos de forma explícita en el código.
El conjunto de eventos es limitado, aunque amplio. No es posible crear nuevos eventos. Sin embargo, el conjunto de métodos puede ampliarse indefinidamente.

Beneficios de Usar una Clase

Las Clases proveen características que permiten crear código reutilizable y la posibilidad de mantenimiento y soporte del código:

Encapsulamiento: el cual incluye la propiedad de empaquetamiento y códigos de métodos dentro de los objetos, que permite ocultar la complejidad del código y ayuda a contribuir en la abstracción. Por ejemplo, cuando una persona usa una computadora, la persona usualmente no quiere saber como opera internamente, ni tampoco como procesa los datos o mantiene los archivos. La persona quiere es conseguir tareas que faciliten su trabajo cotidiano como el uso de una hoja de calculo, un documento, una base de datos o navegar en Internet, sin saber que procedimientos y códigos intervienen para ello. Igualmente, una clase ListBox, encapsula propiedades, métodos y eventos, que controlan la forma en como los ítems se despliegan dentro del cuadro de lista, determinando las acciones a emprender cuando seleccionan un ítem dentro del cuadro.

Creación de Subclases: Podemos crear una nueva clase o subclases a partir de cada una de clases de Visual FoxPro o de otras ya existentes fuera del entorno. Una Subclase puede incluir algunas o todas las funcionalidades de la clase original o padre, más cualquier otra característica adicional, como propiedades personalizadas o funcionalidades que tu quieras incluir a la nueva clase. Cuando tu modificas una clase padre, los cambios que tu crees se propagaran a todas las subclases que hereden desde la clase padre. Por ejemplo, Supóngase que tenemos una clase de botón de comando. Tu puedes crear una subclase a partir de la clase botón de comando, que contiene todas las propiedades estándar, métodos y eventos para un botón de comando, más las propiedades adicionales o funcionalidades que tu quieras incluir, así como también desplegar el botón con cierto color, tamaño y otras acciones personalizadas por el usuario.

Herencia: Con la herencia, si realiza un cambio en una clase, ese cambio se reflejará en todas las subclases que se basen en ella. Esta actualización automática ahorra tiempo y trabajo. Por ejemplo, si un fabricante de teléfonos quisiera cambiar los teléfonos de tipo marcación por aparatos de pulsación, se ahorraría mucho trabajo si pudiera hacer el cambio en el diagrama original y hacer que todos los teléfonos fabricados anteriormente con ese diagrama heredaran automáticamente la nueva característica, en lugar de tener que agregarla a todos los teléfonos existentes individualmente.

Clases de Contenedor y Clases de Control

Los dos tipos principales de clases de Visual FoxPro y por extensión, de objetos de Visual FoxPro, son las clases de contenedor y las clases de control.
Los contenedores pueden incluir otros objetos y permiten el acceso a los objetos que contienen. Por ejemplo, si crea una clase de contenedor que consta de dos cuadros de lista y dos botones de comando y, a continuación, agrega a un formulario un objeto basado en esta clase, cada objeto individual podrá manipularse en tiempo de ejecución y en tiempo de diseño. Puede cambiar fácilmente las posiciones de los cuadros de lista o los títulos de los botones de comando. También puede agregar objetos al control en tiempo de diseño; por ejemplo, puede agregar etiquetas para identificar los cuadros de lista.
Las clases de control están más encapsuladas que las clases de contenedor, pero por esa misma razón es posible que sean menos flexibles. Las clases de control no tienen un método Add Object.
La siguiente lista da ejemplos de objetos que pueden existir en clases de contenedor.


Column
Encabezados y cualquier objeto exepto formularios barras de herramientas, timers y otras columnas.

CommandGroup
Botones de Comando

Container
Cualquier control

Control
Cualquier control

Custom
Cualquier Control, entrono de datos, marco de página, contenedor, custom.

DataEnvironment
Cursores, relaciones y adaptadores de cursores.

FormSet
Formularios, barras de herramientas

Form
Marcos de Paginas, entono de datos, cualquier control, contenedor, custom.

Gris
Columnas

OptionGroup
Botones de Opcion

PageFrame
Paginas

Page
Cualquier Control

Project
Archivos, Servidores

Toolbar
Cualquier Control, Marco de Pagina, Contenedor

jueves, 2 de abril de 2009

Lenguaje Visual FoxPro 9.0

Visual FoxPro

Es un lenguaje de programación orientado a objetos y procedural, un Sistema Gestor de Bases de datos o Database Management System (DBMS), y desde la versión 7.0, un Sistema administrador de bases de datos relacionales, producido por Microsoft.


Características
Visual FoxPro ofrece a los desarrolladores un conjunto de herramientas para crear aplicaciones de bases de datos para el escritorio, entornos cliente/servidor, tablet PC o para la Web.
Entre sus características se pueden enumerar:




  • Capacidades poderosas y muy Veloces para el manejo de datos nativos y remotos.

  • Flexibilidad para crear todo tipo de soluciones de bases de datos. · Lenguaje de Programación Orientado a objetos.

  • Utilización de Sentencias SQL en forma nativa.

  • Poderoso manejo de vistas y cursores y control completo de estructuras relacionales.

  • Su propio gestor de base de datos incorporado. Sin embargo, también puede conectarse con servidores de base de datos, tales como Oracle, Microsoft SQL Server o MySQL.

  • Cuenta con un motor de generación de informes renovado y muy flexible para soluciones más robustas.

  • Desde la versión 9.0, amplio soporte de XML, tanto como fuente de datos (por ej., servicios Web basados en XML) como por generar reports en formato XLM.

  • Desde la versión 7.0, soporte de la tecnología IntelliSense de Microsoft La última versión liberada es la 9.0.

Se planeo inicialmente la salida de una nueva versión llamada 'Sedna', la cual pretendía ser un poderoso y completo lenguaje interactuando aun más con VisualStudio.net, SQLServer2005, SQLExpress2005 y Office12 teniendo a su vez soporte para Windows Vista. Posteriormente se supo que no habrá una próxima versión (Mensaje a la comunidad VFP). Microsoft ha cancelado su desarrollo y lanzó lo que han hecho hasta ahora como add-ons en conjunto con el service pack 2 ambos por el momento en versión Beta (SP2 y "Sedna" - Beta). Igualmente, según las políticas de soporte de Microsoft, éste continuara dando soporte al producto hasta el año 2015.


La versión 9.0 de Visual FoxPro cuenta con el SP1 y el (más reciente) SP2 (en inglés) en los que hay algunas nuevas características y especialmente brindan estabilidad al producto.

Historia
Visual FoxPro proviene de FoxPro, que a su vez deriva de FoxBASE, creado por Fox Technologies en 1984; inicialmente un compilador de dBase, acabó superándolo y con Clipper, convirtiéndose en una de las estrellas de los lenguajes xBase. Fox Technologies fue adquirido por Microsoft en 1992.


Visual FoxPro 3.0, fue la primera versión “Visual”, redujo su compatibilidad a solo Mac y Windows (La última versión de FoxPro (2.6) corría en Ms-Dos, Windows, Mac OS y Unix), versiones posteriores fueron solo para Windows. La versión actual se basa en archivos COM y Microsoft ha declarado que no piensan crear una versión .Net.


En la versión 5.0 se integra en Microsoft Visual Studio añadiendosele el soporte de Microsoft Source Safe. Hasta entonces es visto tipicamente por el público como meramente un Sistema de gestión de base de datos (SGBD), ignorando el hecho de que no solo incluye el entorno SGBD, sino un completo lenguaje de programación.


Visual FoxPro 6.0, publicado en 1999, no supone un cambio radical respecto de la anterior versión sino únicamente una mejora en sus diversas funcionalidades y una adaptación al mundo internet y al mundo de los objetos. Esta versión hace más atractivo a los desarrolladores el tratamiento de los datos en los entornos COM. Es un paso más en la evolución de este producto desde un entorno de aplicaciones monousuario o de redes pequeñas centradas en los datos hacia una herramienta orientada a objeto diseñada para la construcción de la lógica del negocio en los entornos multi-tier con una fuerte orientación hacia los tratamientos intensivos de datos en Internet. Pese a su relativa antigüedad, es hoy todavía ámpliamente utilizado en grandes empresas por su estabilidad.


Visual FoxPro 7.0, publicado en 2001, supuso su salida de Visual Studio, pues aunque en un principio se pensaba incluir a Fox en .NET, no era posible sin romper con la herencia de anteriores versiones. Esta versión incorporó por primera vez el IntelliSense, y se mejoró el manejo de arrays, acercándolo al de cursores.

A finales del 2002, algunos miembros de comunidades demostraron que Visual FoxPro puede correr en Linux usando el emulador de Windows Wine. En el 2003, esto llevo a quejas de Microsoft: se dijo que el desarrollo de código de FoxPro para rutinas en máquinas no-Windows viola el Acuerdo de Licencia de Usuario Final.

Los rumores de que Microsoft planea terminar el soporte para FoxPro han sido comunes desde su adquisición del producto, a pesar del hecho de que éste ha tenido el tiempo de vida de soporte más largo para un producto de Microsoft (hasta el 2014). VFP 9 fue lanzado el 17 de diciembre del 2004 y el equipo de Fox luego trabajó en un proyecto cuyo nombre clave fue Sedna. Este fue construido sobre el código base de VFP 9 y consistió principalmente en componentes Xbase que soportando un número de escenarios interoperables con varias tecnologías de Microsoft incluyendo SQL Server 2005, .NET, WinFX, Windows Vista y Office 12. Lamentablemente el proyecto no prosperó y fue cancelado por Microsoft.


No obstante, siempre parece el patito feo de los productos Microsoft. Solicitar información sobre él en cualquier stand oficial de una feria informática supone que se deba preguntar al menos a 3 personas, y muchas veces el usuario de Fox dispone de mayor información que los empleados (azafatas) presentes en él. Son varios los testimonios de visitas a empresas por parte de delegaciones de la central de Microsoft que no han sabido reconocer el producto como propio o lo han confundido con Visual Basic.

En la actualidad, a pesar que Microsoft ha decicido no continuar con Microsoft Visual FoxPro, la gran comunidad que poseen los desarrolladores de Fox son muchisimos en todo el mundo, sin duda es una de las comunidades mas importantes en el mundo de la programación e incluso lograron traducir al español la version 8.0. Comunidades como PortalFox y Mundo Visual FoxPro son las mas importantes entre los desarrolladores de habla hispana.


La gran mayoria de programadores Visual FoxPro se resisten a dejar de programar en este lenguaje porque consideran que es una herramienta muy poderosa, versatil y robusta que les permite crear aplicaciones tan poderosas y hasta mas estables que los creador por otros lenguajes. Incluso programadores que han tenido la oportunidad de desarrollar tanto en Visual Basic.NET y Visual FoxPro 9.0 coinciden que FoxPro es largamente superior en cuanto a practicidad y flexibilidad al momento de programar.