• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Info Polimorfismo, oriented-object-programming.

Mi.ke

Utente Master
Autore del topic
16 Giugno 2011
2.857
60
Miglior risposta
0
Polimorfismo - Programmazione orientata agli oggetti.


Salve,
nel Thread precedente abbiamo parlato di Ereditarietà ( http://www.sciax2.it/forum/java/ereditarieta-oriented-object-programming-680317.html ) nel caso non sapete cosa sia, vi invito a darvi una lettura prima di proseguire con il Polimorfismo >_>.


Abbiamo visto che, tramite l'ereditarietà, le sottoclassi ereditano gli attributi e i metodi delle sopraclassi e le estendono con l'aggiunta di nuovi attributi e nuovi metodi. Inoltre, nella programmazione ad oggetti, le sottoclassi possono ridefinire e sovrascrivere i metodi ereditati.


Il termine polimorfismo, in generale, indica la capacità di assumere più forme. Nella OOP, è strettamente legato all'ereditarietà e alla ridefinizione dei metodi.
Considerando una relazione di ereditarietà, le sottoclassi hanno la possibilità di ridefinire i metodi ereditati( mantenendo lo stesso nome) oppure lasciarli inalterati perché già soddisfacenti.

Il polimorfismo indica la possibilità per i metodi di assumere forme, cioè implementazioni, diverse all'interno della gerarchia delle classi.

Nei lingauggi ad oggetti sono presenti due tipi di polimorfismo:
-Overriding, o sovrapposizione dei metodi
-Overloading, o sovraccarico dei metodi.


Il primo, consiste nel ridefinire un metodo ereditato, con lo scopo di modificarne il comportamento. Il nuovo metodo deve avere lo stesso nome e gli stessi parametri del metodo che viene sovrascritto.

Vediamo un esempio di Overriding:


Cerchio
raggio
setRaggio()
circonferenza()
area()


Cilindro
altezza
setAltezza()
volume()
area()


La classe cilindro (estensione della classe Cerchio) presenta il metodo Area() sovrascritto come segue:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


Per il calcolo dell'area di un cilindro ci siamo avvalsi dei metodi Area() e Circonferenza() ereditati dalla classe cerchio.
Il metodo, che essendo ereditato resta inizialmente invariato, viene sovrascritto e quindi si comporta in un modo diverso, pur avendo lo stesso nome.


L'overloading di un metodo è la possibilità di utilizzare lo stesso nome per compiere operazioni diverse. Solitamente si applica ai metodi della stessa classe, che si presentano con lo stesso nome, ma con un numero o un tipo diverso di parametri.

Un esempio di overloading è il metodo println che consente di stampare su console, diversi tipi di parametri che vengono passati (Stringhe, numeri interi, etc.).
Esistono quindi diversi metodi println, con lo stesso nome, ma con parametri diversi.

Es:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!


Spero di essere stato abbastanza chiaro, se avete dubbi sapete cosa fare (chiedere :emoji_smiley:) e vi aiuterò.
Un saluto :bye: e alla prossima.