Java/Classi e oggetti: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 3:
Vediamo uno dei componenti fondamentali dei programmi in Java, la '''classe'''.
==
Una '''classe''' è un tipo di dato creato dal programmatore, ed è l'essenza della [[w:Programmazione orientata agli oggetti|programmazione ad oggetti]].
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.
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.
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===
Immaginiamo di dover fare un programma per gestire gli stipendi
Dopo qualche anno, però, l'azienda apre una filiale negli USA. Poiché il nostro programma era stato scritto presupponendo che la valuta da usare fossero gli Euro, dobbiamo riadattare il programma perché gestisca anche i dollari. Facile: creiamo un vettore stringa che contiene l'indicazione della valuta e riadattiamo tutto il programma per gestirla.<br/>
Perché? Perché quando avevamo due valute abbiamo creato un if di questo tipo:
Riga 23:
che ora, nel caso di tre valute possibili non è più corretto.
Sarebbe bello che la funzione che stampa a video il valore della valuta potesse, in qualche modo, chiedere direttamente al dipendente qual è il valore del suo stipendio in dollari, in Euro o in rupie. C'è bisogno di qualcuno che si occupi di gestire tutti i dati relativi al dipendente. In questo modo, alla funzione di stampa non "interesserà" più se il dipendente vive in India, in America o in Europa: le interessa solo sapere che il dipendente deve ricevere un certo stipendio, e quale è il valor eid questo stipendio.
Per evitare di passare notti insonni a affrontare situazioni del genere sarebbe bello poter definire un tipo di dato "Dipendente" e dargli tutte le caratteristiche del dipendente (nome, ruolo, stipendio) in modo da condensare in esso tutto ciò che riguarda la sua logica di gestione e creare il resto del programma richiamando le funzioni interne di Dipendente. Aggiungere una nuova caratteristica al dipendente vorrebbe dire modificare solo il tipo di dato Dipendente e non tutto il programma che ne fa uso.▼
▲
Il tipo di dato che abbiamo creato è una classe.
===Sintassi===
La classe ha lo scopo di delineare le proprietà e le caratteristiche degli elementi che ci servono. Questi elementi possono poi essere creati realmente (''istanziati'') e diventano così “oggetti”: le istanze della classe sono gli oggetti.
La classe è un po' come un modello di qualcosa e l'oggetto è questo qualcosa realizzato concretamente. Gli elementi che compongono la classe possono essere: tipi primitivi, metodi, costruttori, oggetti di altre classi, classi stesse. Questi elementi sono tutti racchiusi in un contenitore (la classe) “class”. Vi è quindi la classe e gli oggetti: sono due cose diverse. Grazie all'esistenza delle classi possiamo creare gli oggetti. Gli oggetti sono allocati in memoria dalla JVM.
|