Early Binding o Late Binding quale dei due implementa il Polimorfismo?

Giorgio Borelli

tecniche di programmazione OOP per implementare il polimorfismoChi mastica OOP (Object Oriented Programming - Programmazione orientata agli ogetti) sà bene cosa sia il Polimorfismo, il quale costituisce uno dei tre pilastri fondamentali della OOP, gli altri due sono l'Eredità e l'Incapsulamento.

Per Polimorfismo s'intende la capacità di classi derivate d'implementare lo stesso metodo della classe madre con comportamenti diversi, infatti polimorfico deriva dal greco e letteralmente significa "avere molte forme". I linguaggi procedurali come il Pascal o il C sono "monomorfi", in quanto le loro funzioni implementano un solo tipo o meglio un solo comportamento, con linguaggi OOP quali C#, VB.NET, Java o lo stesso C++ il concetto di polimorfismo (strettamente legato al tipo) assume concettualmente un'importanza fondamentale in quanto consente di approssimare la realta con maggiore efficacia, con il Polimorfismo infatti possiamo mandare agli oggetti (instanze di classi) lo stesso messaggio ed ottenere da essi comportamenti diversi, sul modello della vita reale, in cui termini simili determinano azioni diverse, in base al contesto in cui vengono utilizzati.

L'obiettivo principale del Polimorfismo è quello di aggiungere flessibilità e favorire il riuso del codice (in questi casi non potremmo fare affidamento sul compilatore per scoprire errori di uso dei tipi nella compilazione).

Ma come implementare il Polimorfismo nella programmazione ad oggetti? E cosa sono il late binding e l'early binding? E come sono legati al polimorfismo?

Prosegue...

Categorie: Programmazione

Tags:

I Delegate in C Sharp

Giorgio Borelli

Cosa sono e come funzionano i delegate in C#Un delegate in C# viene spesso descritto come un puntatore a funzione (in analogia con il C++), un ulteriore paragone e quello con le interfacce, un delegate (come le interfacce per le classi) specifica la signature (firma) del metodo che successivamente sarà invocato dai metodi degli oggetti che ne rispettano la firma.

Senza nulla togliere alle analogie che sussistono realmente tra i delegate ed i puntatori a funzioni e le interfacce, penso che per chi è alle prime, una tale definizione può generare un pò di confusione, allora come spiegare cos'è un delegate in C#?

Prosegue...

Categorie: C#

Tags: ,

Differenze tra classi astratte ed interfacce

Giorgio Borelli

quali sono le caratteristiche e le principali differenze tra le classi astratte e le interfacce nella programmazione orientata agli oggettiLe classi astratte e le interfacce sono due concetti fondamentali della programmazione orientata agli oggetti (OOP, Object Oriented Programming), a prescindere dal linguaggio usato, sia questo Java, C++ o C#. L'importanza di conoscere i concetti teorici che stanno alla base di questi due elementi, è fondamentale per un buon programmatore; capire la differenza tra classi astratte ed interfacce permette di valutare in modo corretto quando usare l'una e quando usare l'altra.

Sia le classi astratte che le interfacce non possono essere instanziate poichè al loro interno definiscono soltanto i metodi e le proprietà che dovranno essere implementate dalle classi che deriveranno da esse, rappresentano pertanto un modello, oserei dire un "template" per le classi che una volta derivate da esse ed instanziate ne implementeranno il comportamento.

Classi astratte ed interfacce, così simili tra loro, possono confondere le idee ai neo programmatori che per le prime volte si avvicinano a questi concetti ed al polimorfismo della OOP, ma sebbene le similitudini sono molte vi sono delle sottili ma fondamentali differenze concettuali che è bene avere chiare in mente, per capire quando usare una classe astratta e quando una interfaccia.

Prosegue...

Categorie: C#

Tags: , ,