Sei sulla pagina 1di 7

Corso Basilare di Java e OOP - ITI Majorana, Grugliasco(TO)

Primo Incontro Venerd 8 maggio 2009

Presentazione del corso Breve storia di Java Problemi di programmazione che hanno portato alla nascita di Java Caratteristiche di Java Analisi del primo programma Hello World!!! Concetti di Classe e Oggetto Classe punto e istanza di oggetti Concetto di Metodo Classe prodotto, istanza di oggetti e implementazione di metodi Metodo Costruttore Cenno allInput utente in Java

Presentazione del corso Il corso nasce dalla necessit di alcuni studenti delle classi quarte del corso di informatica dellITI Majorana, Grugliasco(TO) di affrontare i paradigmi della programmazione ad oggetti in vista dello stage estivo. stato dunque scelto Java come linguaggio di programmazione base del percorso, che permette una piena e corretta comprensione dei paradigmi della programmazione orientata ad oggetti. Durante il corso verranno mostrate le principali tecniche legate allOOP ed affrontati stili di programmazione professionale. Il corso condotto da Carabetta Luca e il libro scelto da guida Manuale di Java 6, Claudio De Sio Cesari, Hoepli Editore. Il materiale prodotto durante ogni lezione verr successivamente riassunto e raccolto su uno spazio web accessibile a tutti presso lindirizzo http://luxxweb.altervista.org/corsojava/.

Breve Storia di Java Java un linguaggio di programmazione orientato agli oggetti nato in casa Sun Microsystem ufficialmente nel 1995. Il nome Java deriva da una pianta di caff indonesiana. Dal boom di internet negli USA nel 1993, si inizi a pensare di dover distribuire codice eseguibile sulla rete web, Java nasce quindi come elemento web ma fino ad oggi si evoluto e pu essere distribuito ed eseguito su qualsiasi architettura e sistema purch esso supporti JVM.

Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

Problemi di programmazione che hanno portato alla nascita di Java La struttura di Java stata definita basandosi su una riflessione sulle tecniche di programmazione di uso comune, emersero quindi tre problematiche, elementi di intralcio al corretto funzionamento di un programma. Scorretto uso dellaritmetica dei puntatori; i puntatori permettono una gestione della memoria migliore ma il loro uso spesso antagonista a molti programmatori e la maggioranza degli applicativi C/C++ delgi anni 90 soffriva di problemi legati alla stessa aritmetica dei puntatori. Abuso delle variabili globali, esse rappresentano una facilitazione per il programmatore, ma essendo condivise tra i sottoprogrammi, se ne pu facilmente perdere il controllo. Utilizzo non controllato del comando goto che rappresenta anchesso una facilitazione per i programmatori ma facilmente induce in errore.

Java quindi elimina lutilizzo dei puntatori e il comando goto dalla sua struttura.

Caratteristiche di Java Sintassi simile a C/C++, Case Sensistive. Gratuito. Robustezza, soprattutto nella gestione delle eccezioni. Librerie e standardizzazione rilasciate direttamente da Sun Microsystem. Indipendenza dallarchitettura e portabilit del software. Java Virtual Machine, un applicativo che si occupa dell'interpretazione dell'oggetto Java, il quale non tradotto direttamente in linguaggio macchina, ma in uno pseudo linguaggio macchina chiamato bytecode, ogni architettura che provvista e supporta la JVM pu eseguire programmi Java, questa la chiave della portabilit del software Java. OOP gestita in modo preciso, si obbligati a sfruttare i paradigmi della programmazione ad oggetti. Un punto a sfavore della programmazione in Java deriva dalleliminazione dei puntatori, essi permettono una migliore e veloce gestione della memoria; in assenza di queste tecniche gli applicativi Java risultano di prestazioni e velocit minori rispetto ad un codice C++ ad esempio.

Analisi del primo programma Hello World!!!


