Classi Singole   Home Su Classi Singole Ereditarietà

                                                                                         


 

 

Classe singola: Bancomat. Difficoltà bassa.

Descrizione

Tipo: Console. Si vuole realizzare una classe che simuli un bancomat. Strutturate lo stato interno tenendo conto che in ogni istante deve essere possibile sapere quante banconote da 50, 20 e 10 euro sono attualmente disponibili. Un costruttore servirà allora a creare un bancomat indicando quante banconote di ciascun taglio sono disponibili in partenza. Un secondo costruttore consentirà di specificare solo il numero delle banconote da 10 (nota: sarebbe opportuno che il secondo costruttore sfruttasse il primo …).

 Aggiungere un metodo per interrogare il bancomat al fine di sapere il totale dei soldi in esso custoditi. Aggiungete un metodo bool Togli50(parametro) che serve a diminuire del numero indicato i pezzi da 50; se l’operazione è possibile il metodo restituisce true, altrimenti false. Nel programma principale create un bancomat ed interrogatelo visualizzando il totale dei soldi in esso contenuti. Togliete alcuni pezzi da 50 ed interrogatelo di nuovo. Aggiungere il metodo String[] Prelievo(parametro) che serve a gestire un prelievo pari alla cifra indicata. Il valore restituito è  un vettore di 4 stringhe: l’esito dell’operazione (riuscita / fallita) ed il numero di banconte da 50, 20 e 10 usate).

Formato    .zip della cartella della soluzione/progetto:
Prelievo Bancomat.zip

 

 

 

Classe singola: Cronometri. Difficoltà media.

Descrizione

Tipo: Console. Realizzare una classe che rappresenta un cronometro (per gare di atletica di velocità) con ‘scatti decimali’. Esso segna secondi, decimi, centesimi e millesimi in questa forma: s.d.c.m; ad esempio 22.7.9.5 significa 22 secondi, 7 decimi, 9 centesimi e 5 millesimi.  Chiamate la classe ‘Cronometro’. Due costruttori. Il primo serve a creare un cronometro impostando il tempo in modo completo con secondi, decimi, centesimi e millesimi. Al momento della creazione di un cronometro i secondi non possono superare 59 (il costruttore deve scartare i secondi in eccesso); similmente per decimi, centesimi e millesimi (il costruttore scarterà quelli che eccedono 9). Quindi se si tenta di creare un cronometro con s=67, d=12, c=976, m=12323 in realtà deve essere creato il cronometro con orario 59.9.9.9. Il secondo costruttore imposta il cronometro in base al numero di decimi specificato; devono essere rifiutati valori maggiori di 200 decimi; valori superiori a 9 decimi modificano i secondi e memorizzano nei decimi il resto (ad esempio con 48 decimi si crea il cronometro 4.8.0.0).

Definire la property (o i classici metodi get/set se le properties non sono ancora state affrontate a livello teorico) che permette di ottenere od impostare i secondi. Definire un metodo per ottenere la stringa corrispondente al tempo completo (es. 22.7.5.2). Ridefinire l’operatore ++: viene restituito un cronometro con i millesimi incrementati di uno (eventualmente regolare correttamente anche i centesimi, i decimi ed i secondi come accadrebbe nel caso limite 22.9.9.9 che genererebbe l’orario 23.0.0.0). 

Nel main dell’ipotetico programma creare due cronometri (uno con un costruttore ed uno con l’altro) e visualizzare il loro tempo; azzerare poi i secondi del primo cronometro e visualizzare il tempo.

