Oppure

Loading
30/07/11 13:47
Renny
Ciao a tutti! Almeno a quelli che non sono già in vacanza 8-)...
Da poco ho iniziato a studiare VB.NET e sono davvero colpito dalla complessità e dalla vastità che il mondo OOP offre: difatti mi sono perso.
Venendo al dunque, devo realizzare una piccola App che memorizza una serie di stringhe, che tramite una codifica particolare riportano una serie di dati. Inserite un numero variabile di stringhe, 20-30, il programma dovrebbe analizzarle e fare una serie di conteggi e calcolare altre variabili, da presentare poi in un report.
La mia domanda riguarda in generale come organizzare al meglio il materiale in classi per sfruttare al meglio vb.net.
Esempio di stringa
Wo AA.BB.CC Zz,Xx,Yy AB2
La stringa si compone di un numero variabile di elementi, separati da "spazi", quindi avrei -1elem = "Wo" -2elem="AA,BB,CC" -3elem= "Zz,Xx,Yy" ecc.
Devo analizzare nel dettaglio ad esempio il 2elem, che diventa composto da "AA", "BB", "CC". (substring del 2 elemento, separate dalla virgola)
A livello di classi, pensavo di fare una classe List che contiene tutte le stringhe, una classe Stringa che rappresenta la singola risposta (composta della varie parti della stringa) e una classe elemento che è tipo "AA" o "BB".
Quindi avrei Protocollo come list(stringhe) e stringa come fatta da + elementi.
A livello di organizzazione, ogni stringa è indipendente mentre devo controllare gli elementi che compongo la stringa, per fare si che ad esempio non venga inserito 2 volte "AA".. oppure, ci sono altre regole che dicono che se inserisco "AA" poi non posso inserire anche "DD". Oppure verificare che se ho il 1°elemento devo avere anche un 4° elemento presente della stringa.
Il problema è dunque, come organizzo la classe stringa? Dove metto i metodi che verificano la correttezza dei dati inseriti? Ha senso creare una classe "elemento" e poi nella classe stringa dichiare elem2 as list(of Elemento2) :-|:-|
Spero di essere stato chiaro.. Se avete consigli postate pure anche del codice.:k:
Grazie mille!
Ultima modifica effettuata da Renny 30/07/11 13:54
aaa
31/07/11 9:13
Ale96
Perchè devi creare una nuova classe che rappresenta una lista di stringe invece di usare un array?
La classe string presenta il metodo split che divide una stringa ogni volta che incontra un dato carattere e restituisce un array di stringhe su cui puoi lavorare.
aaa
02/08/11 19:28
Il Totem
La soluzione che hai pensato è abbastanza buona. Tuttavia ti consiglio alcune modifiche. L'unità più piccola che dovresti modellizzare è la stringa (quella separata da spazi), ma non le sue componenti. Il motivo è che la correttezza o meno della singola stringa dipende da tutte le sue componenti, quindi è inutile creare una classe per contenere tali componenti se non puoi esporre funzionalità significative per queste ultime. Avresti quindi:
CodeCollection -> List(Of Code) : la lista
Code -> List(Of String) : la stringa, formata dalle sue componenti
Ho cambiato i nomi per evitare confusione con i tipi simili List e String.
Ora dovresti implementare in Code dei metodi per verificarne la correttezza. La correttezza della lista sarà dipendente dalla correttezza dei suoi elementi. Ti suggerisco di pensare a un modo per definire un insieme di regole che le componenti di Code debbano rispettare e creare infine un solo metodo che testi se una data lista di regole sintattiche siano o meno soddisfatte da quell'istanza.

Si tratta, in sostanza, di implementare un parser di regole per la validazione della stringa. Direi che è un progetto interessante.
aaa