Programmazione Object Oriented

Premessa: questo breve post non vuole essere una trattazione esauriente ed esaustiva circa lĺargomento ma solo ed esclusivamente un appunto meritevole di approfondimenti, in quanto ci sono tonnellate di libri che trattano lĺargomento in modo certamente migliore di quanto possa fare qualsiasi sito web.

La Programmazione Orientata agli Oggetti Ŕ un paradigma che prevede il raggruppamento in un’unica entitÓ sia di strutture dati che di procedure che operano su di esse e prevede l’uso di classi, oggetti e tecniche chiamate incapsulamento, ereditarietÓ, polimorfismo e binding dinamico.

Classi

Sono uno strumento per costruire strutture dati che contengono non solo dati ma anche il codice per gestirli, quindi all’interno delle classi troviamo:

Attributi: ovvero i dati da gestire

Metodi: ovvero le procedure che operano su tali dati

Oggetto

Un oggetto viene definito come un’istanza di una classe, questo permette di utilizzare il principio noto come Information Hiding, il quale dice che si deve accedere agli attributi dell’istanza solo mediante i metodi messi a disposizione dall’oggetto stesso.

Incapsulamento

E’ la proprietÓ per cui un oggetto contiene al suo interno gli attrbuti (dati) ed i metadati (procedure) per accedono ai dati stessi. Lo scopo principale dell’incapsulamento Ŕ dare accesso ai dati incapsulati solo mediante metadati definiti nell’interfaccia.

EreditarietÓ

La programmazione orientata agli oggetti prevede un meccanismo molto importante: l’ereditarietÓ, la quale permette di aggiungere membri ad una classe e di modificare il comportamento dei metadati in modo da adattarli alla nuova struttura della classe. Una classe ereditaria, eredita tutti i metadati e gli attributi della classe genitrice e pu˛ aggiungere membri, attributi e metodi alla classe in modo tale da poterne ridefinire il comportamento.

Polimorfismo

La possibilitÓ che le classi derivateá implementino in modo differente i metodi e le proprietÓ dei propri antenati, rende possibile che gli oggetti appartenenti a delle sottoclassi di una stessa classe rispondano diversamente alle stesse istruzioni ad esempio

             Animale
  +-------------|--------------+
  |                            |
Cane                         Gatto

Considerando Cane e Gatto come classi derivate da Animale, e considerando che presentano entrambe il metodo mangia(), questo metodo in un caso potrebbe restituire osso nell’altro pesce in quanto potremmo ridefinirlo in entrambe le classi.

Bindig Dinamico

Si parla di Bindig Dinamico quando la versione del metodo da usare viene scelta sulla base del tipo di oggetto effettivamente contenuto in una variabile a runtime invece che al momento della compilazione.

Commenti

commenti

Lascia un commento