Pascal/Programmazione ad oggetti
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.
Esempio
modificaIl 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.