Differenze tra le versioni di "Pascal/Concetti fondamentali"

nessun oggetto della modifica
END;
</source>
 
==Il polimorfismo==
Il polimorfismo è un concetto un po' più avanzato dei precedenti, ma comunque importantissimo. Polimorfismo vuol dire "molte forme", e diciamo subito che si riferisce a una procedura o una funzione. Facciamo subito un esempio: supponiamo di voler creare un programma per disegnare delle figure piane (tringoli, rettangoli, circonferenze ecc.).
Per prima cosa creiamo un oggetto comune, per esempio <code>figurabidimensionale</code>, e supponiamo che contenga una procedura di nome <code>Disegna</code>. La dichiareremo <code>virtual</code>, ovvero non la definiamo nell'oggetto <code>figurabidimensionale</code>, ma la definiamo negli oggetti che ereditano questo. Comunque i metodi virtuali sono un concetto che esporremo più avanti.
 
Da questo oggetto erediatiamo altri oggetti di nome <code>triangolo</code>, <code>rettangolo</code>, <code>circonferenza</code>, e definiamo il metodo <code>Disegna</code> per ogni oggetto (che ovviamente avrà una diversa implementazione per ciascuno).
 
Adesso, supponiamo che una procedura più avaanti si serva del metodo <code>draw</code>, ma non specifica quale oggetto stiamo utilizzando. Per esempio:
 
<source lang=pascal>
PROCEDURE UnaProcedura(figura:figurabidimensionale);
BEGIN
...
...
...
figura.Draw;
...
...
...
END;
</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.
 
Questa pratica è chiamata '''polimorfismo'''.
[[Categoria:Pascal|Concetti fondamentali della OOP]]
381

contributi