Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad...

21
Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV

Transcript of Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad...

Page 1: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

ModuloObject Oriented Programming

(Linguaggio Java)Il Modulo si riferisce ad una classe IV

Page 2: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Prerequisiti

- Conoscenze di programmazione imperativa già acquisite nella classe III nel corso di programmazione in C o altro linguaggio imperativo;

- Conoscenza elementare di HTML (non indispensabile);

Page 3: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo4° anno: 15 settimane

Obiettivi

- Comprendere la “filosofia” della programmazione OO e le differenze rispetto alla programmazione procedurale;

- Capire l’uso del java per la creazione di semplici applicativi web (opzionale);

Page 4: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modalità- Si preferirà partire prima da esempi di creazione di oggetti e

metodi in java piuttosto che dalla teoria proprio a causa della natura della programmazione ad oggetti che tende a ricostruire la realtà tramite gli oggetti;

- Si partirà dalla modellazione di oggetti molto semplici (magari di uso comune) evolvendo verso oggetti via via più complessi e astratti man mano che si applicano le peculiarità del java;

4° anno: 15 settimane

Strumenti- Appunti

Page 5: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modalità- Si preferirà partire prima da esempi di creazione di oggetti e

metodi in java piuttosto che dalla teoria proprio a causa della natura della programmazione ad oggetti che tende a ricostruire la realtà tramite gli oggetti;

- Si partirà dalla modellazione di oggetti molto semplici (magari di uso comune) evolvendo verso oggetti via via più complessi e astratti man mano che si applicano le peculiarità del java;

4° anno: 15 settimane

Strumenti- Appunti

Page 6: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modulo linguaggio Java

UD1: Introduzione al linguaggio Java Storia di Java. Il World Wide Web. Brevi cenni su HtML. Introduzione. Esempi Java(Laboratorio).

UD2: Costrutti principali in java Tipi di dati; Operatori e costrutti (rivisitati in Java); Librerie a package in java ed esempi (java.lang e java.math); Esercitazioni pratiche in laboratorio;

4° anno: 15 settimane

Page 7: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modulo linguaggio Java UD3: Le classi in java Dichiarazione di una classe. Metodi e attributi. Passaggio dei parametri. Metodo costruttore. Creazione e uso degli oggetti.

UD4: I metodi Passaggio dei parametri per riferimento; Utilizzo del this; Public e private e static; Overload dei metodi; Esempi pratici in laboratorio

4° anno: 15 settimane

Page 8: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modulo linguaggio Java

UD5: Interfaccia utente grafica(GUI) Principi generali di progettazione I componenti GUI Il modello di gestione degli eventi I layout manager Esempi pratici di laboratorio

UD6: Le applet Concetto di applet; La prima applet; Richiami di HTML per l’uso delle applet; I metodi init, start, run, stop, destroy e paint; Esempi di applet.

4° anno: 15 settimane

Page 9: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Modulo linguaggio Java

UD7: Java e web (modulo extra) Cenni al modello client-server; Modello di un’applicazione web; Cenni sui database; Le java servlet; Esempi di applicazione (laboratorio).

4° anno: 15 settimane

Page 10: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Storia di JavaJava venne concepito presso Sun Microsystem nel 1981.Fatto piuttosto sorprendente è che la spinta originale verso la creazione di Java non proviene da internetbensì la necessità di un linguaggio indipendente dalla piattaforma.Circa nel periodo in cui vennero elaborati il dettagli di Java, emerse il World Wide Web.Grazie al Worl Wide Web, Java venne spinto in prima linea.Java deve gran parte del suo stile al C e al C++ e grazie a queste sue caratteristiche potrebbe esserepensato come la versione Internet del C++, ma in realtà le differenze sono sia pratiche che filosofiche .Java e C++ sono due linguaggi non compatibili.

Unità didattica 1: Introduzione al linguaggio Java

Page 11: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Il World Wide WebIl World Wide Web è nato nel 1989 al CERN(centro europeo per la ricerca sulla fisica nucleare).Il Web consiste in un’enorme collezione di documenti sparsi per il mondo chiamati pagine.Ogni pagina può contenere puntatori(link) ad altre pagine correlate.La nozione di pagine che puntano ad altre pagine viene detta ipertesto.Le stringhe di testo che sono puntatori ad altre pagine sono dette iperpuntatori.Quando le pagine di ipertesto sono mischiate con altre di diversa natura, il risultato è dettoipermediale.

