Datenspeicherung mit Objekten

In objektorientierten Programmiersprachen stellt eine Klasse eine nützliche und komfortable Möglichkeit zum Speichern von Daten und Prozeduren dar, die mit einem einzigen Objekt verbunden sind. Sie können z. B. eine Kundenklasse so definieren, dass sie sowohl Informationen über einen Kunden enthält als auch eine Methode zum Berechnen des Alters dieses Kunden:

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

Die in Objekten gespeicherten Daten, die auf der Customer-Klasse basieren, werden jedoch nur im Arbeitsspeicher abgelegt. Befänden sich diese Daten in einer Tabelle, dann würde die Tabelle auf dem Datenträger abgespeichert werden. Wenn Sie mehrere Kunden bearbeiten müssten, dann würden Sie über die Tabelle auf alle Visual FoxPro-Datenbankverwaltungs-Befehle und -funktionen zugreifen können. Dadurch wären Sie in der Lage, die Informationen schnell zu finden, zu sortieren und zu gruppieren, damit Berechnungen durchzuführen, darauf basierende Berichte und Abfragen zu erstellen usw.

Visual FoxPro ist besonders zum Speichern und Bearbeiten von Daten in Datenbanken und Tabellen geeignet. Es gibt möglicherweise jedoch auch Fälle, in denen Sie Daten in Objekten speichern möchten. Gewöhnlich sind diese Daten nur wichtig, solange Ihre Anwendung läuft. Sie gehören im Normalfall zu einem einzigen Objekt.

In einer Anwendung z. B., die ein Sicherheitssystem enthält, hätten Sie normalerweise eine Tabelle mit den Daten der Benutzer, die auf diese Anwendung zugreifen dürfen. Die Tabelle würde die Benutzerkennung, das Kennwort und die Zugriffsberechtigungsstufe enthalten. Hat sich ein Benutzer angemeldet, dann benötigen Sie die meisten Informationen aus der Tabelle nicht mehr. Sie benötigen lediglich Informationen über den aktuellen Benutzer, und diese Informationen können sehr leicht in einem Objekt gespeichert und bearbeitet werden. Die folgende Klassendefinition startet z. B. einen Anmeldevorgang, wenn ein auf der Klasse basierendes Objekt erstellt wird.

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

Im Hauptprogramm Ihrer Anwendung können Sie ein Objekt erstellen, das auf der NewUser-Klasse basiert:

oUser = CREATEOBJECT('NewUser')
oUser.Logon

Innerhalb Ihrer Anwendung können Sie die Informationen aus dem oUser-Objekt abrufen, wenn Sie die Informationen über den aktuellen Benutzer benötigen. Beispiel:

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

Siehe auch

Programmgesteuertes Schreiben von Klassendefinitionen | Arrays von Elementen und Objekten | Integration von Objekten und Daten | Erstellung eines Objektverweises | Objektorientierte Programmierung