Home » Object Pascal

Object Pascal

Syntax

Über die Sprache Grundlegendes zur Syntax Über die Sprache Bei der Delphi-Sprache (auch Object Pascal genannt) handelt es sich um eine höhere, objektorientierte Programmiersprache. Die wichtigsten Dinge aus dem zugrunde liegenden Pascal sind natürlich noch enthalten, allerdings hat sich die Sprache, die mit Delphi 1 eingeführt wurde, stark weiterentwickelt. Der Begriff „Delphi Language“ wurde mit […]

Allgemeines über Variablen und Konstanten

Was sind Variablen? Datentypen Deklaration Globale Variablen Lokale Variablen Initialisierung Zuweisungen Typumwandlung Konstanten Was sind Variablen? Variablen sind jedem bekannt, der schon einmal Mathematik-Unterricht hatte. Variablen sind einfach dafür da, irgendwelche Daten (Eingaben, Berechnungsergebnisse usw.) im Arbeitsspeicher abzulegen. Über den Variablennamen kann man direkt auf den Wert zugreifen. Heißen die Variablen in Mathe meist x […]

Datentypen

Teilbereichstypen Aufzählungstypen Strings Arbeiten mit Strings Mengentypen Arrays Dynamische Arrays Mehrdimensionale Arrays Records Variante Records Records mit Methoden Eigene Typen definieren Zeiger Jeder Variablen liegt in Object Pascal ein Typ zugrunde. Es gibt verschiedene Arten von Datentypen. Die meisten einfachen Datentypen wurden bereits im Kapitel über Variablen beschrieben worden. Doch es gibt weitere Teilbereichstypen Einen […]

Schleifen

Was sind Schleifen? for-Schleife while-Schleife repeat-until-Schleife for-in-Schleife Bedingungen Schleifen abbrechen Was sind Schleifen? In einem Programmablauf kommt es mitunter vor, dass eine bestimmte Befehlsfolge mehrmals hintereinander ausgeführt werden soll. So etwas nennt man „Schleife“. Von ihnen gibt es unterschiedliche Arten: Sie unterscheiden sich darin, ob die Abbruchbedingung vor dem ersten Durchlauf geprüft werden soll oder […]

Verzweigungen

if-else case-Verzweigung if-else Es gibt kaum ein Programm, bei dem immer alle Befehle hintereinander ausgeführt werden. Verzweigungen sind ein häufig eingesetztes Mittel. Es handelt sich hierbei um Fallunterscheidungen, die in der Regel mit if durchgeführt werden: if then ; oder if then else ; Eine Anweisung kann dabei wiederum aus einer neuen if-Bedingung bestehen. Beispiel: […]

Boolesche Operatoren

