Das Kefk Network Wiki befindet sich im Testbetrieb.


Component Pascal

Aus Kefk.

Wechseln zu: Navigation, Suche

Component Pascal ist eine mittlerweile kostenlose, seit 1990 entwickelte, imperative, modulare, objekt- und komponentenorientierte Programmiersprache für das von Oberon microsystems entwickelte, komponentenbasierte Entwicklungssystem BlackBox Component Builder. Inzwischen gibt es unter dem Namen Gardens Point Component Pascal auch Versionen, die unter .NET und unter der Java Virtual Machine lauffähig sind.

Component Pascal ist aus der Programmiersprache Oberon entwickelt worden und firmierte daher zunächst unter dem Namen Oberon/F.

Component Pascal zeichnet sich durch seine geringen Ansprüche an die Hardware, hohe Stabilität, Einfachheit und Schnelligkeit sowohl bei der Laufzeit als auch bei der Entwicklung aus. Es wird vor allem für wissenschaftliche und technische Anwendungen, aber auch in Lehre und Forschung eingesetzt.

Das Programm Hallo Welt in Component Pascal

Im Modul HalloWelt wird das (parameterlose) Kommando Output definiert. Der Stern (*) hinter dem Prozedurnamen definiert den Export der Prozedur Output, so dass diese außerhalb des Moduls mit der Syntax HalloWelt.Output referenziert werden kann. Der folgende Quelltext stellt ein einfaches Programm dar, das die Meldung Hallo Welt! gefolgt von einem Zeilenumbruch ausgibt:

MODULE HalloWelt;

IMPORT Out;

PROCEDURE Output*;
BEGIN
   Out.String ("Hallo Welt!");
   Out.Ln;
END Output;

END HalloWelt.

Beispiele für die Implementierung von Vererbung

Die Implementierung von vererbbaren Strukturen ist bei Component Pascal gegenüber seinem Vorgänger Oberon etwas vereinfacht und noch klarer und sicherer strukturiert worden. Beispiele:

MODULE Vererbung1;

TYPE

   GraphischesObjekt* = POINTER TO ABSTRACT RECORD farbe*: INTEGER; END;
   Punkt* = POINTER TO RECORD (GraphischesObjekt) x*, y*: INTEGER; END;
   Linie* = POINTER TO RECORD (GraphischesObjekt) xStart*, yStart*, xEnde*, yEnde*: INTEGER; END;

VAR

   punkt1: Punkt;
   linie1: Linie;

PROCEDURE (g: GraphischesObjekt) Zeichne* (), NEW, EXTENSIBLE; 
BEGIN
END Zeichne; 

PROCEDURE (punkt: Punkt) Zeichne* (); 
BEGIN
   ...
END Zeichne; 

PROCEDURE (linie: Linie) Zeichne* (); 
BEGIN
   ...
END Zeichne; 

BEGIN

   NEW (punkt1);
   punkt1.x := 1;
   punkt1.y := 1;
   punkt1.Zeichne ();

   NEW (linie1);
   linie1.xStart := 1;
   linie1.yStart := 1;
   linie1.xEnde  := 2;
   linie1.yEnde  := 2;
   linie1.Zeichne ();

END Vererbung1.

Attribute, die nur einen Lesezugriff haben, können durch typengebundene Prozeduren (Methoden) verändert werden. Beispiel:

MODULE Vererbung2;

TYPE

   Objekt* = POINTER TO RECORD x-: INTEGER; END;

VAR

   objekt1: Objekt;
   int: INTEGER;

PROCEDURE (objekt: Objekt) SetzeX* (wert: INTEGER), NEW; 
BEGIN
   objekt.x := wert;
END SetzeX; 

BEGIN

   NEW (objekt1);
   (* Kommentar: Die Anweisung objekt1.x := 1 ist nicht möglich *)
   objekt1.SetzeX (1);
   int := objekt1.x

END Vererbung2.

Weblinks

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Component_Pascal, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge
Andere Sprachen