Fisica Computazionale I - 31 UTILIZZARE OGGETTI GIA' ESISTENTI Abbiamo visto che un programma Java puo' fare riferimento ed utilizzare oggetti, cioe' altre.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Programmazione in Java
Package Utilizzo classi.
Recupero debito quarto anno Primo incontro
EP 11/12 - PBLezione 31 Elementi di Programmazione Tipi di Dati e Conversioni Istruzioni di controllo del flusso.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
Fisica computazionale I - 21 OPERATORI. Fisica computazionale I - 22 OGGETTI Gli oggetti sono strutture di dati che possono essere create, attraverso.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
Introduzione agli stream e alle classi
Derivazione tra classi
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Approfondimento delle classi
Espressioni condizionali
ASP Lezione 1 Concetti di base. Introduzione ad ASP ASP (che è la sigla di Active Server Pages) è un ambiente di programmazione per le pagine web. La.
Argomenti della lezione
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
IL CONCETTO DI PACKAGE Una applicazione è spesso composta di molte classi (eventualmente correlate) Un package è un gruppo di classi che costi- tuiscono.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Corso di PHP.
DBMS ( Database Management System)
Programmazione in Java
Java Contardi Carlo A.S. 2008/09.
Array a un dimensione : vettori
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
Java come linguaggio di programmazione
BIOINFO3 - Lezione 321 ACCESSO REMOTO AL SERVER SIBILLA Attraverso Internet è possibile accedere al server sibilla.cribi.unipd.it. Potrete così effettuare.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Corso JAVA Lezione n° 12 Istituto Statale di Istruzione Superiore “F. Enriques”
1 Applet ed HTML Fondamenti di Informatica Corso D.
© M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A Package.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Libreria standard.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
CORSO DI PROGRAMMAZIONE II Lezione 22
Programmazione ad oggetti
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
28/12/2001package 1 Package Pacchetti e interfacce.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Fisica Computazionale I - 31 UTILIZZARE OGGETTI GIA' ESISTENTI Abbiamo visto che un programma Java puo' fare riferimento ed utilizzare oggetti, cioe' altre classi. Lo abbiamo fatto, ad esempio, utilizzando l'oggetto Libro, ma anche utilizzando oggetti non costruiti da noi come ad esempio String. Dobbiamo ora approfondire questo meccanismo e comprendere le regole sottostanti. Java consente di raggruppare piu' classi in una unita' funzionale, il "package". Un package e' appunto un gruppo di classi, generalmente, ma non necessariamente, legate tra loro da qualche tipo di omogeneita'.

Fisica Computazionale I - 32 Una classe e' dichiarata appartenere ad uno specifico package mediante lo statement package. Lo statement package deve essere la prima istruzione del file che contiene la classe: package prova.text; public class IlMioProgramma{ } In questo esempio la classe IlMioProgramma e' posta nel package prova.text.

Fisica Computazionale I - 33 Una classe e' accessibile solo alle classi che appartengono al medesimo package. Per consentire che essa sia visibile da qualunque classe e' necessario premettere al nome il modificatore public. Questo e' cio' che abbiamo fatto finora, senza comprenderne il significato. Quindi se noi scriviamo: package prova.text; class IlMioOggetto{ } la classe IlMioOggetto sara' accessibile solo agli altri membri del package prova.text

Fisica Computazionale I - 34 Accedere a classi appartenenti al medesimo package e' quindi totalmente automatico. Viceversa, per accedere a classi appartenenti a package diversi (supposto naturalmente che esse siano public) e' necessario fornire a Java gli elementi necessari per poter rintracciare i files relativi. Questo significa che noi dobbiamo fare riferimento alla classe premettendo ad essa il nome del package. Quindi, per fare riferimento alla classe IlMioOggetto dovremo ad esempio scrivere: prova.text.IlMioOggetto ogg = new prova.text.IlMioOggetto(); in questo modo abbiamo creato l'istanza ogg della classe IlMioOggetto. Questo rappresenta un notevole appesantimento del codice, fonte di possibili errori. Java ci consente di ottenere il risultato voluto in modo piu' semplice con lo statement import.

Fisica Computazionale I - 35 package applicazione.prova; import prova.text.IlMioOggetto; class Applicazione{ IlMioOggetto ogg = new IlMioOggetto(); } La statement import indica a Java dove localizzare la classe IlMioOggetto. Lo statement import deve essere posto all'inizio (dopo l'eventuale statement package); e' possibile naturalmente avere piu' statements import per localizzare piu' oggetti. E' anche possibile utilizzare il carattere * per importare tutti i membri di un package: import prova.text.*;

