Introduzione alla programmazione in Java 1 Programmare ad oggetti La programmazione come attività di creazione di modelli. I concetti di classe, oggetto e scambio di messaggi. Un primo esempio di programma Java. Meccanismi di scrittura ed esecuzione di programmi Java. 2 1 3 Alcuni linguaggi “famosi” Fortran (1955) Cobol, Basic (1960s) Pascal (1969) C (1970) Ada (1984) C++ (1980s) Java (1990s) 4 Un primo programma Java import java.io.*; class Program1 { public static void main (String[] arg) { System.out.println("Benvenuti al corso"); } } 2 5 Programmi e mondo reale Il codice di un programma interagisce con calcolatore ed i suoi componenti così come con entità e processi esterni 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 6 I programmi come modelli Il codice di un programma modella altre cose – Interne: tastiera, dischi, reti, schermo – Esterne: piani di volo, molecole, transazioni bancarie 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 NH2 NH2 3 7 Modelli I modelli sono nati prima dei calcolatori e NON devono necessariamente essere realizzati mediante calcolatori Chiamate Operatori 8 Elementi del modello Ogni modello è formato da elementi che rappresentano altre entità Gli elementi del modello presentano un comportamento consistente A seconda dei loro comportamenti comuni, gli elementi possono essere raggruppati in categorie diverse Il comportamento di un elemento può essere provocato da azioni esterne 4 9 Modelli in Java Elementi del modello: Oggetti La categorie di oggetti vengono chiamate Classi Una classe: – Determina il comportamento degli oggetti appartenenti – E’ definita da una sezione di codice Un oggetto – Appartiene ad una classe – Costituisce una istanza di tale classe 10 Esempio Classe operatore: operatore – Definisce il comportamento degli operatori (ad esempio, cambiamento di locazione, registrano il tempo di un intervento, ecc.) – Ogni operatore in servizio è una istanza di tale classe Classe chiamata: – Definisce il comportamento delle chiamate (ad esempio, priorità, orario di arrivo, cliente chiamante ecc.) – Per ogni chiamata che arriva si crea una istanza 5 11 Programmazione OO Fuoco: gli oggetti – e le classi che ne definiscono il comportamento Filosofia: In un programma in esecuzione sono gli oggetti che eseguono le operazioni desiderate Programmare in Java – Scrivere le definizioni delle classi che modellano il problema – Usare tali classi per creare oggetti Java è dotato di classi ed oggetti predefiniti – Non si deve continuamente reinventare le ruota 12 Messaggi Gli oggetti sono gli elementi attivi di un programma Come fanno gli oggetti a compiere le azioni desiderate ? Gli oggetti sono attivati dalla ricezioni di un messaggio Una classe determina i messaggi a cui un oggetto può rispondere I messaggi sono inviati da altri oggetti 6 13 Invio di un messaggio Aumenta la luminosità del monitor fisso Rosa Gerardo 14 Invio di un messaggio Aumenta la luminosità del monitor fisso Messaggio Comportamento: - Modifica - La proprietà luminosità - In aumento Destinatario (Receiver Receiver)) Referenza ad un oggetto Aumenta la luminosità del monitor fisso Gerardo Rosa 7 15 Messaggi Per l’invio di un messaggio è necessario specificare: – Ricevente – Messaggio – Eventuali informazioni aggiuntive Non tutti i messaggi sono comprensibili da un determinato oggetto: – Es: abbassare il volume – Un messaggio deve invocare un comportamento dell’oggetto 16 Nomi e referenze Le classi hanno un nome – – – – Ogni classe Java deve avere un nome Ogni classe ha un solo nome Es: Impiegato, Molecola, ContoCorrente Convenzione: comincia con una lettera maiuscola Regole Java per i nomi (identificatori) – Lettere, cifre e caratteri speciali (es: “_”) – Devono cominciare con una lettera – Il linguaggio è case sensitive 8 17 Nomi e referenze Gli oggetti NON hanno nome – In Java gli oggetti sono identificati da riferimenti – Un riferimento (reference) reference è una frase che si riferisce ad un oggetto • I riferimento sono espressioni – E’ possibile avere più referenze ad uno stesso oggetto 18 Classi ed oggetti predefiniti Modellano componenti e comportamenti del sistema Modellano l’interfaccia grafica di colloqui con l’utente Modellano “oggetti” di uso comune, ad esempio Data e Calendario Un esempio: il monitor – Ci si riferisce a lui mediante il riferimento: System.out import java.io.*; class Program1 { public static void main (String[] arg) { System.out.println("Benvenuti al corso"); } } 9 19 PrintStream e System.out La classe PrintStream – Modella monitor e stampanti – Comportamento: visualizzare sequenze di caratteri System.out – Una referenze ad un oggetto predefinito – Istanza della classe PrintStream 20 PrintStream e System.out XXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX System.out Un oggetto PrintStream Si riferisce a XXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXX Un programma Java Modella oppure 10 21 Messaggi in Java Forma generale Comportamento-desiderato (altre-informazioni) Esempio: println (“Benvenuti al corso”) – Comportamento: println (stampa una linea) – Informazione: “Benvenuti al corso” (contenuto della linea) 22 Invio di un messaggio Forma generale: Riferimento-al-destinatario.messaggio Esempio: System.out.println (“Benvenuti al corso”) Riferimento Messaggio – L’oggetto a cui si riferisce il riferimento System.out è il destinatario del messaggio println(“Benvenuti al corso”) 11 23 Invio di un messaggio XXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX System.out.println(“Benvenuti al corso”) Invia un messaggio XXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXX Un programma Java println(“Benvenuti al corso”) Un messaggio println Benvenuti al corso Modella Destinatario: un oggetto PrintStream 24 Istruzioni Le istruzioni Java – Provocano un’azione (es: inviare un messaggio) – Devono essere chiusi da punto e virgola “;” Esempio System.out.println (“Benvenuti al corso”); – L’invio di un messaggio deve essere sempre espresso da una istruzione 12 25 Forma di un programma Almeno per le prime lezioni: import java.io.*; Class ProgramName { public static void main (String[] arg) { statement statement ... statement } } 26 Un primo esercizio Scrivere un programma che annunci il vostro primo programma e l’intenzione di continuare This is my first Java program but it won't be my last. 13 27 Meccanismi: Editing Il testo dei programmi è memorizzato in file I file sono creati con opportuni editor import java.io.*; Codifica Class ProgramName { public static void main (String[] arg) { statement statement ... statement } } Programma sorgente 28 Meccanismi: Compilazione Il programma sorgente deve essere tradotto (compilato) compilato per poter essere eseguito import java.io.*; Class ProgramName { public static void main (String[] arg) { statement statement ... statement } } Compilatore Programma sorgente Java byte code 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 14 29 Meccanismi: Compilazione Compilazione – JDK: javac nome-del-file – IDE: voce di menu Java Byte Code – – – – Il linguaggio macchina di una macchina virtuale Java Virtual Machine NON leggibile dall’uomo Conservato in class files 30 Meccanismi: Esecuzione Un class file può essere eseguito su ogni piattaforma che ha la Java Virtual Machine – Un programma; interprete 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 Java Virtual Machine (Windows) Java Virtual Machine (Unix) Java Virtual Machine (MacOS) 15 31 Meccanismi: Esecuzione Esecuzione – JDK: java nome-class – IDE: voce di menu, icona Byte code Un programma Java NON può essere eseguito senza Java Virtual Machine Virtual machine – Interpreta il codice Java Byte Code – E’ a sua volta in esecuzione sul calcolatore Piattaforma 32 Nomi dei file Il compilatore produce un diverso class file per ogni classe definita in un file sorgente – Il nome di ogni class file coincide con il nome della classe – File sorgenti: .java C1.class – Class file: .class 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 … Class C1 { … } Class C2 { … } … Class Cn { … } Prova.java C2.class Compilatore 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 Cn.class 16 33 Elementi del linguaggio Java Regole per la costruzione delle frasi Identificatori Parole chiave (keywords) – Significati predefiniti – Es: import, class, public, static, void – NON PrintStream Ordine delle istruzioni – Ordine lessicografico coincidente con l’ordine di esecuzione 34 Elementi del linguaggio Java Il formato del è libero – Indentazione – Convenzioni • Una istruzione per linea • Usare i tab e non gli spazi per l’indentazione Commenti – Racchiusi da delimitatori: /* …*/ – Su linea singola: // 17 35 Elementi del linguaggio Java /* Il mio primo commento */ /* * Il mio primo commento */ // Il mio primo commento Statement // Il mio primo commento 36 Linee guida Inserire un commento prima di ogni classe per spiegarne scopo e comportamento NON spiegare come funziona Java Dare informazioni che non possono essere facilmente derivate dal codice Mai interrompere una istruzione con un commento 18 37 Esempio import java.io.*; /* *Program1: Stampa un saluto */ class Program1 { public static void main (String[] arg) { System.out.println("Benvenuti al corso"); } } 38 Errori A tempo di compilazione – Scoperti dal compilatore – Es: mancanza del punto e virgola, parentesi aperte e non chiuse A tempo di esecuzione (run time) – Scoperti solo all’atto dell’esecuzione del programma – Es: output difforme da quello atteso 19 Quick start 39 40 Passo 1: installazione J2SDK Il J2SDK (Java 2 Software Development Kit) contiene – – – – Compilatore Java->ByteCode (javac) Java Virtual Machine, per eseguire i programmi Java (java) Librerie: I/O, Rete, Interfacce Utente, Grafica, Utilità, etc. E molto altro… Per Windows è un eseguibile (.exe) Æ cliccare sull’icona jdk-1_5_0_01-windows-i586-p Per Linux: ./jdk-1_5_0_01-linux-i586.bin Per Linux (RPM): rpm –ih ./jdk-1_5_0_01-linux-i586.bin 20 41 Passo 1: Installazione JDK 42 Passo 1: Installazione JDK 21 43 Passo 2: Settare il path La variabile d’ambiente path contiene la lista dei percorsi in cui l’interprete dei comandi o Explorer vanno a cercare programmi eseguibili – Occorre aggiungervi il percorso delle applicazioni del Java SDK Cliccare col tasto destro su “Risorse del computer” e aprire la finestra Proprietà. Selezionare il tab “Avanzate” Cliccare su variabili d’ambiente e modificare la variabile di sistema “Path” 44 Passo 2: Settare il path 22 45 Passo 2: Settare il path Aggiungere in testa alla variabile di sistema path il percorso di J2SDK…\bin, ovvero, nel nostro caso: – C:\Programmi\Java\jdk1.5.0_01\bin Separare tale percorso dal resto del contenuto della variabile mediante un punto e virgola “;” 46 Passo 2: Settare il path 23 47 Il classpath La variabile d’ambiente CLASSPATH contiene la lista di percorsi in cui la Java Virtual Machine va a cercare le classi quando un programma Java viene eseguito – Tale variabile deve contenere il “.” (directory corrente) – Necessario quando si esegue un programma Java dalla directory in cui esso è contenuto – Aggiungere la variabile in maniera simile a quanto fatto per il PATH 48 Installazione documentazione Decomprimere il file jdk-1_5_0-doc.zip nella cartella C:\Programmi\Java\jdk1.5.0_01 Sarà creata una cartella docs contenente la documentazione in html del J2SDK Tale cartella conterrà ora documentazione html del Java SDK 24 49 Passo 3: creazione programma Un qualsiasi editor va bene (Notepad, Xemacs, etc.) Salvare il file con estensione .java (es. prova.java) 50 Passo 4: compilazione javac prova.java 25 51 Passo 5: esecuzione 52 Uso di un IDE: NetBeans Integrated Development Environment (IDE) sviluppato dalla SUN – – – – – – – Editor guidato dalla sintassi Browsing delle classi Wizard per la creazione automatica di classi Compilazione e esecuzione dall’IDE Editor (semplificato) di interfacce utente Molto altro!! Installarlo dall’apposito package • jdk-1_5_0_01-nb-4_0-bin-win 26 53 NetBeans (I) 54 NetBeans (II) 27 55 NetBeans (III) 56 NetBeans (IV) 28 57 NetBeans (V) 58 NetBeans (VI) 29 59 Esercizi Installare il J2SDK Creare un semplice programma con un editor di testo Compilare il programma Eseguire il programma Ripetere l’operazione con NetBeans 30