Harbour Handbuch – DE
HTML-Ausgabe

Kapitel 7

Hinweis: Dies ist die vollständige deutsche Übersetzung des Kapitels. Codebeispiele sind sprachunabhängig gültig.

Kapitel 7: Klassen und Objekte

Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das „Objekte“ zur Strukturierung von Anwendungen verwendet. Obwohl Harbour aus xBase stammt, bietet es ein leistungsfähiges OOP-System, das mit der Clipper-Syntax kompatibel ist.

In diesem Kapitel lernst du die grundlegenden Konzepte der OOP und wie du sie in Harbour anwendest.

OOP-Konzepte: Klassen, Objekte, Variablen und Methoden

Bevor wir zur Syntax kommen, hier die Grundpfeiler der OOP:

Klasse erstellen in Harbour

Klassen werden mit CREATE CLASS ... ENDCLASS definiert. Beispiel:


CREATE CLASS MeineKlasse
   VAR sName
   VAR nAlter

   METHOD New( cName, nAlter ) CONSTRUCTOR
   METHOD Begrüßen()
   METHOD Geburtstag()
ENDCLASS

METHOD New( cName, nAlter ) CLASS MeineKlasse
   ::sName := cName
   ::nAlter := nAlter
   RETURN Self

METHOD Begrüßen() CLASS MeineKlasse
   ? "Hallo, ich heiße", ::sName
   RETURN Nil

METHOD Geburtstag() CLASS MeineKlasse
   ::nAlter++
   ? "Alles Gute! Ich bin jetzt", ::nAlter, "Jahre alt."
   RETURN Nil

Wichtige Punkte:

Objekte instanziieren

Objekte werden mit Klasse():New(...) erstellt:


PROCEDURE Main()
   LOCAL oPerson1 := MeineKlasse():New( "Max", 35 )
   LOCAL oPerson2 := MeineKlasse():New( "Anna", 28 )

   oPerson1:Begrüßen()
   oPerson2:Begrüßen()
   oPerson1:Geburtstag()
   ? "Alter von Anna:", oPerson2:nAlter

   WAIT
RETURN

Bemerkungen:

Vererbung

Vererbung erlaubt es, dass eine Klasse (Kind) Eigenschaften und Methoden einer anderen Klasse (Elternklasse) übernimmt.

In Harbour wird dies mit FROM oder INHERIT gemacht:


CREATE CLASS Fahrzeug
   VAR nRäder
   VAR cFarbe

   METHOD New( nRäder, cFarbe ) CONSTRUCTOR
   METHOD Beschreiben()
ENDCLASS

METHOD New( nRäder, cFarbe ) CLASS Fahrzeug
   ::nRäder := nRäder
   ::cFarbe := cFarbe
   RETURN Self

METHOD Beschreiben() CLASS Fahrzeug
   ? "Fahrzeug mit", ::nRäder, "Rädern in", ::cFarbe
   RETURN Nil

CREATE CLASS Auto FROM Fahrzeug
   VAR sMarke

   METHOD New( cFarbe, sMarke ) CONSTRUCTOR
   METHOD Beschreiben()
ENDCLASS

METHOD New( cFarbe, sMarke ) CLASS Auto
   Super:New( 4, cFarbe )
   ::sMarke := sMarke
   RETURN Self

METHOD Beschreiben() CLASS Auto
   Super:Beschreiben()
   ? "   -> Marke:", ::sMarke
   RETURN Nil

PROCEDURE Main()
   LOCAL oMeinAuto := Auto():New( "Rot", "Ferrari" )
   oMeinAuto:Beschreiben()
   WAIT
RETURN

Ausgabe:


Fahrzeug mit 4 Rädern in Rot
   -> Marke: Ferrari

Merkpunkte:

Damit hast du eine solide Grundlage für objektorientiertes Programmieren in Harbour. Du kannst dadurch deinen Code modularer, wiederverwendbarer und wartbarer gestalten.