1 / 270

Argomenti della lezione

Argomenti della lezione. Programmare in Java Un esempio elementare Gli strumenti di Java Struttura di un programma Java Metodi statici Variabili Tipi elementari Istruzioni principali. Il linguaggio Java. Formalismo ad alto livello...

lacey
Download Presentation

Argomenti della lezione

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Argomenti della lezione • Programmare in Java • Un esempio elementare • Gli strumenti di Java • Struttura di un programma Java • Metodi statici • Variabili • Tipi elementari • Istruzioni principali

  2. Il linguaggio Java • Formalismo ad alto livello... • Permette di descrivere programmi basandosi su concetti primitivi “sofisticati” (file, finestre, tabelle, liste, ecc.) • ...basato su una notazione testuale familiare • Codice sorgente • Simile, nella sintassi e nelle istruzioni al linguaggio C

  3. Codice Sorgente • I programmi Java sono suddivisi in “classi” • Le classi sono descritte all’interno di file di testo con estensione “.java” • Ogni file contiene una sola classe • Il nome file deve coincidere con il nome della classe

  4. Un esempio Hello.java public class Hello { // Il programma più semplice public static void main(String[] args) { // Stampa un messaggio sul video System.out.println(“Hello Java”); } }

  5. J Passi concettuali (1) Scrittura Compilazione 10010110110.. .java Codice sorgente .class ByteCode

  6. I passi concettuali (2) Esecuzione Hello, Java! 10010110110.. .class ByteCode

  7. Gli strumenti di Java • La macchina virtuale • Il compilatore • Gli ambienti di sviluppo • La documentazione • Il debugger

  8. Macchina virtuale (1) ApplicazioneJava Applicazionetradizionale MacchinaVirtuale Sistema Operativo Hardware

  9. Macchina virtuale (2) • Astrazione di un elaboratore “generico” • Ambiente di esecuzione delle applicazioni Java • Esempio: • java Hello • Responsabilità: • Caricamento classi dal disco • Verifica consistenza codice • Esecuzione applicazione

  10. J Il compilatore 10010110110.. • Traduzione dei sorgenti testuali in bytecode • Linguaggio della macchina virtuale Java • Esempio:javac Hello.java

  11. Ambienti di sviluppo • Il codice sorgente Java è composto da testo • Un editor qualsiasi è sufficiente • Si possono usare ambienti integrati per lo sviluppo (IDE) • Offrono strumenti per la redazione, la compilazione, l’esecuzione e la ricerca degli errori

  12. Esempi • Eclipse • http://www.eclipse.org • JCreator • http://www.jcreator.com • BlueJ • http://www.bluej.org

  13. Documentazione (1) • Strumento necessarioalla sopravvivenza del programmatore Java!! • Raccolta di informazioni relative alle classi appartenenti alle librerie standard di Java • http://java.sun.com/docs/

  14. Documentazione (2) • Per ogni classe: • Descrizione funzionale • Elenco di attributi: funzionalità, caratteristiche • Elenco dei metodi:funzionalità, parametri in ingresso, valori di ritorno, …

  15. Il debugger • Strumento ausiliarioal programmatore • Monitorare l’esecuzionedi una applicazione • Analisi dei valori assunti dalle variabili, i metodi della classe, … • Comando jdb.exe

  16. Apparati di rete Cellulari ePC palmari PC client Server Elettrodomestici Dove si usa Java?

  17. Java nei sistemi Client • Vantaggi • Facilità di realizzazione delle interfacce grafiche • Indipendenza dalla piattaforma di sviluppo e di utilizzo • Ciclo di sviluppo rapido • Distribuzione immediata, a richiesta, tramite web • Svantaggi • Prestazioni limitate rispetto ad applicazioni native • Ambienti di esecuzione in forte evoluzione • Oggetto di questo corso

  18. Java nei sistemi Server • Varie tipologie di utilizzo: • Servlet / Java Server Pages / Java Server Faces • EnterpriseJavaBean • Application server • È il contesto in cui Java sta ottenendo il massimo successo • Oggetto del corso “Programmazione in ambienti distribuiti”

  19. Java nei sistemi Embedded • Segmento di mercato in forte crescita: • Milioni di PC connessi ad Internet • Centinaia di milioni di telefoni cellulari • Miliardi di elettrodomestici • Vengono usate librerie specifiche • JavaCard, Java Micro Edition, …

  20. Installare Java (1) • Java Software Development KIT (J2SE SDK) • Versione utilizzata nel corso 1.4.x • Disponibile gratuitamente: http://java.sun.com/ • compilatore, librerie standard, macchina virtuale, …

  21. Installare Java (2) • Necessario modificare la variabile d’ambiente • PATH= ... ;<JAVA_HOME>/bin • per invocare i comandi java (compilatore, macchina virtuale, debugger, ...) • In Windows 2000/XP • Pannello di controllo  Sistema  Avanzate Variabili d’ambiente

  22. Programmi Java • Java è un linguaggio ad oggetti • L’unità minima di programmazione è la classe • Un programma Java utilizza una o più classi • Per ora, consideriamo programmi formati dauna sola classe • Un solo file sorgente • Il nome del file coincide con il nome della classe • L’estensione del file è “.java”

  23. Stesso nome! Formato generale Prova.java public class Prova { /* qui vengono riportati attributi e metodi della classe … */ }

  24. Java main(…): la porta sul mondo Java • public static void main(String[] args){/* istruzioni ... */} • Punto di ingresso di ogni applicazione • Invocato automaticamente dalla VM Java

  25. Metodi statici • Sequenze di istruzioni che svolgono un determinato compito • Hanno un nome • Possono avere dei parametri • Possono ritornare un valore • Dovrebbero avere un commento!

  26. public class Test { static int m1(int a, int b) { int c = a*a+b*b; return c; } public static void main(String[] args) { int i = m1(3,4); System.out.println(i); } }

  27. Commenti • Servono a documentare un programma (o una sua parte) • Racchiusi da “/*” e “*/” • “//” inizia un commento che termina a fine riga • Usati sempre troppo poco!

  28. Variabili locali • I metodi possono utilizzare variabili: • Servono a memorizzare risultati intermedi • Dichiarate nel corpo del metodo • Durata temporanea: quando il metodo ritorna, la variabile è distrutta

  29. Tipi: una forma per i dati • Variabili, parametri, valori ritornati hanno un tipoche ne precisa/limita l’uso • Possono contenere solo valori conformi al proprio tipo • Esistono tipi • Semplici (primitivi) • Composti (classi) – descritti nelle lezioni successive

  30. Tipi primitivi • Numerici interi • byte, short, int, long • Numerici reali • float, double • Non numerici • boolean, char

  31. Tipi numerici interi (1) • Valori ammissibili • byte {-128 ... 127} • short {-32768 ... 32767} • int {-2147483648 ... 2147483647} • long {-9.22 E18 ... 9.22E18}

  32. Tipi numerici interi (2) • Operazioni consentite • aritmetiche +,-,*,/,%,++,--,>> • logiche (bit a bit)^, &, |, ~, <<, >>> • confronto ==, !=, >, >=, <, <=

  33. Tipi numerici reali • Valori • float {±3.403E38} 6 cifre significative • double {±1.798E308} 15 cifre significative • Operazioni • aritmetiche (+, -, *, /) • confronto (==, !=,>, >=, <, <=)

  34. Tipi non numerici: boolean • Valori • {false, true} • Operazioni • logiche (&&, ||, !) • confronto (==, !=)

  35. Tipi non numerici: char • Rappresentazione dei caratteri secondo lo standard Unicode • Lettere di vari alfabetiarabo, armeno, bengalese, cirillico,greco, latino, ... • Simbolidiacritici, punteggiatura, matematici, tecnici, ...

  36. Tipi non numerici: char • Rappresentazione su due byte • Le costanti sono indicate tra apici semplici (‘a’) • I valori non stampabili sono rappresentati nel formato unicode (‘\u27AF’) • Operazioni • confronto (==, !=, >,>=, <, <=)

  37. Opzionale Dichiarazioni • Introducono l’utilizzo di una variabile • Formato generale • <Tipo> <Nome> ‘;’ • <Tipo> <Nome> ‘=’ <ValoreIniziale> ‘;’ • Esempi • char c; • int i = 10; • long l1, l2; • La mancata dichiarazione è un errore sintattico

  38. Errore!La variabile “a” non è statainizializzata, e il suo valoreè casuale Usare le variabili (1) • Si può dichiarare una variabile ovunque nel codice di un metodo • Bisogna farlo, però, prima di usarla • Visibilità limitata al blocco di istruzioni in cui è dichiarata • Le variabili devono essere inizializzate! • int a; • int b = a;

  39. Usare le variabili (2) • Ad una variabile può essere assegnato: • Un valore costante • Il risultato di una formula • Esempi • int i = 1, j = 5; • i = (5*j) % 10; • long l =10L; • char c1 = ‘a’, c2 = ‘\u0062’; • boolean b = false;

  40. Argomenti della lezione • Modellare la realtà • Le classi: il modello • Attributi e metodi • Gli oggetti: il mattone • Costruzione e accesso • Riferimenti • Ciclo di vita degli oggetti

  41. Convenzioni sui nomi • Le classi hanno nomi che iniziano con la lettera maiuscola • Metodi, attributi e variabili hanno l’iniziale minuscola • Se un nome è composto da più parole giustapposte, l’iniziale di ogni parola successiva alla prima è maiuscola • int contatoreNumeroOccorrenze = 0; • class CentraleTelefonica { }

  42. Modellare la realtà (1) STATO via1: verde via2: rosso COMPORTAMENTO Parti! Frena! Sterza! STATO motore:acceso velocità: 0

  43. Modellare la realtà (2) • Stato • L’insieme dei parametri caratteristici che contraddistinguono un oggetto in un dato istante • Modellato come insieme di attributi • Comportamento • Descrive come si modifica lo stato a fronte degli stimoli provenienti dal mondo esterno • Modellato come insieme di metodi

  44. Classi • La classe costituisce il “progetto” di un oggetto • Specifica gli attributi • Descrive i metodi • Indica lo stato iniziale • Ogni classe ha un nome • Deve essere univoco

  45. Oggetti • Data una classe, è possibile costruire uno o più oggetti • Gli oggetti vengono detti “istanze” della classe • In Java si utilizza la notazione new NomeClasse ( ); • Ogni oggetto “vive” all’interno della memoria del calcolatore • Qui viene memorizzato il suo stato • Oggetti differenti occupano posizioni differenti

  46. Cerchio r: double … Oggetti class Cerchio { double r; ... } Memoria r:?? new Cerchio()

  47. Stato di un oggetto • Ogni oggetto ha un proprio stato: • Insieme dei valori assunti dagli attributi dell’oggetto • Operando sui metodi, si può modificare lo stato • All’atto della costruzione di un oggetto, occorre assegnare un valore ai diversi attributi • È il compito di un metodo particolare, detto costruttore

  48. Costruttore • Metodo che inizializza gli attributi di una classe • Sintassi particolare: • Ha lo stesso nome della classe • Non indica nessun tipo ritornato class Cerchio { double r; Cerchio() { r=1.0; }}

  49. Cerchio r: double … Costruire oggetti class Cerchio { double r; Cerchio() { r=1.0; } ...} Memoria r:1.0 new Cerchio()

  50. Rettangolo b: double h: double … Costruire oggetti class Rettangolo { double b,h; Rettangolo() { b=2.0; h=1.0; } ...} Memoria r:1.0 b:2.0h:1.0 newRettangolo()

More Related