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
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"); } }
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 NH 2 NH 2
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
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: 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
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
13 Invio di un messaggio Aumenta la luminosità del monitor fisso Gerardo Rosa 14 Invio di un messaggio Aumenta la luminosità del monitor fisso Messaggio Comportamento: - Modifica - La proprietà luminosità -In aumento Referenza ad un oggetto Gerardo Destinatario (Receiver) Aumenta la luminosità del monitor fisso Rosa
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
17 Nomi e referenze Gli oggetti NON hanno nome In Java gli oggetti sono identificati da riferimenti Un riferimento (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"); } }
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 XXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXX Un programma Java Si riferisce a oppure Un oggetto PrintStream Modella
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 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 )
23 Invio di un messaggio Invia un messaggio XXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX System.out.println( Benvenuti al corso ) XXXXX XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXX Un programma Java println( Benvenuti al corso ) Un messaggio println Modella Destinatario: un oggetto PrintStream Benvenuti al corso 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
25 Forma di un programma Almeno per le prime lezioni: import java.io.*; Class ProgramName { public static void main (String[] arg) { statement statement... statement } } Un primo esercizio 26 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.
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) per poter essere eseguito import java.io.*; Class ProgramName { public static void main (String[] arg) { statement statement... statement } } Compilatore Programma sorgente 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 Java byte code
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 (MacOS) Java Virtual Machine (Windows) Java Virtual Machine (Unix)
31 Meccanismi: Esecuzione Esecuzione JDK: java nome-class IDE: voce di menu, icona Un programma Java NON può essere eseguito senza Java Virtual Machine Interpreta il codice Java Byte Code E a sua volta in esecuzione sul calcolatore Byte code Virtual machine 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 01001010010010100 11100100110011100 C1.class 00110111100001010 11001101001000110 Class file:.class 01001010010010100 11100100110011100 00110111100001010 11001101001000110 Class C1 { } Class C2 { } Class Cn { } Prova.java Compilatore 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 C2.class 01001010010010100 11100100110011100 00110111100001010 11001101001000110 01001010010010100 11100100110011100 00110111100001010 11001101001000110 Cn.class
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: //
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
37 Esempio import java.io.*; /* *Program1: Stampa un saluto */ class Program1 { public static void main (String[] arg) { System.out.println("Benvenuti al corso"); } } Errori 38 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
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
41 Passo 1: Installazione JDK 42 Passo 1: Installazione JDK
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
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
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
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
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
53 NetBeans (I) 54 NetBeans (II)
55 NetBeans (III) 56 NetBeans (IV)
57 NetBeans (V) 58 NetBeans (VI)
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