public class Principale { public static void main(String args[]) { System.out.println("Hello World!!!"); }

Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

public class Principale indica che stiamo operando su una classe(vedi paragrafo successivo)

chiamata Principale e definita come pubblica(vedi paragrafi successivi).


public static void main(String args[]){...} il metodo che per primo viene chiamato in

un applicazione Java, il parametro del sottoprogramma un array di stringhe che rappresenta i parametri passati da riga di comando allapplicazione.
System.out.println("Hello World!!!"); rappresenta la via per realizzare un output in un

codice Java; complessa nella sua struttura e prevede elementi che affronteremo pi avanti nel percorso. Concetti di Classe e Oggetto La programmazione orientata agli oggetti o OOP(Object Oriented Programming) prevede la simulazione della realt nel codice. Definiamo classe una struttura di un certo gruppo presente o concepibile nella realt, possiamo ad esempio definire la classe i Computer; essa non rappresenta unentit fisica tangibile ma delinea le caratteristiche che tutti i computer dovrebbero avere. Definiamo come oggetto unistanza di una classe, nel nostro esempio potrebbe essere un computer preciso mioComputer che rispecchia le caratteristiche della sua classe di appartenenza(i Computer) ma che esiste fisicamente nella realt. 3

Classe Punto e istanza di oggetti Punto

public class Punto { int x; int y; } public class Principale { public static void main(String args[]) { Punto p1 = new Punto(); p1.x = 10; p1.y = 20; System.out.println("ascissa:" + p1.x + "; ordinata: " + p1.y); } }

La classe punto definisce la struttura che tutti i punti dovrebbero avere ovvero la struttura P(x, y). Nella classe Principale abbiamo utilizzato la parola chiave new per creare(istanziare) un oggetto appartenente alla classe punto chiamato p1. Il modificatore public definisce che la classe, o un suo membro, sono visibili da altre classi. Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

La forma per listanza di un oggetto la seguente <<classe>> <<nome oggetto>> = new <<classe>>(<<eventuali parametri>>); Si pu scegliere una seconda via che prevede per prima cosa la dichiarazione di un oggetto appartenente ad una certa classe e successivamente listanza delloggetto stesso. <<classe>> <<nome oggetto>>; <<nome oggetto>> = new <<classe>>(<<eventuali parametri>>); Possiamo notare che, una volta istanziato loggetto, possibile accedere ai suoi campi, ovvero quei valori che sono stati definiti nella classe punto ovvero i valori interi x e y. Laccesso a questi valori avviene tramite loperatore di accesso . e si struttura nella seguente forma: <<oggetto>>.<<campo>>

Concetto di Metodo Un metodo pu essere interpretato come unazione che un oggetto compie o subisce. Ad esempio se noi avessimo loggetto MioComputer, i metodi potrebbero essere Accendi, Spegni, Riavvia e cos via e laccesso a questi metodi dovrebbe avvenire, secondo la sintassi descritta precedentemente, nel seguente modo MioComputer.Accendi, MioComputer.Spegni e cos via.

Classe prodotto, istanza di oggetti e implementazione di metodi


public class Prodotto { double prezzo; public void InserisciPrezzo(double prezzo) { this.prezzo = prezzo; } } public class Principale { public static void main(String args[]) { Prodotto mioProdotto = new Prodotto(); mioProdotto.InserisciPrezzo(8.9); System.out.println("Il prodotto costa " + mioProdotto.prezzo + ""); } }

Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

Osserviamo la classe Prodotto, possiamo notare questo:


public void InserisciPrezzo(double prezzo) { this.prezzo = prezzo; }

Che per lappunto un metodo della classe Prodotto, esso potr essere associato ad un eventuale oggetto istanziato. Una particolarit che si nota nel codice la parola chiave this, essa indica lelemento che attualmente considerato, in questo caso c differenza tra this.prezzo e prezzo poich this.prezzo rappresenta la variabile propria della classe mentre prezzo il parametro. Il metodo in sostanza preleva da parametro un valore e lo va a scrivere nella variabile prezzo propria delloggetto considerato. Normalmente i programmatori Java non scelgono dei nomi diversi per le variabili ma preferiscono utilizzare la parola chiave this per distinguere. Osserviamo il metodo main nella classe Principale, in sequenza possiamo trovare unistanza di un oggetto di nome mioProdotto che segue la classe Prodotto. Successivamente viene richiamato il metodo InserisciPrezzo e ad esso viene passato come parametro il valore 8.9 che verr quindi scritto nella variabile prezzo delloggetto mioProdotto. Questo fatto dimostrato dal fatto che la terza riga, andando a stampare a video la variabile prezzo, manda in output effettivamente il valore 8.9.

Metodo Costruttore Il metodo costruttore un elemento caratteristico della programmazione ad oggetti, un metodo che viene richiamato direttamente allistanza(quando utiliziamo la parola chiave new) di un oggetto. Un metodo costruttore viene dichiarato nella classe interessata e ha lo stesso nome della sua classe. Potremmo ad esempio dichiarare il metodo costruttore della classe Prodotto, che svolge le stesse operazioni del metodo InserisciPrezzo con la differenza che in questo caso il prezzo verr inserito nel momento dellistanza di un prodotto.

public void Prodotto(double prezzo) { this.prezzo = prezzo; }

Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

Listanza delloggetto quindi dovr avere come parametro un valore double che verr poi assegnato alla variabile prezzo delloggetto.
Prodotto mioProdotto = new Prodotto(8.9);

Cenno allInput utente in Java Durante lincontro sorta la necessit di conoscere quelle tecniche che permettono la gestione dellinput dellutente. Purtroppo Java gestisce anche un banale input da tastiera secondo un procedimento alquanto complesso, il motivo deriva dal fatto che questa stessa metodologia utilizzata per leggere da stream diversi. Vediamo un breve codice per la lettura di una stringa da tastiera premettendo che verranno mostrati meccanismi come decorazione di oggetti, eccezioni e stream che verranno in seguito trattati in modo pi approfondito.

import java.io.*; public class principale { public static void main(String args[]) { String stringa = null; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); System.out.println("Digita qualcosa e premi invio"); try { stringa = in.readLine(); System.out.println("hai scritto " + stringa); } catch(IOException e){} } }

