Pascal/Concetti fondamentali: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
m perché
Nessun oggetto della modifica
Riga 76:
 
Questa pratica è chiamata '''polimorfismo'''.
 
==Come crere l'istanza di un oggetto==
Quando definiamo un oggetto con la clausola <code>TYPE</code> in realtà l'oggetto non è stato creato, ma ne è stata definita la struttura, cioè la '''classe'''. Creare un'istanza di un oggetto vuol dire allocarlo nella memoria heap. La memoria heap è una memoria con una struttura ad alberi che, a differenza dello stack, vi si accede tramite i puntatori, ovvero variabili speciali che contengono un indirizzo di memoria. Quindi un oggetto creato, o meglio, allocato, ha sempre un puntatore per il riferimento.
 
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:
<source lang=pascal>
VAR Box1:TBox1;
BEGIN
...
...
...
END.
</source>
 
Per creare l'istanza di un oggetto utilizzando un puntatore, prima devo definire un puntatore all'oggetto-tipo:
<source lang=pascal>
PBox2: ^TBox2;
</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:
 
<source lang=Pascal>
P:= new(PBox2, Init);
</source>
 
dove P è un puntatore generico e <code>Init</code> è il costruttore della classe TBox2 (i costruttori saranno trattati più avanti).
 
 
 
[[Categoria:Pascal|Concetti fondamentali della OOP]]