Notation von logischen Bedingungen Kurzschlussverfahren Operatoren überladen Notation von logischen Bedingungen Eine logische Bedingung wie x>0 versteht jeder, der schon einmal Mathematikunterricht hatte. Allerdings kann eine Bedingung auch aus mehreren einzelnen Bedingungen bestehen: z. B. x größer als 0 und kleiner als 10. In Pascal kann man das leider nicht schreiben wie in Mathe (00 […]

Prozeduren und Funktionen

Was sind Prozeduren und Funktionen? Aufbau einer Prozedur Aufbau einer Funktion forward- und interface-Deklarationen Parameter Wert- und Variablenparameter Konstantenparameter Ausgabeparameter Array-Parameter Default-Parameter Prozeduren und Funktionen überladen Prozeduren und Funktionen abbrechen inline-Funktionen und -Prozeduren Was sind Prozeduren und Funktionen? Prozeduren und Funktionen, auch „Unterprogramme“ oder Routinen genannt, haben die Aufgabe, öfter wiederkehrenden Programmcode sozusagen als Baustein […]

Programmaufbau

Projektdatei: Anwendung Projektdatei: Library Projektdatei: Package Units Units verwenden Positionen der uses-Klausel interface und implementation initialization und finalization Namespaces Projektdatei: Anwendung Eine in Delphi erstellte Anwendung (auch Projekt genannt) besteht aus einer Projektdatei mit der Endung .dpr, die das Hauptprogramm enthält, und evtl. einer oder mehreren Units. Der Aufbau der Projektdatei sieht so aus, wenn […]

Klassen und Objekte

Was ist Objektorientierung? Klassen Instanzen/Objekte Methoden Self Sender Klassenmethoden Botschaftsmethoden Attribute oder Felder Klassenfelder Eigenschaften oder Properties Array-Eigenschaften Klasseneigenschaften Was ist Objektorientierung? Die objektorientierte Programmierung wurde in den 80er-Jahren entwickelt und soll die unstrukturierte Programmierung (am Anfang ein begin, dann Befehl auf Befehl und am Ende ein end, dazwischen möglichst viele Sprünge mit goto) ablösen. […]

Objekte erzeugen und freigeben

Objekte erzeugen: Der Konstruktor Eigener Konstruktor Objekte freigeben: Der Destruktor Eigener Destruktor Objekte erzeugen: Der Konstruktor Instanzen einer Klasse entstehen erst dadurch, dass sie ausdrücklich erzeugt werden. Dies geschieht mit dem Konstruktor Create. „Konstruktor“ ist ein Fremdwort und bezeichnet jemanden, der etwas konstruiert, also erzeugt. Man könnte create auch eine Methode nennen; es gibt jedoch […]

Zugriff auf Objekte

Zugriff auf Objekte Zur Erinnerung noch einmal unsere Auto-Klasse von vorhin: type TAuto = class private FFarbe: string; FBaujahr: integer; procedure SetFarbe(Farbe: string); public property Farbe: string read FFarbe write SetFarbe; end; Diese Klasse enthält folgende Klassenkomponenten: Datenfelder (Attribute), hier: FFarbe, FBaujahr Methoden, hier: SetFarbe Eigenschaften (Property), hier: Farbe Diese Komponenten sind im Bauplan (der […]

Funktions- und Methodenzeiger

Funktionen und Prozeduren können selbst in Variablen gespeichert werden (bzw. ein Verweis auf sie). Somit ist es möglich, einer Funktion eine andere Funktion als Parameter zu übergeben. type TMeineFunktion = function: Integer; In diesem Fall haben die Funktionen oder Prozeduren keinen Namen, sondern bestehen aus dem Schlüsselwort function oder procedure, bei Bedarf gefolgt von Parametern […]

Vererbung

Wir kommen nun zu einem wichtigen Punkt beim Arbeiten mit Klassen: der Vererbung. Bisher haben wir unsere Klassen aus dem „Nichts“ komplett neu aufgebaut. Dennoch kannten sie bereits einige vordefinierte Befehle, die wir nicht programmiert haben wie z.B. create und destroy. Das liegt daran, dass in Delphi alle Klassen automatisch Nachkommen von TObject sind. Und […]

Polymorphie

Typecasting – is und as Durch voriges Beispiel ergibt sich allerdings ein Problem. Die Variable m ist vom Typ TMensch, verweist aber auf einen Schüler. Nach der Definition der Klasse TSchueler besitzt diese das Attribut FTaschengeld. Die Anweisung m.FTaschengeld führt jedoch zu einer Fehlermeldung, da der Compiler die Variable m nach wie vor für eine […]

Verbergen, überschreiben, überladen

Das Hinzufügen neuer Attribute, Eigenschaften oder Methoden in Unterklassen ist eine praktische Sache. Was passiert aber, wenn ein vermeintlich neues Element den gleichen Namen verwendet wie ein Element der Vorfahrenklasse? Elemente gleichen Namens können einander innerhalb verwandter Klassen verbergen überschreiben überladen Verbergen geerbter Elemente Das Prinzip „Verbergen“ besteht darin, in einer Nachkommenklasse den Namen eines […]

Virtuelle, dynamische und abstrakte Methoden

Neues Beispiel: Angenommen, wir haben eine Klasse TKoerper, die mehrere Unterklassen hat, z. B. TKugel, TQuader usw. Alle Klassen haben bestimmte Methoden gemeinsam, wie das Berechnen von Volumen und Oberfläche. Allerdings muss jede der Unterklassen eine andere Berechnung durchführen, da die Formeln für Kugeln und Quader unterschiedlich sind. Und obwohl alle Unterklassen diese gleichnamigen Methode […]

Helferklassen

Mit .NET wurde Delphi um das Konzept der unterstützenden Klassen (class helper) erweitert. Dabei handelt es sich um eine Klasse, die eine bereits bestehende Klasse erweitert bzw. abändert, ohne sie abzuleiten. Beispiel: type TMyClassHelper = class helper for TMyClass procedure MyProc; end; ... procedure TMyClassHelper.MyProc; begin end; Damit kann man auch die Prozedur MyProc an […]

Exceptions

Bei einer objektorientierten Programmiersprache dürfen Exceptions nicht fehlen. Exceptions werden ausgelöst, wenn ein Fehler auftritt. Wird die Stelle im Code von try…except oder try…finally umgeben, so wird die Programmausführung an der Stelle abgebrochen, an der der Fehler aufgetreten ist, und im except- bzw. finally-Abschnitt fortgesetzt. Exceptions sind Klassen, die Exception als gemeinsame Basisklasse haben. Im […]

Interfaces

Ein Interface wird von der Syntax her ähnlich deklariert wie eine Klasse. Es besitzt allerdings nur öffentliche (public) Methoden, die nicht implementiert werden. Klassen können von einem oder mehreren Interfaces ableiten und müssen dann die im Interface deklarierten Methoden auch implementieren. Dass eine Klasse ein bestimmtes Interface verwendet, bedeutet also, dass eine bestimmte Menge von […]

Styleguide

Einführung Dieses Dokument hat nicht die Absicht, eine Grammatik für die Delphi-Sprache zu definieren. Es ist zum Beispiel nicht erlaubt, einen Strichpunkt vor eine else-Anweisung zu setzen; der Compiler lässt das einfach nicht zu. Deshalb werde ich diese Regel nicht in diesem Styleguide auslegen. Dieses Dokument möchte eine saubere Vorgehensweise an Stellen, an denen die […]