allora, la classe fa quello che volevi facesse la struct. Una classe puo' essere vista come una struct con associati dei metodi per operare sui dati contenuti, in seguito discuteremo il significato delle keyword "public" e "private" (ce n'e' anche un'altra, "protected").
Quindi la classe contiene una stringa e un intero, con i due metodi dichiarati possiamo sapere il valore di questi due "attributi" (cosi' si chiamano i dati dentor una classe)
calculateStringValue() calcola quanto vale la stringa passata: controlla ogni carattere in quale gruppo sta e incrementa il risultato di conseguenza.
infine calculateRate scorre una lista di stringhe e accetta un parametro di output che e' una lista di oggetti di tipo RatedString
attenzione!
la prima lista e' la lista che va scorsa, non viene mai modificata, e quindi la si passa come "const". La seconda, invece, viene modificata, quindi non si puo' passarla come const (il compilatore ti darebbe un errore)
Un altro appunto: la dichiarazione di una classe implica la creazione di uno nuovi tipo di dato astratto. Una comoda convenzione e' che i tipi di dato astratto abbiano dei nomi che inizino sempre con la lettera maiscola. Per chi ha un po di familiarita', Java segue questa coding rule