Opzionale (se volete scervellarvi un pochino con divertimento assicurato): nel metodo ++  fate passare veramente un millisecondo con System.Threading.Thread.Sleep(1); poi nel programma principale con un ciclo for per 5000 volte incrementate un cronometro  e visualizzate il tempo (per ottenere la simulazione visiva di un vero cronometro fate visualizzare il tempo sempre nello stesso punto dello schermo con Console.SetCursorPosition(x, y) dove x=colonna, y=riga.

 Definite poi la classe dei ‘CronometriEstesi’ che deriva dalla precedente. Un oggetto di questa classe viene dapprima creato come se fosse un ‘CronometroDecimale’ ma gestisce centesimi e millesimi in forma ‘estesa’; ad esempio se un cronometro segna 22.5.3.9 un cronometro esteso segnerà 22.5.53.539. Traccia: il costruttore convertirà subito i centesimi dalla forma decimale a quella estesa con un semplice calcolo. Il metodo ++ dovrà resettare a 0 i centesimi ogni 100 centesimi (e non ogni 10 come prima) e resettare i millesimi a 0 ogni 1000 millesimi (e non ogni 10 come prima). Suggerisco anche di ridefinire il metodo LeggiOrario in modo che formatti i centesimi a due cifre e millesimi a 22.0.7.1 diventa 22.0.07.071. Provate infine il ciclo di incremento come già fatto con i cronometri normali.

Formato    .zip della cartella della soluzione/progetto:
Prelievo Cronometri e Cronometri Estesi.zip

 

 

Classe singola: Contatti. Difficoltà bassa.

Descrizione

Tipo: Console. Realizzare una classe per rappresentare la tipica scheda dati di un contatto (un cliente, un amico ecc.) normalmente disponibile nei programmi di posta elettronica (la rubrica). La scheda deve contenere i dati anagrafici essenziali (cognome, nome, indirizzo, telefono ed email). Si decide di mettere a disposizione due costruttori: il primo serve a creare un contatto quando sono noti tutti i dati. Il secondo quando sono noti solo cognome e nome (i dati mancanti verranno valorizzati con valori di default). 

Definire la property (o i classici metodi get/set se le properties non sono ancora state affrontate a livello teorico) che permette di ottenere od impostare il cognome. Definire un metodo per ottenere la scheda completa del contatto, una stringa che riproduce la seguente etichetta:

Mario Rossi - Via Trento 28, Tel. 0375/43295 - email: RossiM@tuttoweb.it

Nel main dell’ipotetico programma creare due contatti (uno con un costruttore ed uno con l’altro); copiare il cognome del primo contatto nel secondo; visualizzare la scheda completa del secondo contatto. Definire un vettore di 30 contatti; scrivere il ciclo for che carica il vettore.

Formato    .zip della cartella della soluzione/progetto:
Prelievo Contatti.zip

 

Classe singola: date. Difficoltà bassa.

Descrizione

Tipo: Console. Esempio di classe con overloading costruttori e overloading degli operatori di autoincremento e autodecremento (++  e --) per incrementare/decrementare di un giorno una data qualsiasi.

Formato    .zip della cartella della soluzione/progetto

 

Prelievo PDate.zip


Classe singola: Dadi. Difficoltà bassa.

Descrizione

Tipo: Console. Simulazione di un dado a N facce.

Formato    .zip della cartella della soluzione/progetto

 

Prelievo Dadi.zip


Classe singola: numeri binari. Difficoltà media.

Descrizione

Tipo: Console. dà la possibilità di creare un numero binario usando una stringa di 0 e 1 oppure un numero intero che viene automaticamente convertito nella stringa binaria corrispondente; offre un metodo per togliere zeri inutili in testa e per convertire il numero binario in decimale.

NEW (30-11-06):  aggiunto overloading operatore + e ++.

Formato    .zip della cartella della soluzione/progetto

 

Prelievo Progetto


Classe singola: frazioni. Difficoltà media.

Descrizione

Tipo: Console. Dà la possibilità di creare una frazione a partire da numeratore e denominatore come in Frazioni(3,4) per ottenere 3/4, oppure a partire da un intero come in Frazioni(7) per ottenere 7/1, oppure a partire da una stringa come in Frazioni("348/29"), oppure a partire da un numero decimale come in Frazioni(31.95775); le frazioni vengono automaticamente ridotte ai minimi termini; sono stati ridefiniti alcuni operatori standard in modo da poter scrivere ad esempio espressioni come f3 = f1 + f2 con f1, f2 ed f3 tutte frazioni.

Formato    .zip della cartella della soluzione/progetto

 

Prelievo Progetto

 


Tutti i marchi registrati e i nomi dei prodotti menzionati appartengono ai rispettivi proprietari.

Inviare a camuso@bigfoot.com un messaggio di posta elettronica contenente domande o commenti su questo sito Web.

Aggiornato il: 04-11-07.