Zum Inhalt springen

Object Pascal

aus Wikipedia, der freien Enzyklopädie
Object Pascal
Basisdaten
Paradigmen: prozedural, objektorientiert
Erscheinungsjahr: 1986
Entwickler: Apple, Niklaus Wirth, Anders Hejlsberg
Typisierung: stark, explizit (auf Wunsch auch implizit), statisch
Wichtige Implementierungen: Embarcadero Delphi (x86 und CLI), Free Pascal (diverse Architekturen), Oxygene (CLI, Java), Virtual Pascal (x86), TMT Pascal (x86), Turbo51 (Intel 8051)
Dialekte: Free Pascal, Delphi.NET, Oxygene
Beeinflusst von: Turbo Pascal, Smalltalk
Beeinflusste: .NET, C#, Java

Object Pascal ist eine Sammelbezeichnung für mehrere Programmiersprachen-Derivate, die Pascal um Objektorientierte Programmierung erweitern. Die bekannteste Variante ist die Programmiersprache der Entwicklungsumgebung Embarcadero Delphi, die vom Unternehmen Borland entwickelt und zeitweise Delphi Language genannt wurde.

Entwicklung

1986 erweiterte Borland ihre Entwicklungsumgebung Turbo Pascal für den Apple Macintosh um erste objektorientierte Sprachmerkmale. Mit Turbo Pascal 5.5 folgte 1989 eine Version für DOS. 1993 begann Borland mit der Entwicklung von Delphi als Nachfolger von Turbo Pascal für Windows. 1995 veröffentlichte Borland Delphi 1.0 und führte damit neue Spracherweiterungen wie ein neues Objektmodell ein. Das alte Objektmodell von Turbo Pascal wurde aber weiterhin unterstützt.

Mit der Zeit wurde die Sprache immer wieder weiterentwickelt und u. a. um Generics und Anonyme Funktionen erweitert.

Neben dem verbreiteten Delphi gibt es viele andere Compiler für Object Pascal wie u. a. die Open-Source-Projekte Free Pascal und GNU Pascal. Sie streben teilweise Kompatibilität zu Delphi an, pflegen aber eine eigene Sprachdefinition mit eigenen Erweiterungen.

Eigenschaften

Der Funktionsumfang von Object Pascal ist vergleichbar mit dem von C++, wobei sich die Syntax stark unterscheidet. Variablen müssen deklariert und einem Datentyp zugeordnet werden. Es gibt Klassen mit Konstruktoren und Destruktoren, Methoden und Properties. Methoden können virtuell sein. Die Vererbung unterstützt nur eine Basisklasse; Interfaces ermöglichen Mehrfachvererbung. Für die Speicherverwaltung von Objekten ist der Programmierer selbst verantwortlich. Strings sind davon nicht betroffen, da sie als elementarer Datentyp unterstützt werden.

Bis Delphi 2005 wurden Objekte grundsätzlich auf dem Heap angelegt. Dies ermöglicht es in Delphi, jedes Objekt als Rückgabe an den Aufrufenden zu übergeben. In anderen Programmiersprachen, wie z. B. C++, können Objekte sowohl im Heap als auch im Stack angelegt werden. Objekte im Stack können nicht als Rückgabewert übergeben werden, da diese beim Verlassen der Funktion zusammen mit dem restlichen Stackframe der Funktion gelöscht werden. Somit wurde hier eine Designentscheidung getroffen, die dem Delphi-Programmierer die Entscheidung zwischen Heap/Stack abnimmt und immer die flexiblere Lösung wählt. Als Nachteil dieser Technik ergibt sich unmittelbar, dass der Programmierer seine erzeugten Objekte selbst aus dem Speicher entfernen muss. Bei Objekten im Stack ist dies nicht notwendig. Seit Delphi 2006 werden auch Records mit Methoden unterstützt, womit sich Stackobjekte ähnlich wie in C++ erstellen lassen.

Programmbeispiel

(Für Delphi und Free Pascal)

program ObjectPascalExample;

type
  THelloWorld = class
  public
    procedure Greet;
  end;

procedure THelloWorld.Greet;
begin
  Writeln('Hello, World!');
end;

var
  HelloWorld: THelloWorld;           { impliziter Zeiger }
