Programmazione orientata agli oggetti: Overriding, Overloading, e Late Binding

Programmazione orientata agli oggetti: Overriding, Overloading, e Late Binding

Nella programmazione orientata agli oggetti, con le classi estese (ereditarietà) e del polimorfismo, è possibile definire metodi che manipolano oggetti senza sapere di che tipo sono. In questo modo è possibile gestire codice che non dipende da uno specifico tipo. Il problema che sorge è: come fa il sistema a sapere nel momento della compilazione che codice considerare se non sa che tipo di oggetto dovrà trattare? Le funzioni chiamate generate da un sistema non OOP, sono dette “early binding”: significa che il compilatore genera una chiamata ad una specifica funzione ed il linker risolve la chiamata. Il paradigma ad oggetti usa il concetto di “late binding“. Quando viene richiamato un metodo, il codice non determina la funzione finchè non è a runtime. Il compilatore assicura che il metodo esiste e definisce il tipo dell’argomento di ritorno, ma non sa quale sarà il codice che dovrà eseguire.

Programmazione orientata agli oggetti: Overriding, Overloading, e Late Binding

Ogni metodo è dotato di una firma, signature, costituita dal nome, dal numero e tipo dei parametri. Due metodi possono avere lo stesso nome nel caso in cui siano dotati di firme diverse, ovvero di un diverso numero o tipo di parametri: overloading. Quando si invoca il metodo il compilatore confronta il numero e il tipo degli argomenti per determinare il metodo che corrisponde alla particolare firma.

L’overriding di un metodo, invece significa sostituirne l’implementazione in modo tale che nel momento in cui il metodo viene invocato su di un oggetto della sottoclasse, ne venga invocata la versione effettivamente definita dalla sottoclasse. Quando si stanno ridefinendo dei metodi, le firme e i tipi di dato restituiti devono essere gli stessi del metodo corrispondente nella superclasse.

Precedente Programmazione orientata agli oggetti: Che cos'è il polimorfismo Successivo Programmazione orientata agli oggetti: Object Identifier Definition (OID)

Lascia un commento

*