Grazie per i preziosi consigli:-) Ma sono stato via e non ho potuto andare avanti in questo esercizio.

Ho buttato giù due righe per impostare nella mia testa il da farsi.

Considerando che chiede la gestione della sola parte relativa all'operatore telefonico, e non del cliente, ci limiteremo ad una strutturazione generale della classe Gestore. Infatti per poter testarne il funzionamento completo dovremmo perlomeno creare un'ulteriore classe cliente che gestisca a mandi messaggi al suo gestore.

Una prima analisi della situazione, ci dice che la classe Gestore dovrà essere in grado di ricevere messaggi con il codice dell'operazione che intendono svolgere.
La classe gestore, verificherà la possibilità di svolgere l'operazione richiesta calcolandone il costo, o perlomeno il costo iniziale se si tratta di una chiamata. In questo caso il gestore potrebbe verificare la possibilità per la sim di accedere al servizio ed in questo caso il metodo potrebbe restituire al cliente il tempo massimo di chiamata. In questo modo qualora il cliente arrivasse a zero minuti disponibili verrà interrotta la chiamata e azzerato il credito del cliente.
Se invece il cliente non sfrutterà tutti i minuti disponibili, a fine chiamata il cliente invierà al gestore un messaggio contenente la durata della chiamata, in modo da sottrarre il credito necessario.
Se il credito del cliente fosse inferiore a quello richiesto non permetterà di accedere al credito ma invierà un sms al cliente invitandolo a effettuare una ricarica.
La ricarica avverrà nello stesso modo, cioè tramite l'invio di un sms al gestore contenente un codice univoco che identifica l'operazione di ricarica e un codice che corrisponderà ad uno dei codici per ricarica precedentemente emesso dal gestore, e salvati in un file o database. Una volta trovato il codice corrispondente, verrà inviato al cliente un sms di conferma dell'avvenuta ricarica.

Per poter visualizzare e gestire i valori dei clienti la classe Gestore dovrà avere un arrya di variabili d'ambiente Cliente[] contenente:
• Nome | numero | piano | attivazione | credito | sms_residui | internet_residuo | minuti_residui | mms_residui

In questa breve analisi tralasceremo la possibilità di attivare più servizi, e considereremo tutti i clienti aventi la possibilità di inviare sms, mms, connettersi a internet e chiamare ovviamente.

Il prezzo di ciascun servizio sarà settato dal valore piano. In base a quel valore ci sarà una tabella dove ci saranno le corrispondenze tra il piano scelto e il prezzo di tutti i servizi ad esso associati.
Bisognerà tener conto della data di attivazione del piano in quanto potrebbero esserci dei piani a pagamento mensili con il traffico totalmente o parzialmente compreso nel canone. Questo significa che bisognerà avere dei contatori che si azzereranno ogni 30 giorni dove verificare quando l'utente terminerà il suo traffico, sms, internet e andrà poi a pagare con tariffa differente.

Questi contatori di traffico residuo saranno da inglobare in qualche modo nella tabella con i dati del cliente. Questa implementazione è la più semplice ma è quella meno intelligente per la gestione della memoria. In questo modo anche per chi non avrà questo genere di opzione saranno allocati dei settori di memoria non utilizzati.
L'ideale sarebbe infatti gestire il tutto con dei database relazionali, identificando il cliente con un id univoco e da li creare le tabelle necessarie per strutturare al meglio tutti i dati necessari.

La classe Gestore dovrà avere un metodo che sarà invocato ogni giorno che verificherà la scadenza del piano per ciascuna sim, e in quel caso procederà a sottrarre il credito per il mese successivo e azzererà i contatori. Qualora il cliente non abbia credito sufficiente verranno disabilitati i servizi inclusi nell'offerta e lasciato solo quelli a consumo. Alla prima ricarica effettuata dall'utente, il gestore dovrà verificare se questi avesse avuto un piano tariffario in stato di blocco, ed in caso positivo, se il credito lo permetterà, riabilitarlo.

Cosa ne pensate? Vado oltre e inizio a scrivere la classe?

Grazie per il supporto ragazzi.

Ciao