Fisica Computazionale I - 36 Non e' obbligatorio che una classe appartenga ad un package. Quindi tutte le classi di questo tipo (cioe' prive di appartenenza)possono fare liberamente riferimento le une alle altre e Java sara' in grado di localizzare i relativi files se essi si trovano nella medesima directory. Viceversa il nome del package e' in stretta relazione con la localizzazione fisica delle classi. Cosa vuol dire questo? Se la classe IlMioOggetto e' appartenente al package prova.text essa viene cercata da Java nel file prova/text/IlMioOggetto.class (stile unix) prova\text\IlMioOggetto.class (stile Windows) Ovvero i vari membri del package devono trovarsi nella sotto-directory (a partire dalla directory corrente) prova/text/

Fisica Computazionale I - 37 Questo dipende dalla impostazione della variabile d'ambiente CLASSPATH; noi abbiamo impostato CLASSPATH dando come unica directory quella corrente. Ma e' possibile dare piu' percorsi di ricerca. Per esempio: CLASSPATH.:/usr/local/classes in Unix CLASSPATH.;C:\usr\local\classes in Windows (notare che unix usa come separatore ":", mentre Windows usa ";") informa Java che i packages da importare possono essere sia nell'albero sottostante la directory corrente, sia nell'albero sottostante /usr/local/classes. Quindi e' possibile organizzare i propri files di classi separandoli e ordinandoli in piu' directories.

Fisica Computazionale I - 38 Il software fornito dalla Sun comprende un enorme numero di classi, divise in vari packages, che possono essere liberamente utilizzati nella costruzione di una applicazione. Alcuni di questi packages sono importati implicitamente (e quindi non vi e' bisogno dello statement import per utilizzarli). Sono le cosidette classi fondamentali di java. Un esempio e' l'oggetto String, che abbiamo piu' volte utilizzato in precedenza. In altri casi, invece, e' necessario importare esplicitamente il package. Si noti comunque che gli statements di import anche se superflui, non comportano nessun danno, ne' rallentano l'esecuzione del programma. Pertanto, scrivere ad esempio: import java.lang.*; non pregiudica nulla, anche se il package java.lang e' gia' importato implicitamente.

Fisica Computazionale I - 39 Viceversa, se il nostro programma utilizza una classe che appartiene ad un package da importare esplicitamente il compilatore ce lo segnalera' con um messaggio del tipo cannot resolve symbol seguito dal nome dell'oggetto sconosciuto. Bastera' aggiungere lo statement import del package mancante per risolvere il problema. I packages forniti da Sun hanno un nome tipo java.xxx o javax.xxx. La loro localizzazione fisica (cioe' la directory in cui risiedono) segue regole diverse da quanto detto in precedenza, cioe' non sono legati alla directory corrente, bensi' all'albero principale di installazione di Java. In linea di principio non dobbiamo quindi preoccuparcene, perche' compilatore javac e tutti gli altri comandi Java 'conoscono' il proprio albero di installazione e sono quindi in grado di rintracciare i packages importati da esso.

Fisica Computazionale I LE CLASSI FONDAMENTALI In Java i numeri e le variabili booleane sono tipi primitivi, non oggetti. Ma, per ogni tipo primitivo, Java definisce anche una classe, la cosidetta wrapper class; quindi il package java.lang comprende le classi Byte, Short, Integer, Long, Float, Double e Boolean. Ciascuno di questi oggetti e' sostanziamente caratterizzato da un'unica proprieta': il proprio valore, di tipo corrispondente al rispettivo tipo primitivo. Ma queste classi hanno anche molti metodi, che consentono di eseguire manipolazioni sulle stringhe, confronti, nonche' effettuare il 'parsing' di stringhe per trovare contenuti numerici da trasformare in variabili int, float, double, ecc. E' importante quindi imparare a consultare la documentazione che si accompagna ad ogni classe, per poterla utilizzare.

Fisica Computazionale I Ognuna di queste classi ha un costruttore che consente di creare un'istanza della classe e attribuirgli un valore, per esempio. Integer nn = new Integer(47); crea un'istanza nn con valore 47. Oppure: Boolean bb = new Boolean(true); crea un'istanza bb con valore true.

