View Full Version : [Multilinguaggio]Idee Progetto Programmazione ad Oggetti
Salve a tutti,per un esame universitario devo fare un progetto c++ (ma è molto relativo rispetto alla domanda) usando qtcreator,con relativa GUI, in circa un mese e mezzo.
Si tratta di idee.
Le specifiche sarebbero:
-minimo 3 classi non banali (anche non matematiche\numeriche) con gerarchia minima (K--->Y Z).La gerarchia deve quindi comprendere due classi di cui una eredita dall’altra, e un’altra classe che non eredita nè è classe base di nessuna delle altre due.E ovviamente permesso ereditare tutte le classi da una ulteriore classe base comune.
Lo scopo del progetto è fare una calcolatrice estendibile mediante una interfaccia utente grafica.Questa calcolatrice dovrà essere in grado di gestire almeno tre diversi tipi di dati (non necessariamente numerici), la cui implementazione è lasciata allo studente.
Ho sentito molte proposte.Vanno da operazioni su vettori a una sorta di ricettario per la cucina in cui si fan operazioni sugli ingredienti.Il mio problema è trovare queste 3+ classi che non siano le solite funz trigonometriche o altre classi banali.
Qualcuno ha qualche spunto interessante? :)
pabloski
31-07-2012, 12:35
Mi lascia perplesso il concetto di calcolatrice che può elaborare dati non numerici.
Se ho capito bene dove vuoi andare a parare, si tratterebbe in primis di creare un'algebra ( cioè gli oggetti e le operazioni definite su di essi con relative regole ). In questo caso direi che un approccio matematico, fortemente teorico, è inevitabile.
Mi lascia perplesso il concetto di calcolatrice che può elaborare dati non numerici.
Se ho capito bene dove vuoi andare a parare, si tratterebbe in primis di creare un'algebra ( cioè gli oggetti e le operazioni definite su di essi con relative regole ). In questo caso direi che un approccio matematico, fortemente teorico, è inevitabile.
Esattamente,il termine calcolatrice diciamo che è molto generico ed estendibile da come si legge dalle specifiche.Ma si evince che è impossibile non avere un approccio matematico.
Il mio problema è trovare queste 3+ classi che non siano le solite funz trigonometriche o altre classi banali.
pabloski
31-07-2012, 12:52
Di sicuro c'è la classe che definisce l'algebra, contenente il contenitore per i dati e i metodi che implementano le operazioni.
In un'altra classe potresti mettere tutta l'interfaccia.
Una terza classe potrebbe contenere la logica che collega l'interfaccia e l'algebra.
[Kendall]
31-07-2012, 13:58
Salve a tutti,per un esame universitario devo fare un progetto c++ (ma è molto relativo rispetto alla domanda) usando qtcreator,con relativa GUI, in circa un mese e mezzo.
Si tratta di idee.
Le specifiche sarebbero:
-minimo 3 classi non banali (anche non matematiche\numeriche) con gerarchia minima (K--->Y Z).La gerarchia deve quindi comprendere due classi di cui una eredita dall’altra, e un’altra classe che non eredita nè è classe base di nessuna delle altre due.E ovviamente permesso ereditare tutte le classi da una ulteriore classe base comune.
Lo scopo del progetto è fare una calcolatrice estendibile mediante una interfaccia utente grafica.Questa calcolatrice dovrà essere in grado di gestire almeno tre diversi tipi di dati (non necessariamente numerici), la cui implementazione è lasciata allo studente.
Ho sentito molte proposte.Vanno da operazioni su vettori a una sorta di ricettario per la cucina in cui si fan operazioni sugli ingredienti.Il mio problema è trovare queste 3+ classi che non siano le solite funz trigonometriche o altre classi banali.
Qualcuno ha qualche spunto interessante? :)
Progetto by Tapparo? :D
pabloski
31-07-2012, 14:20
;37883154']Progetto by Tapparo? :D
Per curiosità sono andato a cercare questo Tapparo e infatti è proprio come pensavi http://www.math.unipd.it/~tapparo/ProgrammazioneOggetti/specificaProgetto.pdf
Esattamente!come fai a conoscerlo? :D
bender86
31-07-2012, 16:45
Devi trovare degli insiemi su cui si possano definire almeno le operazioni algebriche di somma, moltiplicazione, inverso, opposto (più eventualmente altre), e che siano uno sottoinsieme dell'altro.
L'esempio banale sono i numeri:
Reale <- Razionale <- Intero
Tutti i numeri interi sono razionali, la somma di due interi è intera, la moltiplicazione pure, la divisione no, potrebbe essere razionale. La somma di due razionali potrebbe essere intera. Sugli interi si definiscono ulteriori operazioni rispetto ai razionali: modulo, fattoriale, gcd, lcm... Stessa cosa per i reali.
Purtroppo questi sono praticamente wrapper ai tipi base, troppo semplici per la consegna.
Potresti fare il parallelo con i polinomi: numero intero => polinomio, numero razionale => rapporto di polinomi (i reali lasciamoli perdere).
Rappresentare un polinomio è abbastanza semplice (basta memorizzarne i coefficienti), così come fare somma e moltiplicazione. Divisione, gcd e lcm sono un po' più complicati, ma ci sono algoritmi anche per quelli (hint (http://en.wikipedia.org/wiki/Polynomial_long_division)).
Il rapporto tra due polinomi è sostanzialmente identico al rapporto tra due interi, operazioni comprese. Una volta definiti gcd e lcm si usano le stesse formule.
La terza classe potrebbe essere qualsiasi cosa, purché siano definite le relative operazioni. Numeri complessi, quaternioni, vettori, matrici, insiemi...
[Kendall]
31-07-2012, 16:48
Per curiosità sono andato a cercare questo Tapparo e infatti è proprio come pensavi http://www.math.unipd.it/~tapparo/ProgrammazioneOggetti/specificaProgetto.pdf
Esattamente!come fai a conoscerlo? :D
Perchè io in realtà sono ingegnere meccanico ma ho da sempre la passione per la programmazione e ho seguito alcuni corsi di Scienze Informatiche per diletto (e quest'anno ho avuto modo di conoscere questo giovane professore mentre mi intrufolavo a lezione :p )
P.S: nel progetto prova a creargli un parser (adatto ovviamente al tipo di calcolatrice), vedrai che lo manderai in brodo di giuggiole ;)
banryu79
31-07-2012, 17:05
Devi trovare degli insiemi su cui si possano definire almeno le operazioni algebriche di somma, moltiplicazione, inverso, opposto (più eventualmente altre), e che siano uno sottoinsieme dell'altro.
...snip...
La terza classe potrebbe essere qualsiasi cosa, purché siano definite le relative operazioni. Numeri complessi, quaternioni, vettori, matrici, insiemi...
Idea molto molto carina ;)
Riuppo perchè sto entrando in fase disperazione :sofico:
Ho sentito un pò i progetti che ci sono in giro e un gran numero riguarda polinomi\matrici\ecc.
Se fosse:
Classe astratta "oggetti" con metodi comuni da ridefinire virtuali puri (quindi nessun oggetto istanziabile).
^
|
Classe punto
^
|
Classe polare (rappresentazione di punto tramite memorizzazione di angolo e distanza dal vertice)
Classe Segmento derivata da "oggetti"
^
|
Classe Quadrato
Cosa ne pensate?
Che operazioni possono essere implementate?
Ad esempio potrei avere un operazione "?distanza?" che dato un segmento ed un quadrato capisce se l'estremo A||B è quello più vicino al Quadrato e vivecersa.
sottovento
23-08-2012, 06:04
Altra proposta (cmq tutta da verificare): agli informatici piacciono tantissimo le elaborazioni non numeriche. Ne vado matto anch'io poiche' spesso sono sorprendenti.
Non ho ancora elaborato una VERA idea, che possa essere conforme alle richieste del tuo progetto. Diciamo pero' che se volessi sorprendere il professore, mi orienterei su questa strada.
L'esempio che mi viene e' di una definizione di classe di persone e di relazioni fra di loro, che siano le piu' variegate possibili: amico, moglie, marito, fidanzato/fidanzata, conoscente, padre, madre, fratello, sorella, suocera,....
Ogni relazione ha ovviamente un peso.
Le operazioni sarebbero ovviamente relative allo stabilimento delle relazioni fra le persone.
Dopo di che... mi piacerebbe poter "interrogare" la struttura, per esempio:
"che relazione c'e' fra luigi e piero?"
E mi piacerebbe vedere una cosa del genere:
"luigi ha sposato Marta che e' amica di Laura che frequenta il corso di cucito insieme a Francesca che e' sorella di Mauro che e' amico di Ernesto che e' cugino di Piero".
Non so se questo possa rientrare nel progetto che devi realizzare. Pero' ti farebbe guadagnare la residenza onoraria nel mio paese di origine in Italia ;)
Grazie della risposta! :)
L'idea di per sè non è malvagia ma la vedo più orientata più a un gestionale dbms che ad un concetto di calcolatrice.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.