Share via


Almacenamiento de datos con objetos

En los lenguajes orientados a objetos, una clase ofrece un medio útil y cómodo para almacenar datos y procedimientos relacionados con una entidad. Por ejemplo, podría definir una clase de cliente para incluir en ella información sobre un cliente, así como un método para calcular la edad del cliente:

DEFINE CLASS customer AS CUSTOM
   LastName = ""
   FirstName = ""
   Birthday = { - - }
   PROCEDURE Age
      IF !EMPTY(THIS.Birthday)
         RETURN YEAR(DATE()) - YEAR(THIS.Birthday)
      ELSE
         RETURN 0
      ENDIF
   ENDPROC
ENDDEFINE

Sin embargo, los datos almacenados en objetos que se basan en la clase de cliente sólo se almacenan en memoria. Si estos datos estuvieran en una tabla, ésta se almacenaría en disco. Si tuviera que hacer un seguimiento de varios clientes, la tabla le daría acceso a todos los comandos y las funciones de administración de bases de datos de Visual FoxPro. De este modo, podría localizar información rápidamente, ordenarla, agruparla, realizar cálculos, crear informes y consultas basándose en la información, etc.

Visual FoxPro ofrece un resultado incomparable en cuanto al almacenamiento y la manipulación de datos de bases de datos y tablas. Sin embargo, en determinadas ocasiones deseará almacenar datos en objetos. Generalmente, los datos sólo serán significativos mientras se esté ejecutando la aplicación y pertenecerán a una única entidad.

Por ejemplo, en una aplicación que incluye un sistema de seguridad, normalmente tendría una tabla de los usuarios que tienen acceso a la aplicación. La tabla incluiría la identificación, la contraseña y el nivel de acceso del usuario. Cuando un usuario haya iniciado una sesión no necesitará toda la información de la tabla. Lo único que necesitará es la información sobre el usuario actual y esta información se puede almacenar y manipular fácilmente en un objeto. Por ejemplo, la definición de clase siguiente inicia una sesión al crear un objeto basado en la clase:

DEFINE CLASS NewUser AS CUSTOM
   PROTECTED LogonTime, AccessLevel
   UserId = ""
   PassWord = ""
   LogonTime = { - - : : }
   AccessLevel = 0
   PROCEDURE Init
      DO FORM LOGON WITH ; && assuming you have created this form
         This.UserId, ;
         This.PassWord, ;
         This.AccessLevel
      This.LogonTime = DATETIME( )
   ENDPROC
* Create methods to return protected property values.
   PROCEDURE GetLogonTime
      RETURN This.LogonTime
   ENDPROC
   PROCEDURE GetAccessLevel
      RETURN This.AccessLevel
   ENDPROC
 
ENDDEFINE

En el programa principal de la aplicación, podría crear un objeto basado en la clase NewUser:

oUser = CREATEOBJECT('NewUser')
oUser.Logon

En cualquier parte de la aplicación, cuando necesite información sobre el usuario actual, podrá obtenerla del objeto oUser. Por ejemplo:

IF oUser.GetAccessLevel( ) >= 4
   DO ADMIN.MPR
ENDIF

Vea también

Escribir definiciones de clases mediante programación | Matrices de miembros y objetos | Integración de objetos y datos | Crear una referencia de objeto | Programación orientada a objetos