Il protocollo di trasferimento del Web è HTTP(Hypertex Transfer Protocol). Ogni stringa corrispondente ad una pagina è costituita di tre parti:il nome del protocollo(http), il nome della macchina su cui si trova la pagina e il nome del file che contiene la pagina.

Unità didattica 1: Introduzione al linguaggio Java

Ad ogni pagina è assegnato un URL(Uniform Resource Locator) che ha la funzione di nome di paginaunivoco per tutto il mondo.Gli URL hanno tre parti: il protocollo, il nome DNS della macchina sulla quale si trova la pagina, e unnome locale che indica in maniera unica la pagina specificata.Ad esempio l’URL:http://www.unict.it/welcome.html

Page 12: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Brevi cenni su HTML

Unità didattica 1: Introduzione al linguaggio Java

HTML(Hypertex Markup Language)Html è un linguaggio che usa annotazioni(markup) per descrivere il modo in cui i documenti vannoformattati.I linguaggi con markup quindi contengono dei comandi espliciti per la formattazione.Ad esempio <B>significa iniziare in modalità grassetto </B>

Una pagina Web include un’intestazione e un corpo racchiusi tra i tag(comandi di formattazione)<HTML></HTML> anche se molti browser non si curano della mancanza.L’intestazione è racchiusa tra i tag <HEAD></HEAD> e il corpo tra i tag <BODY> </BODY>.

Molti tag Html hanno il formato <QUALCOSA> </QUALCOSA> che indica la fine del tagI tag possono essere sia in minuscolo che in maiuscolo.Alcuni tag hanno dei parametri<IMG SRC=”Ciao” ALT=”Ciao”>

Page 13: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Gli iperpuntatori utilizzano il tag <A> e </A>. Se selezioniamo, l’iperpuntatore conduce a una nuovapagina.In questo punto si può anche inserire un’immagine<IMG>.Come esempio, consideriamo il seguente frammento di HTML:<A HREF=http://www.unict.it> Università di Catania </A>oppure <A HREF=http://www.unict.it> <IMG SRC=”logo.gif” ALT=”unict”> </A>

I forms(moduli) contengono scatole o bottoni che permettono all’utente di inserire informazioni o di fare delle scelte e quindi rimandare le informazioni al proprietario della pagina. A questo scopo è usato il tag <INPUT>. Le form sono racchiuse tra i tag <FORM> </FORM>

Una pagina Web può puntare ad un piccolo programma Java detto anche applet.Quando il browser lo raggiunge, l’applet viene caricato sulla macchina utente e qui eseguito in modosicuro.Cioè è strutturalmente impossibile per un applet leggere o scrivere qualsiasi file che non sia autorizzatoad accedere.Gli applet consentono alle pagine Web di diventare interattive.Vengono eseguite sul client rendendo possibile l’aggiunta di animazione e suono senza dovere eseguiredei programmi di aiuto.

Page 14: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

1. Introduzione

I linguaggi di programmazione si suddividono in due categorie: Interpretati. Per essere eseguiti necessitano di un interprete appropriato. Compilati. Il compilatore produce un codice direttamente eseguibile dal s.o.

I linguaggi compilati, come il C, sono notoriamente più veloci. Un applicazione scritta in C (standardANSI), può essere facilmente ricompilata in modo da essere eseguita su un s.o. diverso da quellooriginale. Questa caratteristica rende il C un linguaggio portabile. Nella pratica di tutti i giorni loscenario è ben diverso. Un applicazione comune, fa uso di caratteristiche specifiche del s.o. su cui gira,e sfrutta in dosi massicce le componenti grafiche. Un applicazione cosiffatta, anche se scritta in c, nonpuò considerarsi portabile.Il linguaggio Java è una via di mezzo tra un linguaggio interpretato ed uno compilato. Per le suecaratteristiche viene considerato un linguaggi realmente portabile, senza necessità di ricompilazione.L'output di un compilatore Java non è un codice eseguibile, bensì un bytecode, ovvero un insiemealtamente ottimizzato di istruzioni concepite per essere eseguite da una macchina virtuale (Java VirtualMachine) che funge da interprete del bytecode. Esiste una JVM diversa per ogni attuale s.o.