La prima istruzione indica che stiamo andando ad importare tutto il contenuto delle librerie java.io. Inizializiamo una stringa a null. Viene istanziato un oggetto isr di tipo InputStreamReader il cui costruttore riceve come parametro System.in ovvero linput standard del sistema che solitamente la tastiera; InputStreamReader permette di convertire uno stream di byte in caratteri. Viene quindi creato un oggetto in che rappresenta unevoluzione di isr, in quanto un isr modificato, questo procedimento si chiama decorazione e verr analizzato in seguito. La classe BufferedReader ci permette laccesso ad un metodo, readLine() che ci consente di leggere dallinput definito. Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro

Brevemente il costrutto try ... catch una gestione delle eccezioni che non completa in questo codice ma comunque necessaria per avere un corretto funzionamento del metodo readLine(). Brevemente il meccanismo di controllo delle eccezioni utilizzato per prevenire errori gravi che potrebbero compromettere il corretto funzionamento del programma, Java un linguaggio di programmazione sicuro in quanto prevede una forte e precisa gestione delle eccezioni che vedremo in dettaglio in seguito.

Leditor utilizzato durante il corso eclipse ed reperibile gratuitamente presso il sito http://www.eclipse.org/ Link diretto: http://tinyurl.com/cdu8qh

Questo documento pu essere scaricato in formato pdf presso lindirizzo http://luxxweb.altervista.org/corsojava/1.pdf Tutto il materiale sar raccolto presso questo indirizzo http://luxxweb.altervista.org/corsojava/

Carabetta Luca - Corso Basilare di Java e OOP - Primo Incontro