Java/Classi e oggetti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 7:
Una '''classe''' è un tipo di dato creato dal programmatore, ed è l'essenza della [[w:Programmazione orientata agli oggetti|programmazione ad oggetti]].
 
La programmazione ad oggetti propone di vedere un programma come un insieme di entità, chiamate "oggetti", che interagiscono tra loro. Ogni oggetto dovrebbe rispecchiare un elemento della vita reale.
Il codice di un programma può essere lunghissimo, arrivare fino a milioni di righe di codice. Si rende necessaria, allora, una suddivisione del codice secondo certi criteri. La programmazione orientata agli oggetti, in particolare, propone di dividere il codice in parti ben precise, ciascuna delle quali occupa di un aspetto specifico dell'applicazione. L'applicazione viene costruita mettendole insieme e facendole interagire in modo appropriato.
Di seguito, si cerca di chiarire con esempi il concetto di ''classe'' a chi entra per la prima volta nel mondo della OOP.
 
===Primo esempio===
Ciascuna di esse presenta all'esterno un'interfaccia, che specifica quali operazioni può compiere, a prescindere da come siano effettivamente realizzate (implementazione). Questo significa che, nel caso si renda necessaria una modifica sul modo in cui un certo compito viene svolto (ad esempio, per correggere un errore), è più facile per il programmatore operare la modifica, proprio perché circoscriverà la manipolazione all'implementazione. Le altre componenti del programma, che conoscono ed utilizzano solo l'interfaccia, non devono essere modificate.
Si pensi ai tipi base, già visti nella sezione sui tipi. Un tipo è definito come ''un insieme di valori, sui quali sono definite determinate operazioni''.
 
I tipi base del Java soddisfano pienamente questa definizione. Ad esempio, il tipo ''int'' ammette 2<sup>32</sup> valori possibili e su ciascuno di essi sono definite sempre le stesse operazioni: somma (+), prodotto (*), modulo (%), ecc.<br/>
Anche il tipo ''boolean'' ha queste caratteristiche: esso ammette solo due valori, ''true'' e ''false'', e su entrambi sono definite le stesse operazioni: and (&&), or (||), not (!), ecc.<br/>
Come si vede, ognuno dei valori dei tipi esaminati corrisponde ad un elemento della vita mentale degli esseri umani (numeri, valori di verità).
 
Una classe è un tipo, i cui valori (chiamati ''oggetti'', o anche ''istanze della classe'' in questione), a differenza dei tipi base, sono in numero potenzialmente infinito (si possono creare tutti gli oggetti che si vuole, ovviamente memoria permettendo).
 
Su ciascuna delle istanze di una stessa classe, possono essere richiamate le stesse operazioni (dette ''metodi''); per esempio, su una classe ''Cane'' si può chiamare il metodo ''abbaia()'', oppure il metodo ''dormi()''. Metodi come questi possono essere considerati operazioni "unarie"; ma sono possibili anche metodi che accettano argomenti, come ad es. ''camminaInAvanti(int passi)''.
 
Un oggetto dovrebbe rappresentare un elemento della vita reale.
 
La programmazione ad oggetti propone di vedere un programma come un insieme di entità, chiamate "oggetti", che interagiscono tra loro. Ogni oggetto dovrebbe rispecchiare un elemento della vita reale.
 
===Altro esempio===