Clases de Visual FoxPro

Todas las propiedades, eventos y métodos de un objeto se especifican en la definición de clase. Además, las clases tienen las siguientes características que las hacen especialmente útiles para crear código reutilizable y fácil de mantener:

  • Encapsulamiento
  • Subclases
  • Herencia

Ocultar la complejidad innecesaria

Cuando instale un teléfono en la oficina, lo más probable es que no le interese el funcionamiento interno del aparato para la recepción de llamadas, la realización o la finalización de conexiones con centralitas electrónicas o la conversión de las pulsaciones de tecla en señales electrónicas. Lo único que necesitará saber es que puede levantar el auricular, marcar los números apropiados y hablar con la persona con la que desea hablar. La complejidad de realizar esa conexión queda oculta. La ventaja de ignorar los detalles internos de un objeto para poder centrarse en los aspectos del objeto que necesita utilizar se denomina abstracción.

El encapsulamiento, que empaqueta el código de métodos y propiedades en un mismo objeto, contribuye a la abstracción. Por ejemplo, las propiedades que determinan los elementos de un cuadro de lista y el código que se ejecuta al elegir un elemento de la lista pueden encapsularse en un único control que se agrega a un formulario.

Aprovechar la eficacia de las clases existentes

Una subclase puede tener toda la funcionalidad de una clase existente, además de la funcionalidad y los controles adicionales que quiera darle. Si la clase es un teléfono básico, podrá tener subclases que tengan toda la funcionalidad del teléfono original y todas las características especializadas que desee darles.

La creación de subclases es un modo de reducir la cantidad de código que hay que escribir. Puede comenzar definiendo un objeto que sea similar al deseado y personalizarlo.

Simplificar el mantenimiento de código

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 dial por teléfonos de botones, 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.

La herencia no funciona con el hardware, pero sí en el software. Si descubre un error en una clase, en lugar de tener que cambiar el código de todas las subclases podrá corregirlo una única vez en la clase y el cambio se propagará a todas las subclases pertenecientes a ella.

Contenedores y no contenedores

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.

Clases de contenedor

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.

La tabla siguiente muestra los posibles componentes de cada clase de contenedor:

Contenedor Puede contener
Grupos de botones de comando Botones de comando
Contenedor Cualquier control
Control Cualquier control
Custom Cualquier control, marco de página, contenedor, personalizado
Conjuntos de formularios Formularios, barras de herramientas
Formularios Marcos de página, cualquier control, contenedores, personalizado
Columnas de cuadrícula Encabezados y cualquier objeto excepto conjuntos de formularios, formularios, barras de herramientas, cronómetros y otras columnas
Cuadrículas Columnas de cuadrícula
Grupos de botones de opción Botones de opción
Marcos de página Páginas
Páginas Cualquier control, contenedores, personalizado
Proyecto Archivos, servidores
Barras de herramientas Cualquier control, marcos de página, contenedor

Clases de control

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 AddObject.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clase | Especificar la apariencia en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Anular los valores predeterminados de las clases | Referencias a objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos