La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 GESTIONE DEL TESTO.

Presentazioni simili


Presentazione sul tema: "© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 GESTIONE DEL TESTO."— Transcript della presentazione:

1 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A GESTIONE DEL TESTO

2 2 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Argomenti della lezione Linguaggio naturale Il pakage java.text

3 3 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Linguaggio naturale

4 4 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Interfacce utente Un programma comunica con i suoi utilizzatori Attraverso immagini, suoni e testi I messaggi non sono sempre completamente predefiniti Spesso il loro contenuto è parametrico Anche lutente comunica Utilizza segni convenzionali: omovimenti del mouse, sequenze di caratteri Occorre riconoscerne il significato

5 5 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Comunicazione testuale Sfrutta il linguaggio naturale dellutilizzatore È legata alla sua cultura Lingua adottata, convenzioni di rappresentazione Impone pesanti vincoli quando occorre realizzare programmi multiculturali

6 6 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Sintesi di messaggio Un messaggio testuale è composto da una sequenza di caratteri In parte prefissati In parte determinati in fase di esecuzione Occorre tenere presenti le regole della sintassi Concordanze (genere, numero, persona, …)

7 7 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti //Restituisce il messaggio adattato String getMessage(int i) { String s; String s; if (i!=1) if (i!=1) s=.; s=Sono stati letti +i+ elementi.; else else s=; s=È stato letto un elemento.; return s; return s;} //Restituisce il messaggio adattato String getMessage(int i) { String s; String s; if (i!=1) if (i!=1) s=.; s=Sono stati letti +i+ elementi.; else else s=; s=È stato letto un elemento.; return s; return s;}

8 8 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Rappresentare i numeri Le classi wrapper offrono il metodo statico toString(…) Restituisce la stringa corrispondente al parametro Non si può controllare la formattazione oNumero di cifre, separatore decimale, notazione, …

9 9 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Analisi di testi Estremamente più complessa Occorre suddividere, a priori, il testo in unità elementari In alcuni casi occorre trattare informazioni strutturate Data, ora, valuta, … La disposizione ed il contenuto dipendono dalla cultura dellinterlocutore

10 10 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti StringTokenizer st = new StringTokenizer( Questa è una prova); while (st.hasMoreTokens()) System.out.println(st.nextToken()); StringTokenizer st = new StringTokenizer( Questa è una prova); while (st.hasMoreTokens()) System.out.println(st.nextToken()); Questa è unaprova unaprova Scandire una stringa Si può usare la classe java.util.StringTokenizer Suddivisione basata sugli spazi Pochi controlli disponibili

11 11 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Analizzare un numero Le classi wrapper offrono metodi per convertire stringhe in numeri Integer.parseInt(String val) Double.parseDouble(String v) Possono lanciare NumberFormatException Basati sulla rappresentazione anglosassone String s=123,456; double d; try { d=Double.parseDouble(s); } catch (NumberFormatException nfe) { d=0.0; } String s=123,456; double d; try { d=Double.parseDouble(s); } catch (NumberFormatException nfe) { d=0.0; }

12 12 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Confronto La classe String offre il metodo compareTo Basato sulla rappresentazione UNICODE dei caratteri Non fornisce i risultati attesi con le lettere accentate

13 13 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Internazionalizzazione Fattori da gestire quando si realizzano versioni per più culture Messaggi Componenti grafici Suggerimenti Suoni Colori Icone Numeri (valute/misure) Data/ora Indirizzi Numeri telefonici Impaginazione

14 14 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Culture La classe java.util.Locale modella in ambito culturale specifico In termini di lingua e nazione La conoscenza del locale permette di adattare le operazioni di analisi e sintesi

15 15 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String getMessage() { Locale loc=Locale.getDefault(); //formato ISO 639: codice a due lettere String lang=loc.getLanguage(); String msg; if ( it.equals(lang) ) msg=Premere ; else msg=Press ; return msg; } String getMessage() { Locale loc=Locale.getDefault(); //formato ISO 639: codice a due lettere String lang=loc.getLanguage(); String msg; if ( it.equals(lang) ) msg=Premere ; else msg=Press ; return msg; }

16 16 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Il package java.text Insieme di classi specializzate nella gestione del testo Analisi/sintesi/confronto Numeri, date, messaggi testuali In dipendenza di una cultura specifica (Locale)

17 17 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti java.text. Format format(…) parseObject(…) Decimal Format Choice Format SimpleDate Format Date Format Number Format Message Format

18 18 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti NumberFormat Fornisce metodi per lanalisi e la sintesi di valori numerici: Numeri frazionari Percentuali Valuta Fornisce risultati differenti in funzione della cultura indicata

19 19 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String getValue(double d) { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getNumberInstance(loc); String s=nf.format(d); return s; } String getValue(double d) { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getNumberInstance(loc); String s=nf.format(d); return s; } getValue(99.95)99,95getValue(99.95)99,95

20 20 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti double parse(String s) throws ParseException { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getNumberInstance(loc); Number n=nf.parse(s); return n.doubleValue(); } double parse(String s) throws ParseException { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getNumberInstance(loc); Number n=nf.parse(s); return n.doubleValue(); } parse(99,95)99.95parse(99,95)99.95

21 21 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String getPrice(double d) { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getCurrencyInstance(loc); String s=nf.format(d); return s; } String getPrice(double d) { Locale loc=Locale.ITALIAN; NumberFormat nf= NumberFormat.getCurrencyInstance(loc); String s=nf.format(d); return s; } getPrice(99.95) getPrice(99.95)

22 22 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti DateFormat Analisi e rappresentazione di data e/o ora Diversi formati (breve, medio, lungo, completo) Permette di impostare il fuso orario (time zone) Supporta calendari arbitrari (di classe java.util.Calendar)

23 23 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String getTime(Date d) { Locale loc=Locale.ITALIAN; DateFormat df= DateFormat.getTimeInstance( DateFormat.SHORT, loc); String s=df.format(d); return s; } String getTime(Date d) { Locale loc=Locale.ITALIAN; DateFormat df= DateFormat.getTimeInstance( DateFormat.SHORT, loc); String s=df.format(d); return s; } getTime( new Date())

24 24 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti MessageFormat Classe che offre funzionalità sofisticate per costruire ed analizzare messaggi Utilizza una stringa di formato ed un array di parametri Simile alla funzione sprintf() del linguaggio C

25 25 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String getMsg(String s, int i) { String pattern= La cartella {0} contiene {1} file; MessageFormat mf= new MessageFormat(pattern); Object[] args= new Object[] {s, new Integer(i)}; return mf.format(args)); } String getMsg(String s, int i) { String pattern= La cartella {0} contiene {1} file; MessageFormat mf= new MessageFormat(pattern); Object[] args= new Object[] {s, new Integer(i)}; return mf.format(args)); } getMsg(c:\,3) La cartella c:\ contiene 3 file

26 26 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti Collator Classe specializzata nel confrontare stringhe in un dato linguaggio Riordina le lettere accentate, in modo da garantirne lopportuna sequenza Offre vari livelli di precisione nel confronto

27 27 © M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti String[] parole= {Squadra,sì, si}; Locale loc= Locale.ITALIAN; Collator c= Collator.getInstance(loc); c.setStrength(Collator.SECONDARY); Arrays.sort(parole,c); for (int i=0; i


Scaricare ppt "© M. Badella, G. Malnati, L. Tessitore 2003-05 Programmazione ad Oggetti A.A. 2004-05 GESTIONE DEL TESTO."

Presentazioni simili


Annunci Google