La scelta di creare Java come linguaggio interpretato ha favorito due aspetti fondamentali: La portabilità. Capacità di un programma di funzionare su diversi ambienti. La sicurezza. L’esecuzione del programma Java avviene sotto il controllo della JVM

La differenza tra un interprete basic ed uno Java è notevole: il primo interpreta un file testo, il secondointerpreta un file “precompilato” contenente bytecode. Per questa ragione la velocità di esecuzione diJava non è così penalizzante

Unità didattica 1: Introduzione al linguaggio Java

Page 15: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Java può essere usato per creare vari tipi di programmi, i più usati sono: Applicazioni stand-alone: equivale ad applicazioni create in C/C++. Applet: Applicazione concepita per essere trasmessa su internet ed eseguita dal browser. Un

applet viene scaricata automaticamente come componente di una pagina web. Servlet: Applicazione concepita per essere eseguita su un server, invocata e parametrizzata dal

client. Queste applicazioni necessitano di webserver speciali.

Di seguito si possono riassumere le principali qualità di un’applicazione scritta in Java:

Qualità di java: Semplice Sicuro Portabile OOP Solido (Buona gestione degli errori anche a run-time) Multithreaded Indipendente dall’architettura Interpretato con prestazioni elevate Distribuito (gestione TCP/IP) Dinamico.

2. Fondamenti della programmazione OOP.

OOP (Object Oriented Programming) è una metodologia di programmazione che aiuta ad organizzareprogrammi complessi mediante l’impiego dei concetti di: Ereditarietà, Incapsulazione e Polimorfismo.Esistono, oltre a quelli precedentemente citati, altri concetti essenziali per la comprensione dellemetodologie OOP. Analizziamoli tutti:

Unità didattica 1: Introduzione al linguaggio Java

Page 16: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Unità didattica 1: Introduzione al linguaggio Java

InterfacciaE’ un astrazione che descrive cosa fanno i membri pubblici di una classe. Ad un utilizzatore non serveconoscere le funzionalità di tutti i membri di una classe, ma solo quelli a lui utili. L’interfacciastabilisce quali richieste possono essere inoltrate ad un determinato oggetto. Ad esempio, per fare unatelefonata da un GSM, basta conoscere il numero da chiamare e qual è il tasto di composizione. Tutto ilresto può risultare superfluo. Questo è un concetto astratto e non ha nulla a che vedere con la parolachiave interface analizzata nei capitoli successivi.

GerarchiaUtilizzare le classificazioni gerarchiche è indispensabile per suddividere un sistema complesso in tantipiccoli sistemi più semplici da costruire (Divide et impera).

La classeE’ un entità astratta che descrive un insieme infinito di elementi che hanno caratteristiche identiche. Lecomponenti di una classe vengono denominati Membri e si dividono in:

Variabili di istanza (dati) Metodi (funzioni)

OggettoUn oggetto è un istanza concreta di una classe. La classe e l’oggetto sono due cose diverse. Tutti gli oggettiappartenenti ad una stessa classe non sono uguali tra loro, difatti occupano zone di memoria differenti.

Page 17: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

L’incapsulazioneCapacità di un oggetto di contenere sia i dati sia le funzioni per manipolarli.Racchiudere programmi e dati in componenti ben definiti (prima dati e codice erano slegati) consentedi proteggere i dati da interferenze esterne, consentendone l’accesso solo tramite speciali funzioni. Ilpotere del codice incapsulato risiede nel fatto che tutti sanno come accedervi e di conseguenza possonoutilizzarlo a prescindere dai dettagli della sua implementazione. La base dell’incapsulazione è la classe.