Fisica Computazionale I Supponiamo ora di voler trasformare una stringa in un numero intero, oppure in un numero double. Potremo utilizzare i metodi di parsing: String a = "42"; String b = "3.45"; int n = Integer.parseInt(a); double d = Double.parseDouble(b); avremo in conseguenza n che contiene il valore intero 42 e d che contiene il valore Naturalmente il parsing di una stringa in un numero non e' sempre fattibile: String a = "ciccio"; int n = Integer.parseInt(a); Si ha un errore in esecuzione!

Fisica Computazionale I Si noti che qui stiamo usando dei metodi, in modo un po' diverso rispetto a quanto avevamo imparato finora: nei capitoli precedenti avevamo visto che si doveva: - creare un'istanza della classe - usare un metodo applicato a quella istanza. Invece, qui usiamo direttamente il metodo parseInt(..) (o parseDouble(..)) direttamente sulla classe, senza creare nessuna istanza specifica. Questo e' possibile perche' questi metodi delle wrapper classes sono metodi statici. Nel prossimo Capitolo capiremo meglio cosa vuol dire questo aggettivo (nel linguaggio Java esso e' un modificatore). Qui ci basta comunque usare il buon senso: il parsing di una stringa per ricavarne un numero non richiede la costruzione di uno specifico oggetto Integer o Double.

Fisica Computazionale I Non bisogna mai fare confusione tra tipo primitivo e corrispondente oggetto: e' il valore dell'oggetto che e' una variabile primitiva, non l'oggetto in se'. Cio' significa, ovviamente, che non potremo eseguire operazioni aritmetiche tra oggetti Integer, Double, ecc., ma bensi' tra i loro valori. Ognuna di queste classi ha un metodo per 'estrarre' il valore, per esempio: Integer nn = new Integer(33); int a = nn.intValue(); adesso a acquista il valore dell'oggetto nn.

Fisica Computazionale I LA CLASSE Math Consente di effettuare tutte le operazioni numeriche fondamentali, come radici, esponenziali, logaritmi, funzioni trigonometriche. Per questo essa possiede un gran numero di metodi (statici) corrispondenti. Possiede inoltre due campi che ci forniscono il valore delle due costanti matematiche piu' importanti, e e double pi = Math.PI; double e = Math.E; Qui impariamo una nuova regola di Java: i campi di una classe possono essere letti ed usati, in modo analogo ai metodi. In questo caso si tratta di campi statici (cioe' non legati ad una specifica istanza), ma il discorso vale anche per i campi non statici.

Fisica Computazionale I ALTRI PACKAGES java.applet java.awt java.beans java.io java.math java.net java.nio java.rmi java.security java.sql java.text java.util javax.* org.*

Fisica Computazionale I JAVA ARCHIVE FILES (JAR) I files JAR rappresentano il modo standard di archiviare e traferire le applicazioni Java. Si puo' archiviare cio' che si vuole in un file JAR: files di tipo.class,.java, fotografie, testi... Java e' in grado di gestire files JAR e puo' caricare ed eseguire i files.class direttamente dall'archivio. Quindi l'indirizzo di un archivio puo' essere direttamente nel CLASSPATH affinche' possa essere utilizzato. I files sono compressi in un archivio secondo lo standard ZIP. Lo SDK della Sun comprende una utility - il comando jar - che ci consente di creare e gestire archivi JAR. L'uso del comando jar e' molto semplice:

Fisica Computazionale I Creazione di un archivio Supponiamo di avere una serie di files nella sotto-directory arch della directory corrente Con il comando jar -cvf arch.jar arch crea un file arch.jar che contiene tutti i files contenuti in arch, comprese tutte le eventuali sotto-directories. Estrazione di un archivio jar -xvf arch.jar arch estrae tutti i files dall'archivio (provenienti dalla sotto- directory arch) e li ripristina nella sotto-directory arch della directory corrente.

Fisica Computazionale I Visualizzazione del contenuto di un archivio jar -tvf arch.jar Mostra il contenuto dell'archivio. Chi conosce Unix avra' notato che il comando jar e' quasi una fotocopia del comando tar (tape archive). La forma generale del comando e' quindi: jar -opzioni nomearchivio [path],[..],[..]

Fisica Computazionale I E' quindi possibile archiviare piu' directories simultaneamente (il comando "jar -cvf arch.jar" archivia tutto il contenuto dell'albero a partire dalla directory corrente), ripristinarle in tutto o solo in parte (indicando quali directories vogliamo estrarre) o semplicemente visualizzare (in tutto o in parte) il contenuto di un archivio.