In Java viene messa a disposizione un tipo particolare di classe, si tratta di
Class. Questa classe consente di tenere traccia alla JVM durante l’esecuzione di un’applicazione di tutte le classi caricate in memoria. Può essere vista come il corrispondente di
Object per le classi, se
Object serve per “gestire” gli oggetti di un’applicazione, la classe
Class serve a
modellare le classi. Quando un programma ha la capacità di eseguire operazioni che hanno oggetto se stesso, ed in particolare del suo codice sorgente, si parla di
riflessione o reflection.
Un’istanza di una classe
Class rappresenta una classe o un’interfaccia in un’applicazione Java a runtime. Anche gli array appartengono ad una classe che viene riflessa come un oggetto
Class e condiviso da tutti gli array con lo stessa dimensione e tipo di elementi. Pure i tipi primitivi (
boolean,
byte,
char,
short,
int,
long,
float, e
double) e la parala chiave void sono rappresentati come oggetti
Class.
L’intestazione di Class è la seguente:
public final class Class
extends Object
implements Serializable Read more »
Tags: class, classe Class, forName, getClass, getConstructors, getDeclaredConstructors, getDeclaredFields, getDeclaredMethods, getFields, getMethods, getName, getSuperclass, java virtual machine, jvm, newIstance, reflection, riflessione, SecurityException
Guide, Java, Programmazione | Alex88na 19 aprile 2013 |
Comments (0)
Java è un linguaggio
staticamente tipato:
- “tipato” vuol dire che ad ogni espressione viene assegnato un tipo che rappresenta l’insieme di valori che l’espressione potrebbe assumere;
- “staticamente” vuole dire che il tipo di ogni espressione deve essere noto al momento della compilazione.
Read more »
Abbiamo già parlato di
eccezioni in Java, il meccanismo che permette di gestire gli eventuali errori durante l’esecuzione di un programma. Le eccezioni vengono suddivise in eccezioni
verificate e
non verificata: le prime si riferiscono al fatto che il compilatore verifica se tali eccezioni sono opportunamente trattate dal programmatore; al contrario, quelle non verificate sono ad uso libero del programmatore.
Approfondiamo il discorso, vediamo esattamente come si comporta il compilatore quando incontra un’eccezione verificata. Se abbiamo un oggetto x che invoca un metodo f:
x.f();
Per un corretto funzionamento il compilatore dovrebbe analizzare tutto il corpo di f() per controllare se ci potrebbe essere il lancio di un’eccezione… quest’operazione sarebbe molto lunga e dispendiosa, si dovrebbero controllare tutti i metodi del programma alla ricerca di eccezioni. In termini di costi e tempo sarebbe disastroso!
A tale scopo è stata introdotta in Java la possibilità di poter dichiarare le eccezioni, il programmatore che ha scritto il codice sa se un metodo potrebbe lanciare un’eccezione e di conseguenza la può dichiarare tramite la clausola throws. La clausola throws può essere usata sia per le eccezioni verificate che per quelle non verificate, ma è buona norma utilizzarla solo per quelle di tipo verificato.
public void f() throws RuntimeException {
// Codice che potrebbe lanciare RuntimeException
} Read more »
Tags: ArrayOutOfBoundsException, catch, checked, eccezioni, exception, FileNotFoundException, OutOfMemoryError, RuntimeException, throws, try, try-catch, unchecked
Guide, Java, Programmazione | Alex88na 17 aprile 2013 |
Comments (0)
Dopo il successo della
guida base di Java, ho deciso di scriverne una seconda parte in modo da poter riprendere ed analizzare meglio certi aspetti e per introdurne di nuovi. In particolare riprenderemo approfondiremo meglio il discorso delle
eccezioni, delle
classi interne ma anche dei
tipi wrapper introducendo l’autoboxing. Introdurremo nuovi concetti come i
pattern, per la risoluzione dei problemi, delle classi parametriche introdotte con la versione Java 1.5, ma anche altri argomenti utili nella programmazione come i
thread in
Java.
Read more »
Tags: classi interne, classi parametriche, eccezioni, guida avanzata di java, Java 1.5, Java 7, lezioni, pattern, thread
Guide, Java, Programmazione | Alex88na 15 aprile 2013 |
Comments (0)
Le tecniche basate su Hidden Markov Models (HMM) rappresentano una tecnica che sta ottenendo buoni risultati sia per il riconoscimento di testi scritti che per il riconoscimento del parlato ed i suoi fonemi. Modello di Markov nascosto, prende il nome dal suo ideatore, ed in particolare la parola “nascosto” indica che per un osservatore qualsiasi non è visibile la sequenza di stati interni ma solo la sequenza di output dei simboli. Read more »
Ogni ogni frase, ogni parola ma anche ogni singola lettera possono essere pronunciati in maniera diversa da persona a persona. In particolare persone diverse possono impiegare tempi diversi per pronunciare lo stesso fonema. Queste differenze rappresentano un forte ostacolo per i processi di riconoscimento del parlato, non è possibile confrontare direttamente segnali audio. Read more »
Essere in grado di catalogare i vari file audio è un passo molto utile per la ricerca di informazioni all’interno di un file audio. La principale suddivisione dei suoni che viene utilizzata è quella di dividere i suoni in due grandi categorie: la Musica ed il Parlato.
Ovviamente, la suddivisione in due sole categorie dei suoni rappresenta un tipo di classificazione molto generica. E’ possibile raffinare questa classificazione in vari modi: se la voce è maschile o femminile, se si tratta di suoni alti o bassi e tanto altro. Ecco una tabella che racchiude le principali caratteristiche/differenze nei segnali audio: Read more »
Tags: algoritmo, algoritmo riconoscimento audio, distanza euclidea, parlato, Silence ratio, sistemi informatici multimediali, Step-by-Step, suoni alti, suoni bassi, voce, ZCR
Audio, Informatica, Musica | Alex88na 2 giugno 2012 |
Comments (1)