EreditarietàE’ il processo tramite il quale una classe acquisisce (eredita) le proprietà di un'altra classe. Si chiameràsuperclasse la classe da cui si ereditano le caratteristiche e sottoclasse quella che le riceve. Lo scopoprincipale dell’ereditarietà è quello di estendere le capacità di una classe aggiungendone di nuove,oppure ridefinire (overriding) quelle esistenti. Se un metodo non viene trovato nell’ oggetto in cui vienechiamato, viene ricercato in tutta la catena di ereditarietà arrivando fino alla classe radice, senecessario. Se si modifica una superclasse, queste modifiche si rifletteranno su tutte le sottoclassi.

PolimorfismoE’ la caratteristi tramite la quale è possibile ottenere comportamenti diversificati (polimorfici) da partedi un oggetto, a seconda dei casi. La stessa interfaccia può essere utilizzata per un insieme generico dioperazioni. In una frase si può descrivere il polimorfismo come: unica interfaccia, metodi multipli.L’uso del metodo desiderato viene determinato in base alla natura dei dati su cui si opera.

Unità didattica 1: Introduzione al linguaggio Java

Page 18: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Class Example{//Your program begins with call to main().

Public static void main(String args[]){System.out.println(“This is a simple Java program”)}

}

Primo Esempio

Secondo EsempioClass Example2{

Public static void main(String args[]){Int num;

num=100;System.out.println(“This is num: “ + num);Num = num * 2;System.out.print(“The value of num * 2 is “);System.out.println(num);

}}

Unità didattica 1: Introduzione al linguaggio Java

Page 19: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Regole per la scrittura di un programma Java:

1. Java fa distinzione tra maiuscole e minuscole, anche nei nomi dei files.2. I files sorgenti di java devono avere l’estensione .java.3. Qualsiasi programma Java deve risiedere all’interno di una classe.4. La definizione della classe e la sua implementazione devono risiedere sullo stesso file.5. Tutte le applicazioni Java di tipo stand-alone cominciano chiamando il metodo main.6. Se è presente un metodo main, il file si deve chiamare con lo stesso nome della classe che

contiene il main.7. Il metodo main deve essere dichiarato public, in quanto deve essere visibile all’esterno della

classe in cui è dichiarato, static, perché deve essere chiamato senza instanziare un oggetto diquella classe (questo perché primo è una classe ma non un oggetto). void in quanto non havalori di ritorno.

8. Il metodo main deve avere come parametro String args[].9. Ogni file sorgente può contenere al massimo una classe pubblica, che deve avere lo stesso nome

del file.10. La classe è un tipo di dati mentre un oggetto è un istanza di quel tipo.11. l’oggetto viene creato dinamicamente a tempo di esecuzione.12. Definire una classe è quasi come creare un nuovo tipo di dati.13. Tutti gli oggetti vengono passati per riferimento, mentre tutti le variabili per valore.14. Creare un riferimento ad una classe senza associare ad esso un oggetto può generare errore, se

si tenta di usare il riferimento non collegato.15. La classe può essere dichiarata in qualunque parte del file, non ha importanza se prima o dopo i

main.16. Java dopo la compilazione genera tanti file .class quante sono le classi presenti nel file sorgente.

Unità didattica 1: Introduzione al linguaggio Java

Page 20: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

Compilare il programma

Per compilare il programma primo, eseguite il compilatore javac, specificandoIl nome del file sorgente sulla riga di comando, come illustrato qui di seguitoC:\>Javac Example.java.Il compilatore javac crea un file chimamato Example.class contenente la version bytecode delprogramma.Come già discusso, il bytecode è una rappresentazione intermedia del programma.Di conseguenza l’output di javac non è un codice che possa essere eseguito direttamente.Per esguiredavvero dovremo usare l’interprete di Java, chiamatoJava.C:\>java ExampleE’ una buona idea attribuire ai file soregente java lo stesso nome della classePerché quando il codice sorgente di Java viene compilato, ogni singola classe viene inserita nelproprio file di output con lo stesso nome della classe.

Unità didattica 1: Introduzione al linguaggio Java

Page 21: Autore:Nadia Patelmo Modulo Object Oriented Programming (Linguaggio Java) Il Modulo si riferisce ad una classe IV.

Autore:Nadia Patelmo

FINE

Unità didattica 1: Introduzione al linguaggio Java