begin
  HelloWorld := THelloWorld.Create;  { Konstruktor gibt einen Zeiger auf eine Instanz der Klasse THelloWorld zurück }
  try
    HelloWorld.Greet;
  finally
    HelloWorld.Free;                 { Freigeben der Instanz }
  end;
end.

Implementierungen

Compiler bzw. Interpreter, die Object Pascal unterstützen sind u. a.:

Klassenbibliotheken

Für Object Pascal existieren mehrere Klassenbibliotheken. Unter Delphi bilden die Runtime Library (RTL) und die Visual Component Library (VCL) traditionell die Basis für die Entwicklung. Während erstere grundlegende Funktionalitäten wie beispielsweise Verarbeitungsfunktionen für Zeichenketten enthält, ist letztere eine Klassenbibliothek, insbesondere für visuelle Komponenten (Buttons, etc.). Zeitweise gab es neben der VCL noch die Component Library for Cross Platform (CLX). Diese wurde aber wieder eingestellt. Mit Delphi XE2 wurde Firemonkey eine im Gegensatz zur VCL plattformunabhängige, vektorbasierte Komponentenbibliothek eingeführt.

Der größte Teil der Funktionalität beruht auf Klassenbibliotheken, andere sehr häufig benötigte Funktionen werden aber direkt vom Compiler umgesetzt, so z. B. die nahtlose Integration der COM-Technik unter Microsoft Windows. Der direkte Zugriff auf die Windows-API ist möglich. Von anderen Anbietern gibt es eine Vielzahl von Komponenten für die unterschiedlichsten Anwendungen. So haben sich auch einige Open-Source-Bibliotheken und -Komponentensammlungen etabliert. Insbesondere die JEDI Class Library (JCL), JEDI Visual Component Library (JVCL) und Internet Direct (Indy).

Für FreePascal/Lazarus existieren äquivalente Bibliotheken zu RTL und VCL, die sich in der Handhabung nur im Detail unterscheiden und dort Free Component Library FCL und Lazarus Component Library LCL heißen.

Einfluss auf andere Programmiersprachen

Einige der Elemente und Ideen von Object Pascal wurden in die Programmiersprache C# von Microsoft übernommen. Einer der Gründe ist, dass zahlreiche Mitentwickler von Delphi bei Borland von Microsoft abgeworben wurden und maßgeblich an der Entwicklung von C# beteiligt waren. Darunter waren unter anderem der Delphi-Projektleiter Anders Hejlsberg, welchem der Wechsel zu Microsoft mit einem Bonus in Millionenhöhe schmackhaft gemacht wurde, sowie Chuck Jazdzewski (Delphi Chief Architect), Corbin Dunn (Entwickler der Delphi-IDE), Danny Thorpe (Delphi, Borland Chief Scientist), Eddie Churchill und Ramin Halviatti.[1] Hejlsberg wurde bei Microsoft Software-Architekturchef, Miterfinder von .NET und Chefentwickler von C#.

Literatur

  • Richard Kaiser: Objekt Pascal mit Delphi – Eine Einführung in die objektorientierte Windows-Programmierung,
    Springer, (Reprint v. 1997) Berlin 2013, ISBN 3-540-60340-9
  • Martin Pyka: DirectX 9 in Delphi, BoD, 2004, ISBN 3-8334-0835-9
  • Thomas Binzinger: Jetzt lerne ich Delphi, Der einfache Einstieg in Object Pascal – für alle Versionen bis einschließlich Delphi 2006, Markt und Technik, München 2006, ISBN 3-8272-4108-1
  • Walter Doberenz, Thomas Kowalski: Delphi 7 - Grundlagen, Profiwissen, Kochbuch,
    Hanser, München 2007, ISBN 3-446-41216-6
  • Hans-Georg Schumann: Delphi für Kids, bhv-Verlag, 4. Auflage 2009, ISBN 3-826-68662-4
  • Wolf-Gert Matthäus: Grundkurs Programmieren mit Delphi, Vieweg, 4. Auflage 2011, ISBN 3-834-81668-X
  • Chris Rolliston: Delphi XE2 Foundations, CreateSpace, 2012, ISBN 978-1-4775-5089-2
  • Nick Hodges: Coding in Delphi, Nepeta Enterprises, 2014, ISBN 978-1-941266-03-8
Wikibooks: Programmierkurs: Delphi – Lern- und Lehrmaterialien

Einzelnachweise

  1. Borland-Chef: Microsoft raubt uns die Mitarbeiter - Computerwoche