Pascal/Concetti fondamentali: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
m Update syntaxhighlight tags - remove use of deprecated <source> tags
 
Riga 17:
Qui di seguito un esempio in codice per creare una classe:
 
<sourcesyntaxhighlight lang=pascal>
TYPE TStudente = OBJECT
Nome,Cognome: String;
Riga 28:
PROCEDURE SetAnnoNascita(anno:integer);
END;
</syntaxhighlight>
</source>
In questo modo abbiamo definito la classe TStudente che contiene i campi Nome, Cognome e AnnoDiNascita, e i metodi per memorizzare i dati o per ottenerli dall'esterno.
 
Riga 40:
 
Da qui appare chiaro il perché usare l'ereditarietà. Ecco un esempio in codice:
<sourcesyntaxhighlight lang=pascal>
TYPE TBox1 = OBJECT
Altezza, Lunghezza, Larghezza: integer;
Riga 50:
PROCEDURE ChiudiScatola;
END;
</syntaxhighlight>
</source>
 
==Il polimorfismo==
Riga 60:
Adesso, supponiamo che una procedura più avanti si serva del metodo <code>draw</code>, ma non specifica quale oggetto stiamo utilizzando. Per esempio:
 
<sourcesyntaxhighlight lang=pascal>
PROCEDURE UnaProcedura(figura:figurabidimensionale);
BEGIN
Riga 71:
...
END;
</syntaxhighlight>
</source>
 
In questo esempio il metodo Draw non sarà quello di <code>figurabidimensionale</code>, ma quello della classe figlia che eredita, anche perché in <code>figurabidimensionale</code> il metodo non è definito.
Riga 82:
Bene, nel Pascal, per motivi di compatibilità, è possibile riferirsi a un oggetto creando una variabile con la clausola <code>VAR</code>, ma comunque questo serve solo per lanciare l'oggetto principale del programma che una volta avviato, sarà meglio utilizzare i puntatori per riferirci a un oggetto.
Quindi riprendendo l'esempio sopra, se voglio creare come primo passaggio del programma un oggetto TBox1, userò la seguente sintassi:
<sourcesyntaxhighlight lang=pascal>
VAR Box1:TBox1;
BEGIN
Riga 89:
...
END.
</syntaxhighlight>
</source>
 
Per creare l'istanza di un oggetto utilizzando un puntatore, prima devo definire un puntatore all'oggetto-tipo:
<sourcesyntaxhighlight lang=pascal>
PBox2: ^TBox2;
</syntaxhighlight>
</source>
 
A questo punto possiamo utilizzare la nuova versione della procedura del Turbo Pascal <code>new</code>. La funzione primaria di questa procedura è quella di creare una variabile dinamica e consentire al puntatore P passato come parametro di puntare su di essa.
Col Turbo Pascal 6.0 la procedura, sebbene ancora valida, è stata trasformata iìn funzione. Il suo compito è di rilasciare come valore un puntatore all'oggetto. La sua sintassi è questa:
 
<sourcesyntaxhighlight lang=Pascal>
P:= new(PBox2, Init);
</syntaxhighlight>
</source>
 
dove P è un puntatore generico e <code>Init</code> è il costruttore della classe TBox2 (i costruttori saranno trattati più avanti).