Java/Classi e oggetti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 14:
 
===Altro esempio===
Immaginiamo di dover fare un programma per gestire gli stipendi all'interno di un'azienda. Un programmatore proveniente da un ''bacgroundbackground'' di programmazione procedurale creerà un vettore di stringhe per il nome dei dipendenti, un altro per il cognome e un vettore di <code>int</code> per gli stipendi. Dopo aver creato i codici che chiedono i dati e li inseriscono o li mostrano a richiesta, il programma funziona e siamo contenti.<br/>
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/>
Peccato che l'azienda decida poi di aprire una filiale in India. Adattiamo il programma anche alle Rupie e i dipendenti indiani ricevono uno stipendio ridicolo.<br/>
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 (o a un'entità che lo rappresenta all'interno del programma) 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 valorvalore eiddi questo stipendio. Un altro punto del programma si occupa di gestire la nazionalità del dipendente e la valuta in cui bisogna calcolare lo stipendio. In questo modo, se un giorno dovremo aggiornare il programma per aggiungere una nuova valuta, la funzione di stampa resterà la stessa, mentre dovremo cambiare solo quel pezzo di programma in cui avevamo scritto il codice che gestisce i dati del dipendente.
 
Sappiamo che tutti i dipendenti del mondo hanno una cosa in comune: essi devono ricevere uno stipendio, espresso in una certa valuta. Anzi, sappiamo che ''dobbiamo poter chiedere loro'', in qualche modo, quale sia il valore dello stipendio espresso nella sua valuta locale. Questo "chiedere un'informazione" all'entità che rappresenta il dipendente non è altro che eseguire una certa operazione; operazione che si chiama ''metodo''.
 
Possiamo risolvere, quindi, il problema mettendo insieme tutti i dati relativi a un singolo dipendente. Definiamo un tipo di dato "Dipendente" e gli diamo 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 i metodi di Dipendente. Aggiungere una nuova caratteristica al dipendente vuole dire modificare solo il tipo di dato Dipendente e non tutto il programma che ne fa uso.