22

Jul

Uomo e Donna alle prese con OOP

Ciao a tutti

 

Ieri all’Aperitivo DNL, scherzando con Roberto Freato e Andrea Soldano, mi sono ricordato di questi concetti importanti e mi son detto, perchè non parlarne?!?!!?

 

OOP significa Object Oriented Programming (http://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti)

Quando programmiamo, abbandonando appunto l’approccio procedurale (migliaia di linee di codice dove il flusso di esecuzione era dato dal numero della riga del codice stesso), andiamo invece a modellare un universo parallelo fatto di cose… queste cose (un pianeta, una nazione, una persona, un elettrodomestico, una fattura, etc) sono chiamati oggetti

Un oggeto è una istanza di se stesso (io sono una persona, la persona Antonio, quindi sono una istanza di tipo Persona), per semplicità, la definizione di oggetto la chiamiamo classe e la sua rappresentazione reale la chiamiamo appunto istanza.

Le classi definiscono le proprietà (di persona ad esempio lo sono il nome, il peso, l’età, etc) e i medoti (le azioni che la classe può eseguire, es. mangia, vai in bagno, etc), che l’istanza ha a sua disposizione.

 

Facendo un esempio:

Creiamo una classe di nome Persona con le proprietà Nome e Peso e il metodo Mangia() che aumenta il peso di 1kg Smile.

 

Il fatto che Mangia() aumenti il peso di 1kg, in realtà a chi usa l’oggetto dall’esterno, non fa alcuna differenza. Il fatto che l’utilizzatore l’oggetto sia ignorante in tal senso, cioè il fatto che l’oggetto nasconde come implementa il suo metodo (comportamento), è definito incapsulamento. Quindi l’incapsulamento è il principio tale per cui un oggetto nasconde all’esterno ciò che avviene al suo interno.

 

Da bravo analista, il programmatore comprende che le persone non sono tutte uguali…….. e quindi crea due nuove classi di nome Uomo e Donna entrambe che ereditano da Persona.

Avremo a questo punto, grazie al principio dell’ereditarietà, delle classi che hanno a loro disposizione proprietà e metodi della classe base.

Quindi sia Uomo che Donna avranno automaticamente Nome, Peso e Mangia(), grazie al principio dell’ereditarietà.

Quindi l’ereditarietà è il principio tale per cui una classe figlio eredita comportamenti e proprietà della classe padre/madre.

Ma, visto che ogni classe figlio può a sua volta aggiungere nuove proprietà e metodi, così come anche modificarli, noi andremo per bontà d’animo, ad aggiungere a Donna la proprietà Marito di tipo Uomo e il metodo FareShopping() che non vi spiego cosa fa alla proprietà Marito di Donna (ingrassamento, calvizie precoce, riduzione delle risorse economiche…), ma andremo anche a modificare il comportamento di Mangia(), andando ad aggiungere solo 0.5kg e non più 1….. perchè la donna ingrassa di meno….. altrimenti chi la sente…..

 

Il principio tale per cui Uomo e Donna sono sostituibili alla propria classe base, perchè di fatto sono anche entrambe Persona, ma hanno due comportamenti differenti del metodo Mangia() perchè in Donna è diverso, e tale per cui due Persona (una Donna, una Uomo) hanno un comportamento differente nel metodo Mangia è chiamato polimorfismo

 

Spero di aver scritto qualcosa di sensato in fin dei conti Smile

a presto

by Antonio Esposito on 7/22/2011