Componenta Pascal
| Componenta Pascal | |
|---|---|
| Paradigme : | imperativ , modular , orientat pe obiecte , orientat pe componente |
| Anul publicării: | 1990 |
| Dezvoltator: |
Microsisteme Niklaus Wirth / Oberon |
| Versiunea actuală : | 1.5 (2005, Candidat de lansare 1.6: 2007) |
| Tastare : | static și dinamic, puternic |
| Implementări importante : | Producător de componente BlackBox, componentă Gardens Point Pascal |
| Influențată de: | Modula-2 / Oberon |
| Sistem de operare : | Windows , sisteme de execuție .NET și JVM |
| Licență : | gratuit |
| Microsisteme Oberon | |
Component Pascal este un limbaj de programare imperativ , modular , orientat pe obiecte și componente, care a fost gratuit din 2004 și a fost dezvoltat din 1990 pentru sistemul de dezvoltare bazat pe componente BlackBox Component Builder dezvoltat de microsistemele Oberon . Între timp, există și versiuni sub numele Gardens Point Component Pascal care pot rula sub .NET și sub mașina virtuală Java .
Component Pascal a fost dezvoltat din limbajul de programare Oberon și funcționa încă sub numele Oberon / L când a fost publicat în 1994. Cadrul asociat a fost numit Oberon / F. Odată cu lansarea 1.3 (care a fost lansată la începutul anului 1996/1997), limba Oberon / L Component Pascal și cadrul Oberon / F au devenit Generatorul de componente BlackBox.
caracteristici
Component Pascal are o descriere a limbajului foarte scurtă și simplă, cu o sintaxă complet structurată . Permite tipuri și obiecte statice , precum și tipuri dinamice și legare dinamică . Este un limbaj de programare foarte puternic tastat și sigur , cu condiția ca modulul SYSTEM să nu fie importat în mod explicit, care este de obicei destinat doar programării sistemului și, prin urmare, este ușor de transportat . Moștenirea este ancorată în limbajul de programare, dar nu moștenirea multiplă pentru a evita sarcina suplimentară pentru compilatori și pentru a face semantica limbajului cât mai clară posibil și pentru a evita problema Diamond .
Componenta Pascal sprijină , de asemenea , colectarea gunoiului automat și de încărcare dinamică și îndepărtarea de module sau a componentelor în timpul rulării , chiar și în timp ce cazuri există deja și urmează să fie utilizate.
În plus, Component Pascal permite afirmații , programare generică și suprascrierea tipurilor de date și, prin urmare, și metode (așa-numitele proceduri legate de tip ). Totuși, pentru simplitate și o mai bună trasabilitate a codului sursă , nu este posibilă supraîncărcarea operatorilor sau a metodelor.
Limbajul de programare Component Pascal și sistemul de dezvoltare și runtime BlackBox Component Builder sunt open source din 2005 .
Domenii de aplicare
Component Pascal se caracterizează prin cerințele sale hardware reduse , stabilitate ridicată , simplitate și viteză, atât în ceea ce privește timpul de rulare, cât și dezvoltarea de software . Este utilizat în principal pentru aplicații științifice și tehnice , în predare și cercetare , dar și pentru aplicații comerciale .
Programe
Salut Lume
Programul Hello World din Component Pascal 1. Exemplu
( Fara parametri ) comanda de ieșire este definit în HalloWelt modulul . Asteriscul (*) după numele procedurii definește exportul ieșirii procedurii , astfel încât să poată fi referit în afara modulului cu sintaxa HalloWelt.Output . Următorul cod sursă este un program simplu care afișează mesajul Hello World! urmat de un print de linie:
MODULE HalloWelt;
IMPORT Out;
PROCEDURE Output*;
BEGIN
Out.Open;
Out.String ("Hallo Welt!");
Out.Ln;
END Output;
END HalloWelt.
Programul Hello World din exemplul 2 Component Pascal
În modulul HalloWelt2 definiți o variabilă care va fi afișată ulterior într-o casetă de dialog. Asteriscul (*) după numele procedurii definește exportul ieșirii procedurii, astfel încât să poată fi referit în afara modulului cu sintaxa HalloWelt.Output . Următorul cod sursă este un program simplu care afișează mesajul Hello World! într-o casetă de dialog care se deschide prin „Dialog IMPORT;” a fost importat. În caseta de dialog, printre altele, toate variabilele marcate cu un * sunt afișate. Cu „VAR output *: ARRAY 50 OF CHAR” se specifică faptul că se va crea o „output” variabilă care 1. este vizibilă în dialog ( ) și 2. constă dintr-o secvență de 50 de caractere (ARRAY 50 OF CHAR) linia "Dialog.UpdateString (ieșire);" este ordonat ca conținutul variabilei „ieșire” să fie atribuit casetei de dialog și să fie afișat imediat:
VAR*
MODULE HalloWelt2;
IMPORT Dialog;
VAR ausgabe*: ARRAY 50 OF CHAR;
PROCEDURE Output*;
BEGIN
ausgabe:= "Hallo Welt!" ;
Dialog.UpdateString(ausgabe);
END Output;
END HalloWelt2.
calculator
Programul de calcul de adăugare din Component Pascal primul exemplu
MODULE Kurs10Rechner;
IMPORT Dialog;
VAR zahl1*, zahl2*, ergebnis*, rest* : INTEGER;
PROCEDURE add* ;
BEGIN
ergebnis := (zahl1 + zahl2);
Dialog.UpdateInt(ergebnis);
END add;
END Kurs10Rechner.
Exemple de implementare a moștenirii
Implementarea structurilor succesorale în Componenta Pascal a fost simplificat oarecum în comparație cu predecesorul său, Oberon , și a fost structurată și mai clar și sigur. Comentariile dintre (*și *)sunt utilizate în scopuri explicative și sunt ignorate de compilator. Exemple:
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 ("H" für hexadezimal) gesetzt *)
punkt1.x := 1;
punkt1.y := 1;
punkt1.Zeichne ();
NEW (linie1);
linie1.farbe := 07FH; (* Objektfarbe wird auf 07F ("H" für hexadezimal) gesetzt *)
linie1.xStart := 1;
linie1.yStart := 1;
linie1.xEnde := 2;
linie1.yEnde := 2;
linie1.Zeichne ();
END Vererbung1.
Atributele care au doar acces la citire pot fi modificate folosind proceduri (metode) specifice tipului. Exportul identificatorilor corespunzători, care pot fi citiți doar în afara modulelor proprii ale obiectului, nu este indicat de *, ci de -. Exemplu:
MODULE Vererbung2;
TYPE
Objekt* = POINTER TO RECORD x-: INTEGER; END; (* Kommentar: außerhalb des Moduls "Vererbung2" ist kein direkter Schreibzugriff auf das Attribut "x" möglich *)
PROCEDURE (objekt: Objekt) setzeX* (wert: INTEGER), NEW; (* Kommentar: für den indirekten Schreibzugriff auf das Attribut "x" *)
BEGIN
objekt.x := wert;
END setzeX;
END Vererbung2.
MODULE AnderesModul;
IMPORT Vererbung2;
VAR
objekt1: Vererbung2.Objekt;
int: INTEGER;
BEGIN
NEW (objekt1);
objekt1.setzeX (1); (* Kommentar: die Anweisung "objekt1.x := 1" ist außerhalb des Moduls "Vererbung2" nicht möglich *)
int := objekt1.x; (* Kommentar: direkter Lesezugriff auf das Attribut ""x ist möglich *)
END AnderesModul.
literatură
- Karlheinz Hug: module, clase, contracte. Un manual despre construcția de software orientat pe componente cu Component Pascal . Compania Editura Vieweg, 2001
- J. Stanley Warford: Noțiuni fundamentale de calcul - Teoria și practica proiectării software cu Generatorul de componente BlackBox . Vieweg, 2002
- Markus Bautsch: Cicluri de crize software . În: ENISA Quarterly on Secure Software (PDF; 2 MB)
Link-uri web
- BlackBerry la microsistemele Oberon
- Colectare de surse pentru Component Pascal
- Component Pascal Resources ( Memento din 19 ianuarie 2015 în Arhiva Internet )
- Componenta Gardens Point Pascal ( Memento din 24 martie 2012 în Arhiva Internet )
- Tutorial Component Pascal
- Definirea limbii (PDF; 221 kB)
- Anunț BlackBox 1.3 (1997) ( Memento din 27 februarie 1997 în Arhiva Internet )