Object Orientend Programming

In principio era la programmazione strutturata.

Un programma altro non era che un lungo flusso di istruzioni intervallato da un inestricabile ammasso di cicli, condizioni e salti.

Al più si poteva sperare in una suddivisione di funzioni separate dal flusso principale fino a creare un'altrettanto inestricabile e interminabile libreria.

Ma questo lungo flusso di codice era estremamente inadatto per riprodurre la complessità dei problemi del mondo reale... nel mondo ci sono uomini che cammino, automobili che viaggiano lungo la strada, luci che si accendono. Come avvicinarsi ad una tale complessità con un unico lungo flusso di codice?

impossibile.

Servivano paradigmi nuovi, strutture completamente differenti che andassero oltre ai cicli, alle condizioni e ai salti. Serviva un modo completamente diverso di pensare che abbandonasse definitivamente la logica sequenziale della macchina.

La programmazione orientata all'oggetto è sconvolgente per chi è abituato alla logica della vecchia programmazione strutturata, anzi, spesso per insegnare OOP ho dovuto prima distruggere le convinzioni e le conoscenze di programmatori esperti ma abituati a pensare in modo completamente differente.

Sembra banale dirlo ma il punto cardine della programmazione orientata all'oggetto è:

L'OGGETTO!

Guardati attorno. Probabilmente davanti ai tuoi in questo momento hai uno schermo: è un oggetto. se alzi lo sguardo vedrai delle sedie: ognuna di esse è un oggetto. magari vedi anche dei colleghi: anche loro sono oggetti.

ogni oggetto avrà delle caratteristiche proprie come il colore, la dimensione, il sesso: tutti questi parametri vengono chiamati attributi dell'oggetto.

ogni oggetto potrà eseguire delle azioni come accendersi, camminare, parlare: tutti queste azioni vengono chiamati metodi dell'oggetto

ogni oggetto avrà caratteristiche comuni ad altri oggetti, ad esempio un'automobile, una bicicletta, un motorino hanno in comune il fatto di permettere lo spostamento da un luogo ad un altro, sono tutti dei veicoli. in OOP si dice che veicolo è la classe di appartenenza di tutti questi oggetti.

metodi, attributi e classi sono i concetti fondamentali dell'OOP

noi programmeremo classi composte da attributi e metodi, e con esse creeremo tutti gli oggetti che ci serviranno per il nostro programma.

qui i cicli e le condizioni sono concetti 'secondari' relegati all'interno dei singoli metodi, tutto orbita attorno alle classi perché ogni cosa deve essere ridotta al concetto di oggetto.

Tutto è oggetto

Così scrivere un programma non significa più richiamare decine e decine di funzioni ma far interagire fra loro gli oggetti.

4 oggetti di classe persona li facciamo muovere (metodo di persona) su un oggetto automobile rossa (attributo di automobile), accendiamo l'automobile (metodo della classe automobile) e la facciamo guidare (metodo di  veicolo) da un oggetto persona fino all'arrivo.

La strada è un oggetto, l'auto è un oggetto e a sua volta le ruote sono un oggetto, i freni, il volante è un oggetto, è importante capire fino a che punto di dettaglio vogliamo spingerci perché potenzialmente il dettaglio raggiungibile è quasi infinito... come nella vita reale. oggetti composti da oggetti, che richiamano oggetti i cui attributi possono essere a loro volta oggetti. 

Ti voglio dire un piccolo trucco per riconoscere attributi e metodi. Prova a descrivere ciò che il tuo programma deve fare: ogni volta che userai un verbo non temere, sei certo di trovarti di fronte ad un metodo, ogni volta che usi un aggettivo o un nome sei di fronte ad un attributo.

se ti segni tutti verbi che hai usato prova a risalire ai rispetti soggetti e avrai trovato un oggetto, prova a raggruppare gli oggetti in insiemi logici e avrai scoperto le varie classi di appartenenza.

Per comprendere l'OOP è fondamentale capire il motivo per cui è nata: rappresentare la vita reale.

Basta pensare a CPU, registri, indirizzi di memorie, certo, sono tutte cose che continuano ad esistere ma, semplicemente, ci siamo spostati in un livello più alto, più vicino all'uomo e più lontano dalla macchina

Nel prossimo post parlerò dei tre pilastri fondamentali della OOP:

Ereditarietà, Polimorfismo, incapsulamento.

9 comments

yYxVlBfvI

ysUVGZDmY

YvegqBtLJhRbK

PYUTZHmuKw

ZwWuUzxiDX

sNJfLEUPTHZR

BzGfwlSemdFTM

yflKYMGHbunkawt

BmbxaYDqCyEv

wLXJprZyWCYacBD

Leave a comment