Component Pascal

Component Pascal
Paradigmen: imperativ, modular, objektorientiertert, komponentenorientiert
Erscheinungsjahr: 1990
Entwickler: Niklaus Wirth /
Oberon microsystems
Aktuelle Version: 1.5  (2005, Release Candidate 1.6: 2007)
Typisierung: dynamisch, sehr stark
wichtige Implementierungen: BlackBox Component Builder, Gardens Point Component Pascal
Einflüsse: Modula-2 / Oberon
Betriebssystem: Windows, Laufzeitsysteme .NET und JVM
Lizenz: frei
Oberon microsystems

Component Pascal ist eine seit 2004 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 bei der Veröffentlichung 1994 noch unter dem Namen Oberon/L. Das dazu gehörende Framework wurde Oberon/F genannt. Mit dem Release 1.3 (das etwa zum Jahreswechsel 1996/1997 freigegeben wurde) wurde aus der Sprache Oberon/L Component Pascal und aus dem Framework Oberon/F der BlackBox Component Builder.

Inhaltsverzeichnis

Eigenschaften

Component Pascal hat eine ausgesprochen kurze und einfache Sprachbeschreibung mit einer vollständig strukturierten Syntax. Sie erlaubt statische Typen und Objekte genauso wie dynamische Typen, sowie dynamische Bindung. Es handelt sich um eine sehr stark typisierte und typsichere Programmiersprache, solange das Modul SYSTEM nicht explizit importiert wird, was in der Regel nur für Systemprogrammierung vorgesehen ist, und ist daher leicht portabel. Vererbung ist in der Programmiersprache verankert, nicht jedoch mehrfache Vererbung, um zusätzliche Belastung für die Compiler zu vermeiden und die Sprachsemantik so eindeutig wie möglich zu gestalten.

Component Pascal unterstützt auch zur Laufzeit automatische Speicherbereinigung und das dynamisches Laden und Entfernen von Modulen respektive Komponenten.

Darüber hinaus erlaubt Component Pascal Assertionen, generische Programmierung und das Überschreiben von Datentypen und somit auch Methoden (sogenannte typengebundene Prozeduren). Im Sinne der Einfachheit und Nachvollziehbarkeit des Quellcodes ist das Überladen von Operatoren oder Methoden jedoch nicht möglich.

Einsatzgebiete

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 Softwareentwicklung aus. Es wird vor allem für wissenschaftliche und technische Anwendungen, in Lehre und Forschung, aber auch für kommerzielle Anwendungen eingesetzt. Die Programmiersprache Component Pascal und das Entwicklungs- und Laufzeitsystem BlackBox Component Builder sind seit 2005 quelloffen.

Programme

Hallo Welt

Das Programm Hallo Welt in Component Pascal 1. Beispiel

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.Open;
   Out.String ("Hallo Welt!");
   Out.Ln;
END Output;

END HalloWelt.

Das Programm Hallo Welt in Component Pascal 2. Beispiel

Im Modul HalloWelt2 wird eine Variable definiert, die später in einer Dialogbox ausgegeben wird. 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! in einer Dialogbox ausgibt, die über "IMPORT Dialog;" importiert wurde. In der Dialogbox werden u.a. alle mit einem * gekennzeichneten Variablen ausgegeben. Mit "VAR ausgabe*: ARRAY 50 OF CHAR" wird festgelegt, dass eine "VAR" Variable "ausgabe" angelegt werden soll, die 1. im Dialog sichtbar ist ("*") und 2. aus einer Aneinanderreihung von 50 Schriftzeichen besteht (ARRAY 50 OF CHAR) Durch die Zeile "Dialog.UpdateString(ausgabe);" wird angeordnet, dass der Inhalt der Variable "ausgabe" der Dialogbox zugewiesen wird und sofort angezeigt wird.  :

 MODULE HalloWelt2;

 IMPORT Dialog;

 VAR ausgabe*: ARRAY 50 OF CHAR;

 PROCEDURE Output*;
 BEGIN
   ausgabe:= "Hallo Welt!" ;
   Dialog.UpdateString(ausgabe);
 END Output;

