T.I. feat Rihanna - Live Your Life

martedì 11 novembre 2008

videocassetta!!

oggi, durante l'ora di informatica abbiamo guardato una cassetta per introdurre la programmazione orientata agli oggetti(OOP).

I TRE PUNTI PRINCIPALI SONO

1) incapsulazione
2) ereditarietà
3) polimorfismo


Vediamo cosa dice la zia Wikipedia

1)L'incapsulamento è la proprietà per cui un oggetto contiene ("incapsula") al suo interno gli attributi (dati) e i metodi (procedure) che accedono ai dati stessi. Lo scopo principale dell'incapsulamento è appunto dare accesso ai dati incapsulati solo attraverso i metodi definiti, nell'interfaccia, come accessibili dall'esterno. Gestito in maniera intelligente, l'incapsulamento permette di vedere l'oggetto come una black-box, cioè una scatola nera di cui, attraverso l'Interfaccia sappiamo cosa fa e come interagisce con l'esterno ma non come lo fa. I vantaggi principali portati dall'incapsulamento sono: robustezza, indipendenza e l'estrema riusabilità degli oggetti creati.

2)L'OOP prevede un meccanismo molto importante, l'ereditarietà, che permette di derivare nuove classi a partire da classi già definite. L'ereditarietà permette di aggiungere membri ad una classe, e di modificare il comportamento dei metodi, in modo da adattarli alla nuova struttura della classe.
Da una stessa classe è possibile costruire diverse classi derivate. Da una classe derivata è possibile derivarne un'altra con lo stesso meccanismo.
Sintatticamente, una classe può essere definita come derivata da un'altra classe esistente. In molti linguaggi la classe derivata, o sottoclasse, eredita tutti i metodi e gli attributi della classe "genitrice", e può aggiungere membri alla classe, sia attributi che metodi, e/o ridefinire il codice di alcuni metodi.
L'ereditarietà può essere usata come meccanismo per gestire l'evoluzione ed il riuso del software: il codice disponibile definisce delle classi, se sono necessarie modifiche, vengono definite delle sottoclassi che adattano la classe esistente alle nuove esigenze. In C# per far ereditare una classe a un'altra si usa il simbolo ":"


3)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 in una gerarchia in cui le classi Cane e Gatto discendono dalla SuperClasse Animale potremmo avere il metodo mangia() che restituisce la stringa "osso" se eseguito sulla classe Cane e "pesce" se eseguito sulla classe Gatto. I metodi che vengono ridefiniti in una sottoclasse sono detti "polimorfi", in quanto lo stesso metodo si comporta diversamente a seconda del tipo di oggetto su cui è invocato.
In linguaggi in cui le variabili non hanno tipo, come
Ruby, Python e Smalltalk è possibile richiamare un qualsiasi metodo su di un qualsiasi oggetto, quindi il polimorfismo è molto più esteso, sebbene ciò comporti la possibilità di errori a runtime. Tali errori sono eliminabili da linguaggi puramente statici, ma ciò è possibile solamente riducendone l'espressività oppure accettando dei buchi nel type system (i NullPointerException di Java, ad esempio).
Le buone regole di programmazione a oggetti prevedono che quando una classe derivata ridefinisce un metodo, il nuovo metodo abbia la stessa semantica di quello ridefinito, dal punto di vista degli utenti della classe.

Nessun commento: