Vai al contenuto

Pascal/Programmazione ad oggetti

Wikibooks, manuali e libri di testo liberi.
Indice del libro

La programmazione orientata agli oggetti (OOP) è un paradigma di programmazione che consente di gestire applicazioni complesse, come applicazioni molto grandi o con interfacce grafiche elaborate, con semplicità.

Quest'obbiettivo si raggiunge raggruppando in classi le strutture dati e le procedure che le elaborano ottenendo appunto degli oggetti caratterizzati da proprietà (i dati) e metodi (le procedure e le funzioni).

Il vecchio paradigma di programmazione, quella strutturale (o metodo top-down) poco si prestava all'elaborazione di programmi complessi. Le nuove architetture hardware erano però in grado di gestire programmi più potenti, che rendevano obsoleta di fatto la programmazione strutturale. Fu così che nacque la programmazione agli oggetti: non è più il programma in sé a gestire l'intero flusso di istruzioni, ma sono gli oggetti che interagiscono fra di loro intervenendo opportunamente sull'andamento del programma, specialmente se si utilizza il concetto di "evento" di cui ne parleremo quando avremo a che fare con Turbo Vision.

La programmazione orientata agli oggetti è pertanto un'estensione dell'originale linguaggio Pascal, ed è sopportata solo dai moderni compilatori come Free Pascal o Delphi, che consentono all'utente di creare applicazioni con classi e oggetti.

La prima versione di Turbo Pascal con l'OOP è stata il Turbo Pascal 5.5, e la versione 6.0 includeva il framework Turbo Vision, ovvero una vasta libreria che consente la creazione di una TUI (Text User Interface) adeguata. La IDE del Free Pascal è stat sviluppata con una libreria analoga, ma open source: la Free Vision.

Anche se il Pascal supporta ormai da tempo la programmazione orientata agli oggetti e la programmazione avanzata in generale, la mancanza di compilatori versatili che funzionino in ambiente Windows ha relegato il Pascal ad un ambito esclusivamente didattico.

Di seguito un semplice esempio di programma che implementa la programmazione a oggetti.

Il programma memorizza un numero (1) nella variabile privata One, lo incrementa e lo stampa.

 program types;  // Piccolo esempio OOP
 
 type MyType=class
       private
        One:Integer;
       public
        function Myget():integer;
        procedure Myset(val:integer);
        procedure Increase();
      end;
 function MyType.Myget():integer;
 begin
   Myget:=One;
 end;
 procedure MyType.Myset(val:integer);
 begin
   One:=val;
 end;
 procedure MyType.Increase();
 begin
   One:=One+1;
 end;

 var
   NumberClass:MyType;
 begin
   NumberClass:=MyType.Create;  // crea l'istanza dell'oggetto
   NumberClass.Myset(1);
   NumberClass.Increase();
   writeln('Result: ',NumberClass.Myget());
   NumberClass.Free;  // distrugge l'istanza
 end.

Il programma mostrato è banale e non ha alcuno scopo se non quello di mostrare un esempio di sintassi OOP. Esempi molto più complessi si trovano sul sito del progetto FreePascal e di Lazarus, un RAD per lo sviluppo di applicazioni OOP in FreePascal.