END HalloWelt2.

Rechner

Das Programm Additions-Rechner in Component Pascal 1. Beispiel

MODULE Kurs10Rechner;
IMPORT Dialog;

VAR zahl1*, zahl2*, ergebnis*, rest* : INTEGER;

  PROCEDURE add* ;
  BEGIN
     ergebnis := (zahl1 + zahl2);
     Dialog.UpdateInt(ergebnis);
  END add;

END Kurs10Rechner.

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. Die Bemerkungen zwischen "(*" und "*)" dienen zur Erläuterung und werden vom Compiler ignoriert. Beispiele:

MODULE Vererbung1;

TYPE (* Typendefinitionen *)

   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 (* Variablendefinitionen *)

   punkt1: Punkt;
   linie1: Linie;

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

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

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

BEGIN

   NEW (punkt1);
   punkt1.farbe := 0FFH; (* Objektfarbe wird auf 0FF (hexadezimal) gesetzt *)
   punkt1.x := 1;
   punkt1.y := 1;
   punkt1.Zeichne ();

   NEW (linie1);
   linie1.farbe := 07FH; (* Objektfarbe wird auf 07F (hexadezimal) gesetzt *)
   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. Der Export entsprechender Identifizierer, die außerhalb der objekteigenen Methoden nur gelesen werden können, wird nicht durch "*", sondern durch "-" gekennzeichnet. 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.

Literatur

  • Karlheinz Hug: Module, Klassen, Verträge. Ein Lehrbuch zur komponentenorientierten Softwarekonstruktion mit Component Pascal, Vieweg Verlagsgesellschaft, 2001
  • J. Stanley Warford: Computing Fundamentals - The Theory and Practice of Software Design with BlackBox Component Builder, Vieweg, 2002
  • Markus Bautsch: Cycles of Software Crises in: ENISA Quarterly on Secure Software (PDF-Datei; 2 MB)

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Component Pascal — Paradigm(s) imperative, structured, modular, object oriented Appeared in 1991 Designed by Oberon Microsystems Typing discipline strong, static Influenced by …   Wikipedia

  • Component Pascal — …   Википедия

  • PASCAL — Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Dialekte: UCSD Pascal …   Deutsch Wikipedia

  • Pascal (programming language) — Pascal Paradigm(s) imperative, structured Appeared in 1970 Designed by Niklaus Wirth Typing discipline static, strong, safe …   Wikipedia

  • Pascal (Programmiersprache) — Pascal Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Typisierung: stark, statisch …   Deutsch Wikipedia

  • Component-based software engineering — A simple example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer s order, requires the card processing component to charge the customer s credit/debit card (functionality that the latter… …   Wikipedia

  • Pascal (lenguaje de programación) — Para otros usos de este término, véase Pascal. Pascal Información general Paradigma imperativo (estructurado) Apareció en 1970 Diseñado po …   Wikipedia Español

  • Pascal Goldschmidt — Pascal J. Goldschmidt Clermont, M.D., is a Belgian born, American cardiologist, and is the Senior Vice President for Medical Affairs and the Dean of the Miller School of Medicine at the University of Miami. He was previously the Edward S. Orgain… …   Wikipedia

  • Component Library for Cross Platform — (CLX) (pronounced clicks), is a cross platform visual component based framework for developing Microsoft Windows and Linux applications. It is developed by Borland for use in its Kylix, Delphi, and C++ Builder software development environment.… …   Wikipedia

  • Pascal's law — noun pressure applied anywhere to a body of fluid causes a force to be transmitted equally in all directions; the force acts at right angles to any surface in contact with the fluid the hydraulic press is an application of Pascal s law • Syn:… …   Useful english dictionary


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.