|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Mi sono guardato tutto il codice e ho iniziato un po a "digerirlo", poi me lo riguardo con calma.
Inserire le scale sugli assi è complicato? PS: io ho fatto la paurosa modifica del pallino blu e la crocetta rossa ![]() ![]() |
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Be', semplice o complicato sono termini relativi.
Richiede pochi passaggi. Per la verità ne richiede tre. 1. Creare un bordo (Border) che disegna gli assi 2. Creare un JPanel in cui inserire un DrawAndClick 3. invocare setBorder su quel JPanel E hai i tuoi assi senza toccare una virgola del resto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#23 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Purtroppo mio padre che mi aveva "commissionato" il lavoro si è accorto che il programma deve essere diverso da come mi aveva richiesto all'inizio
![]() Allego una foto dove si vede la griglia che devo realizzare: ![]() In pratica con un apparecchio si emettono dei suoni a varie frequenze e si stabilisce la perdita in decibel di udito al variare delle frequenza del suono. 1) Si parte dalla frequenza 1000, 1500, 2000.....8000 poi 500 e 250. Dovrei permettere di inserire da linea di comando i valori di perdita misurati e il programma dovrebbe disegnare il valore sulla griglia : puntino per orecchio destro, croce per orecchio sinistro 3) Puntini e crocette non vanno nelle celle ma sulle colonne delle varie frequenze; pallino e crocetta possono anche sovrapporsi 4) Alla fine i punti devono essere interpolati da una curva 5) In base al numero di punti che stanno nelle aree A, B, C, D, E e F si stabilisce il grado di perdita di udito E' molto piu complicato del previsto ? Il codice postato non si puo riutilizzare ? |
![]() |
![]() |
![]() |
#24 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Ho scritto il codice per l'inserimento dei valori:
Codice PHP:
|
![]() |
![]() |
![]() |
#25 | ||
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
Quote:
![]() cioè, che i requisiti funzionali del prodotto SW cambino in corso d' opera è tutto meno che infrequente: se sei un giovane aspirante professionista in questo settore, devi essere pronto a fare i conti con questo genere di situazione, quindi è un bene che ti sia capitato di entrare in contatto con questo genere di situazione, fin da ora... ![]() Quote:
però dovrai comunque apportare cambiamenti, nel modo di plottare i singoli punti (per il diverso allineamento, ma soprattutto per la non linearità dell' asse delle ascisse effettive *) e di disegnare la curva interpolante (di nuovo per via dell' andamento non lineare) * da quel grafico non è molto chiaro che genere di andamento abbia la scala dell' asse delle ascisse: la distanza tra il punto a 8000 e quello a 6000 e tra 6000 e 4000 è pari a quella tra 4000 e 3000, tra 3000 e 2000, e più indietro, 1000 e 750, quindi non mi pare nemmeno logaritmica è fondamentale, che ti abbia perfettamente chiaro quale sia l' andamento all' interno di ogni intervallo e il criterio di arrotondamento (visto che mi pare di capire tu non plotterai mai "tra" una colonna e l' altra ma solo in corrispondenza del valore più vicino
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 18-04-2007 alle 18:40. |
||
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La linea di comando la lascerei dove sta: nei libri di storia.
Il codice che abbiamo esaminato serve a rappresentare graficamente una matrice di valori interattiva. Può servire o non servire, dipende da come decidi ci procedere. Dall'immagine che incolli direi che può servire. Comunque sia, qui il problema è che devi mettere il PC da parte e progettare la tua applicazione. Il codice che incolli relativo all'inserimento dati da linea di comando è inutile se prima non stabilisci quale ruolo giocherà il componente che definisce quel comportamento nel sistema. Chi richiede il servizio di inserimento dei dati, quando lo richiede, dove vanno a finire i dati, esistono dei requisiti preliminari all'inserimento... eccetera. Il comportamento del sistema e un'idea circa le parti di cui è composto lo ottieni dal risultato dell'intervista al committente. Nei cinque punti da te citati c'è già molto e l'immagine rende perfettamente l'idea di quella parte dell'interfaccia che sarà deputata a proiettare il lavoro del programma. Esaminali a fondo, a PC spento. L'utente inserisce il valore di perdita per una certa frequenza. Come realizzi questo inserimento? L'utente dovrà poter scegliere la "frequenza di inserimento" e il programma richiederà la perdita per questa frequenza? Dove finiscono questi dati? In una griglia del genere da noi esaminato? Come sono rappresentati? Se una stessa misura è fatta ora per un orecchio, ora per l'altro, l'utente dovrà poter indicare quale sia "l'orecchio che si sta misurando"? Come glielo fai indicare? Si fa un solo test per ogni frequenza? L'utente può cambiare i valori precedentemente immessi? Come glielo fai fare? E via così. Sono centinaia le domande a cui tu devi trovare una risposta prima ancora di poter pensare a come tradurrai in codice le risposte.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#27 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
1)L'utente inserisce il valore di perdita per una certa frequenza. Come realizzi questo inserimento?
Io pensavo da linea di comando, comunque per ogni frequenza (mio padre dice va fatto nell'ordine 1000, 2000,3000,4000,6000,8000,500,250 ) vorrebbe inserire tramite tastiera numerica i valori della perdita in decibel (da 0 a 100). Magari potrei fare a destra della griglia una tabella con frequenza e perdita corrispondente per orecchio dx e sx in cui i valori siano modificabili. Poi sotto un pulsante "disegna" che fa disegnare i punti sulla griglia 2)Dove finiscono questi dati? In una griglia del genere da noi esaminato? Questi dati che quindi hanno un valore di ascissa = frequenza e un valore di ordinata = perdita devono essere plottati su una griglia come quella in figura Orecchio dx = cerchio vuoto Orecchio sx = crocetta Visto che orecchio sx e dx possono dare le stesse misure per una data frequenza pallino e crocetta devono potersi sovrapporre. Il fatto che la distanza tra freq 750 e 1000 = distanza tra freq 4000 e 6000 è giusto nel senso che è fatto apposta (non so perchè) 3)Si fa un solo test per ogni frequenza? Si, uno per ogni orecchio 4) L'utente può cambiare i valori precedentemente immessi? Come glielo fai fare? Bhe sarebbe utile, magari fare a destra della griglia una tabella con frequenza e perdita corrispondente per orecchio dx e sx in cui i valori siano modificabili. Poi sotto la tabella un pulsante che dopo aver inserito tutti i dati disegni i simboli sulla griglia. 5) Una volta che ho cerchi e crocette sulla griglia devo tracciare dei segmenti che uniscono i vari simboli dello stesso tipo (pulsante unisci orecchio sx e unisci orecchio dx) tutti i cerchi e le crocette con due linee di colore diverso. Devo poter vedere o solo curva orecchio dx o solo curva orecchio sx o tutte e due di colore diverso. 6) Per valutare il deficit si devono guardare le frequenze 500, 1000, 2000, 3000, 4000, 6000. Quindi ho 6 simboli (cerchi o croci) per ogni orecchio. Il deficit si puo valutare a partire dai dati e non dalla griglia (che serve solo a scopo comunicativo esterno): es Se ho 4 simboli nella zona A e altri 2 in C,B e D ho un deficit di primo grado Se ho 3 simboli nella zona A e altri 3 in C,D,E,F,G ho un deficit di grado due ecc... Questo si puo fare con una serie di if credo Ragazzi scrivendo queste cose mi rendo conto che è un casino ![]() |
![]() |
![]() |
![]() |
#28 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Farò finta di non aver sentito il termine "plottare".
![]() Le domande erano per darti un'idea di come si arrivi dai requisiti ad un'idea di programma. Devi dare una risposta a te stesso, non a noi. Continua ad esplorare l'idea del committente a colpi di domande e risposte dalle quali scaturiranno altre domande. Credo che la griglia possa tranquillamente disegnarsi man mano che l'utente inserisce i dati (MVC?). Così eviti un gesto dell'utente. Per l'inserimento dei dati potresti usare uno wizard? O possiamo pensare ad un meccanismo di interazione dell'utente con la griglia? Perchè inserire i valori in decibel con la tastiera quando l'utente può cliccare sulla griglia in corrispondenza del valore? Si potrebbero usare delle barre di scorrimento come modificatori dei valori per i decibile? Click sulla griglia nella colonna delle frequenze, appare una barra di scorrimento verticale con un pulsantino "ok", l'utente trascina la barra sul valore in dB rilevato, preme ok e nella griglia compare l'etichetta. Guarda mamma, senza la tastiera! ![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#29 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Non ti piace il termine plottare ?
![]() Adesso vedrò di studiarmi un po la grafica in java e penso un po sul da farsi ! Conoscete il libro JAVA 2 di horstmann ? E' un buon libro? Link dove guardarmi quello che serve per fare questo programma? Grazie |
![]() |
![]() |
![]() |
#30 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
|
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Lì ci sono JLabel, JTextField con un Document che accetta formati numerici, inseriti in un JPanel con un GridBagLayout. Ricorda che mentre pensi a come far apparire un pezzo dell'interfaccia devi anche ragionare su come quel pezzo dialogherà con il resto del programma. Cosa succede mentre l'utente digita i valori (la griglia si aggiorna), quel pezzo di interfaccia permane o appare a richiesta... domande, domande...
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#32 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Vorrei che questo form di inserimento dati restasse sulla destra; sulla sinistra deve essereci la famosa griglia e al centro un bottone "CALCOLA DIAGNOSI".
Sono riuscito a realizzare la parte grafica usando Border Layout e mi viene una cosa del tipo ![]() Come faccio ad inserire la griglia sulla sinistra e a collegare numeri che inserisco con cerchietti e crocette sulla griglia ? Qui inizia il bello e non so da che parte iniziare |
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Qui non ti posso aiutare. Dovrei fare appello alle mie conoscenze di programmazione orientata agli oggetti che divergono assolutamente dalle teorie consolidate. E non voglio portarti con me nel baratro
![]() La soluzione, e già sto rischiando grosso, sta nel mettere in comunicazione l'oggetto che si occupa di gestire l'inserimento dei dati a sinistra con quello che li rappresenta a destra.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#34 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Non capisco cosa vuoi dire
![]() |
![]() |
![]() |
![]() |
#36 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quello che hai fatto non è sbagliato è solo che stai interpretando le cose in un modo che non è proprio del tuo punto di vista umano. Tu osservi il problema dal punto di vista del linguaggio di programmazione Java e delle sue librerie. Quello che devi fare è, invece, dire le cose come stanno secondo te e piegare il linguaggio e le librerie ad una mera traduzione di quello che osservi.
Scrivi quello che vedi e poi riempi i buchi con i dettagli del linguaggio. Ad esempio se io, essere umano, dico che quando premo il pulsante OK sul pannello di sinistra appare una croce sulla griglia a destra allora io, essere umano, scrivo in un linguaggio orientato agli oggetti, ad esempio Java ma vale per C++, C# Smalltak Python e qualsiasi altra lingua che supporti la prospettiva orientata agli oggetti: Codice:
public class PannelloDiSinistra { public void pulsanteOkPremuto() { griglia.inserisciCroce(... } } Codice:
public class PannelloDiSinistra { private Contesto contesto; public PannelloDiSinistra(Contesto c) { contesto = c; } public void pulsanteOkPremuto() { contesto.getGriglia().inserisciCroce(... } } Codice:
public abstract class Oggetto { private Contesto contesto; public Oggetto(Contesto c) { this.contesto = c; } public Contesto getContesto() { return contesto; } } Codice:
public class PannelloDiSinistra extends Oggetto { public PannelloDiSinistra(Contesto c) { super(c); } public void pulsanteOkPremuto() { getContesto().creaCrocetta(..., ..., ...); //ad esempio } } Sto vaneggiando troppo? ![]() ![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#38 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Il fatto è che io fino a pochi giorni fa ho scritto solo programmi java da linea di comando molto semplice mentre di grafica non ho mai scritto nessuna applicazione. Ho voluto lanciare questa sfida con mio padre ma dal tuo ultimo messaggio mi rendo conto che forse mi mancano dei concetti base.
Per prima cosa credo dovrei capire le classi che sono necessarie e che poi dovrò andare ad implementare: 1) classe Griglia 2) classe Simbolo 3) classe Pannello Inserimento Dati 4) classe Disegna simboli su Griglia 5) classe CalcolaDiagnosi (?) 6) classe Principale (dove ho il main) Ultima modifica di spillo491 : 23-04-2007 alle 08:34. |
![]() |
![]() |
![]() |
#39 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Pensa a quello che fanno, non a come dovrai farglielo fare. Come fai, ad esempio, a far comunicare il Pannello Inserimento Dati con la Griglia? Non dal punto di vista del linguaggio di programmazione. Cioè qual comportamenti e quali proprietà devono avere Griglia e Pannello per poter comunicare (nel senso di scambiarsi informazioni e reagire a questi scambi). Insisto su questo punto perchè una volta che riesci a vedere il rapporto tra due oggetti è bell'e che finita, tutto il resto diventa una bazzeccola.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#40 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Grazie PGI ho capito, domani ci provo
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:04.