Programmazione Orientata agli Oggetti in Linguaggio Java

26
G. Mecca – Università della Basilicata – [email protected] Programmazione Orientata agli Oggetti in Linguaggio Java Introduzione Piattaforme di Riferimento versione 1.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) 2 G. Mecca - Programmazione Orientata agli Oggetti Sommario m Linguaggi di Riferimento m La Piattaforma Java m La Piattaforma .NET m Caratteristiche del Linguaggio Java m Caratteristiche del Linguaggio C# m Utilizzo degli Strumenti Piattaforme >> Sommario

Transcript of Programmazione Orientata agli Oggetti in Linguaggio Java

Page 1: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

1

G. Mecca – Università della Basilicata – [email protected]

Programmazione Orientataagli Oggetti in Linguaggio Java

IntroduzionePiattaforme di Riferimento

versione 1.2Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

2G. Mecca - Programmazione Orientata agli Oggetti

Sommario

m Linguaggi di Riferimentom La Piattaforma Javam La Piattaforma .NETmCaratteristiche del Linguaggio JavamCaratteristiche del Linguaggio C#mUtilizzo degli Strumenti

Piattaforme >> Sommario

Page 2: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

2

3G. Mecca - Programmazione Orientata agli Oggetti

Linguaggi di Riferimento

m In questo corsoðtecniche e metodi della programmazione a

oggetti

m Linguaggio principaleðJava

m Linguaggio secondarioðC# della piattaforma Microsof.NET

Piattaforme >> Linguaggi di Riferimento

4G. Mecca - Programmazione Orientata agli Oggetti

Linguaggi di Riferimento

mDomanda: Perché questi due linguaggi ?ðin effetti ne esistono molti altriðSmalltalk (tradizionale)ðDelphiðPython (recente)

mRispostaðrappresentano le piattaforme di riferimento

attuali per lo sviluppo softwareðuna serie di caratteristiche distintive

Piattaforme >> Linguaggi di Riferimento

Page 3: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

3

5G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mComplessa piattaforma softwareðcentrata attorno al linguaggio Javaðideata dalla Sun (http://www.java.sun.com) e

tuttora di “proprietà” della Sunðsviluppata attraverso lo Java Community

Process (JCP, http://www.jcp.org)mEssenzialmenteðun complesso di specifiche e di componenti

software

Piattaforme >> La Piattaforma Java

6G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mUn po’ di storiaðnasce da un progetto della Sun (progetto

Green) con scopi totalmente diversiðinizialmente si chiamava OakðJava 1.0 – rilasciato nel 1995 dalla SunðJava 1.1 – rilasciato nel 1997

m Java 2ðdalla v. 1.2 del 1998, riscrittura significativaðattualmente 1.4, verso la 1.5

Piattaforme >> La Piattaforma Java

Page 4: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

4

7G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mAttualmenteðla piattaforma è organizzata in tre livelli

m J2SE – Java 2 Standard Editionðper lo sviluppo di applicazioni desktop

m J2EE – Java 2 Enterprise Editionðper lo sviluppo di applicazioni lato server

m J2ME – Java 2 Micro Editionðper lo sviluppo di applicazioni mobili

Piattaforme >> La Piattaforma Java

8G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mOgnuno dei livelli si compone diðuna serie di specifiche (documenti)ðuna serie di strumenti (es: compilatore,

debugger ecc.)ðuna serie di librerie o API (Application

Program Interfaces)ði livelli più complessi includono i più semplici

Piattaforme >> La Piattaforma Java

Page 5: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

5

9G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

Piattaforme >> La Piattaforma Java

fonte: www.java.sun.com

10G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mPrincipali caratteristiche della piattaformaðI. scalabile e pensata per applicazioni

distribuiteðII. fornisce un’ampia libreria di classiðIII. indipendente dalla piattaforma hardware e

realmente “portabile”

Piattaforme >> La Piattaforma Java

Page 6: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

6

11G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m I. Scalabilità e Applicazioni Distribuiteðorientata alle applicazioni di reteðcon attenzione agli aspetti di sicurezza e

prestazioniðconsente di sviluppare applicazioni di vario

genereðsia di piccole e medie dimensioniðsia di grandi dimensioni e altissimo carico

Piattaforme >> La Piattaforma Java

12G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m Le varie classi di applicazioniðapplicazioni “desktop” tradizionali di qualsiasi

genereðapplicazioni client-server a due livelliðapplicazioni Web a tre livelli, anche con

componenti distribuiti e ad alto trafficoðapplicazioni per dispositivi mobiliðapplicazioni innovative (es: Web Services)

Piattaforme >> La Piattaforma Java

Differenza con altrilinguaggi/piattaforme

es: C++

Page 7: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

7

13G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

Piattaforme >> La Piattaforma Java

fonte: www.java.sun.com server accessibile in rete

clientes:

browser basidi

dati

14G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m II. Ampia Libreria di Classiðlibrerie per qualsiasi esigenza di calcoloðAPI (“Application Program Interface”): collezione di

librerie di classi disponibili per l’usoðattualmente più di 3000 classi, 32000 metodi e circa

130 packageðcollezioni (liste, pile ...)ðprogrammazione grafica (finestre, bottoni, menu...)ðcomunicazione di reteðconnessione ad un DBMS ecc.

Piattaforme >> La Piattaforma Java

Differenza con altrilinguaggi/piattaforme

es: C++

Page 8: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

8

15G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

Piattaforme >> La Piattaforma Java

fonte: www.java.sun.com

16G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

Piattaforme >> La Piattaforma Java

3213830201.4

2390121301.3

2093517811.2

54785041.1

21252121.0

Numero di Metodi delle API Standard

Numero di Classi delle API Standard

Versione di J2SE

fonte: Horstmann, Cornell – “Core Java 2”, Volume I

Page 9: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

9

17G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m III. Indipendenza dalla piattaformaðcaratteristica essenziale di Java

m Le originiðle “applet” Javaðidea: scaricare codice dalla rete ed eseguirlo

attraverso il browserðrequisito essenziale: il codice doveva essere

eseguibile indipendentemente dall’hardware e dal sistema operativo

Piattaforme >> La Piattaforma Java

18G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mAttenzioneðin C++ (e in tutti i linguaggi tradizionali):ðuna volta compilato, il codice oggetto e poi

l’eseguibile contengono codice macchina specifico del (a) processore (b) sistema operativo utilizzatoðper eseguire il codice su altre piattaforme

hardware bisogna ricompilarlo (sperando che tutte le librerie usate e le funzionalità siano compatibili)

Piattaforme >> La Piattaforma Java

Page 10: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

10

19G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m Nel caso di Javaðil compilatore produce codice oggetto in un

linguaggio intermedio per una “macchina virtuale”m Java Virtual Machineðun processore virtuale, registri virtuali della memoria

ecc.ðil tutto simulato attraverso un’applicazione (java.exe)

m Bytecodeðlinguaggio intermedioðistruzioni eseguibili dalla macchina virtuale

Piattaforme >> La Piattaforma Java

20G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

Piattaforme >> La Piattaforma Java

compilatorejavac

codice sorgenteProva.java

010010011100101100110011

bytecodeProva.class

JVMjava

110 111 010 001101 101

codice eseguibilemacchina fisica

010010011100101100110011bytecode

delle librerie

ATTENZIONEal processo di

compilazione edesecuzione

Page 11: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

11

21G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

mEsecuzione da parte della JVMðin linea di principio la macchina virtuale

potrebbe eseguire lo bytecode come se fosse un interprete (es: Basic)

m Tipicamenteðper ragioni di prestazioni il bytecode viene

compilato al voloðJIT Compiler (Just in Time Compiler)

Piattaforme >> La Piattaforma Java

22G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma Java

m In questo modoðil codice può essere compilato una volta ed

eseguito da molte macchine diverseðbasta che ciascuna delle macchine disponga

di una implementazione della JVM e delle librerie necessarie

m JRE – Java Runtime EnvironmentðJVM e API di J2SEð“compile once, run anywhere”

Piattaforme >> La Piattaforma Java

Differenza con altrilinguaggi/piattaforme

es: C++

Page 12: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

12

23G. Mecca - Programmazione Orientata agli Oggetti

Introduzione

Piattaforme >> La Piattaforma Java

fonte: www.java.sun.com

24G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

mPiattaforma di riferimento della Microsoftðdal 2000ðper molti versi, una risposta alla larghissima

diffusione di JavamPrincipali caratteristicheðI. scalabile e pensata per applicazioni

distribuiteðII. fornisce un’ampia libreria di classiðIII. multilinguaggio

Piattaforme >> La Piattaforma .NET

Page 13: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

13

25G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

m I. Scalabile e pensata per applicazioni distribuiteðesattamente come la piattaforma Javaðdalle applicazioni di fascia alta ai palmariðmaggiore enfasi su standard recentiðXML e Web services

m II. Fornisce un’ampia libreria di classiðesattamente come la piattaforma Java

Piattaforme >> La Piattaforma .NET

26G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

Piattaforme >> La Piattaforma .NET

fonte: Microsoft .NETAcademic Resource Kit

Web Form

.NET Framework

Windows

Web Service

.NET FoundationWeb Services

Your InternalWeb Service

Third-PartyWeb Services

.NET EnterpriseServers

Clients Applications

Protocols: HTTP,HTML, XML, SOAP, UDDI

server accessibilein rete

client

altri sistemi; es:basi di dati

Page 14: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

14

27G. Mecca - Programmazione Orientata agli Oggetti

Introduzione

Piattaforme >> La Piattaforma .NET

System.Data

DesignOLEDB

SQLTypesSQL

System

GlobalizationDiagnosticsConfigurationCollections

ResourcesReflectionNetIO

ThreadingTextServiceProcessSecurity Runtime

InteropServicesRemotingSerialization

System.Xml

XPathXSLT Serialization

System.Web

Configuration SessionStateCaching Security

ServicesDescriptionDiscoveryProtocols

UIHtmlControls

WebControlsSystem.Drawing

ImagingDrawing2D

TextPrinting

System.Windows.FormsForm Button

MessageBox ListControl

fonte: Microsoft .NETAcademic Resource Kit

28G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

m III. Multilinguaggioðpensata per consentire l’interoperabilità di

codice scritto con linguaggi diversiðC#, Visual Basic.NET, C++.NET, J# ...

m Idea (...)ðarchitettura software basata su una

macchina virtualeðed un linguaggio intermedio

Piattaforme >> La Piattaforma .NET

Page 15: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

15

29G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

mMacchina virtualeðCLR – Common Languare Runtime, dotata di

un compilatore JIT per Windows

m Linguaggio IntermedioðMSIL – Microsoft Intermediate Languageðlinguaggio in cui viene compilato il codice di

tutti i linguaggi della famiglia .NETðsotto forma di assembly (>>)

Piattaforme >> La Piattaforma .NET

30G. Mecca - Programmazione Orientata agli Oggetti

Introduzione

Piattaforme >> La Piattaforma .NET

fonte: Microsoft .NETAcademic Resource Kit

CLR

VB.NETSource code

Compiler

C++C#

Assembly AssemblyAssembly

Operating System Services

MSIL

Common Language Runtime JIT Compiler

Compiler Compiler

Nativecode

ManagedCode

ManagedCode

ManagedCode

UnmanagedCode

CLR Services

Page 16: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

16

31G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

mAttenzioneðla compilazione, come nel caso di Java,

genera codice intermedio (IL)ðnel caso di .NET, questo codice viene

definito assembly, e può avere varie estensioni, tra cui .exeða differenza di Java, per eseguire l’assembly

non è necessario invocare esplicitamente la macchina virtuale (il sistema operativo la esegue automaticamente)

Piattaforme >> La Piattaforma .NET

32G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

mPer eseguire codice .NETðuna macchina Windows deve avere installato

il .NET Framework

m .NET FrameworkðCLRðAPI di .NETðanalogo di JRE

Piattaforme >> La Piattaforma .NET

Page 17: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

17

33G. Mecca - Programmazione Orientata agli Oggetti

La Piattaforma .NET

mDi conseguenzaðalcune fortissime analogie con la piattaforma

Java

mDue significative differenzeðun linguaggio contro molti linguaggi (...)ðindipendenza dalla piattaforma hardware

contro dipendenza (di fatto) da Windows

Piattaforme >> La Piattaforma .NET

34G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio Java

mPrincipali caratteristiche del linguaggioðI. completamente orientato agli oggettiðII. sintassi basata sul C/C++ðIII. semplice e robustoðIV. collegamento dinamicoðV. caratteristiche avanzate (multi-thread,

riflessione, ...)

Piattaforme >> Caratteristiche del Linguaggio Java

Page 18: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

18

35G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio Java

m I. Completamente orientato agli oggettiðnon è consentita programmazione ibridaðtutta la programmazione è basata su classi e

oggetti

m II. Sintassi basata sul C/C++ðsimilarità nei costrutti del linguaggioðes: espressioni, if, cicli ecc.

Piattaforme >> Caratteristiche del Linguaggio Java

36G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio Java

m III. Semplice e robustoðdrastica semplificazione rispetto al C++ðgestione automatica della memoria

(“garbage collection”)ðfortemente tipatoðgestione rafforzata delle eccezioniðereditarietà singola (>>)

Piattaforme >> Caratteristiche del Linguaggio Java

Page 19: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

19

37G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio Java

m IV. Collegamento dinamicoðle librerie non devono essere collegate

staticamente al codiceðil collegamento avviene dinamicamente

(appena viene richiesto l’uso della libreria)ðgrosso vantaggio: consente di collegare

versioni aggiornate delle librerie senza dover ricollegare il codice

mV. Altre caratteristiche avanzate

Piattaforme >> Caratteristiche del Linguaggio Java

38G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio C#

m Linguaggi .NETðuna famiglia di linguaggiðil principale è C# (completamente nuovo)ðgli altri sono adattamenti di precedenti

linguaggi Microsoft (es: VB.NET), significativamente cambiati per adattarli all’architetturaðin sostanza tutti i linguaggi sono basati sulle

stesse funzionalità

Piattaforme >> Caratteristiche dei Linguaggio C#

Page 20: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

20

39G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio C#

mPrincipali caratteristiche di ðI. completamente orientato agli oggettiðII. sintassi basata sul C/C++ðIII. semplice e robustoðIV. collegamento dinamicoðV. caratteristiche avanzate (multi-thread,

riflessione, ...)

Piattaforme >> Caratteristiche dei Linguaggio C#

Java e C#

(ATTENZIONE)

40G. Mecca - Programmazione Orientata agli Oggetti

Caratteristiche del Linguaggio C#

mAttenzione: semplice e robustoðC# eredita molte delle scelte fatte per Javaðgestione automatica della memoria,

tipizzazione, ereditarietà singola, eccezioni...mMaðè meno restrittivo nell’imporre queste scelte

al programmatoreðes: gestione della memoria, eccezioniðquesta è una delle principali differenze

Piattaforme >> Caratteristiche dei Linguaggio C#

Page 21: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

21

41G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo degli Strumenti

mPer sviluppare in Javaðè necessario installare il J2SE Software

Development Kit (J2SE SDK)ðscaricabile liberamente da

http://www.java.sun.com con la relativa documentazione (zip con file html)ðattenzione alle dimensioniðj2sdk1.4.2.windows.exe >> circa 45 Megaðj2sdk1.4.2-doc.zip >> circa 34 Mega

Piattaforme >> Utilizzo degli Strumenti

42G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo degli Strumenti

mPost-Configurazioneðcreare una nuova variabile di ambiente

JAVA_HOME e assegnargli il valore della cartella in cui è installato l’SDKðPannello di Controllo >> Sistema >>

Avanzate >> Variabili di Ambienteðes: JAVA_HOME=c:\Programmi\j2sdk1.4.2ðaggiornare la variabile PATH aggiungendo il

valore %JAVA_HOME%\bin

Piattaforme >> Utilizzo degli Strumenti

Page 22: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

22

43G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo degli Strumenti

mGli strumenti principaliðil compilatore: javac.exeðla macchina virtuale: java.exe

m I passoðcompilare il sorgente (.java) con javacðeseguire il bytecode (.class) con java

Piattaforme >> Utilizzo degli Strumenti

44G. Mecca - Programmazione Orientata agli Oggetti

Un Semplice Programma Java/*

Questo e' il primo programma Javafile: Prima.java

*/package prima;class Prima {

public static void main(String[] args) {

// stampa una scritta sullo schermoSystem.out.println("Prima prova");

}}

Piattaforme >> Utilizzo degli Strumenti

>>

Page 23: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

23

45G. Mecca - Programmazione Orientata agli Oggetti

Piattaforme >> Utilizzo degli Strumenti

46G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo degli Strumenti

mPer sviluppare in C#ðè necessario installare il .NET

Redestributable Package e il .NETFramework SDK v. 1.1 ðscaricabili liberamente dal sito

http://www.gotdotnet.comðattenzione alle dimensioniðdotnetfx.exe >> ca. 23 MegaðNETSDKSetup1.1.exe >> circa 112 Mega

Piattaforme >> Utilizzo degli Strumenti

Page 24: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

24

47G. Mecca - Programmazione Orientata agli Oggetti

Utilizzo degli Strumenti

mPost-Configurazioneðcambiare il PATH aggiungendo il valore

C:\Windows\Microsoft.NET\Framework\v1.1.4322\ðATTENZIONE: il nome effettivo della cartella

può cambiare con la versione dell’SDKm Lo strumento principaleðil compilatore csc.exeðla macchina virtuale viene eseguita

automaticamente

Piattaforme >> Utilizzo degli Strumenti

48G. Mecca - Programmazione Orientata agli Oggetti

Un Semplice Programma Java/*

Questo e' il primo programma in C#file: primo.cs

*/namaspace primo {class Prima {

public static void Main(string[] args) {

// stampa una scritta sullo schermo System.Console.WriteLine("Prima Prova");

}

}}

Piattaforme >> Utilizzo degli Strumenti

>>

Page 25: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

25

49G. Mecca - Programmazione Orientata agli Oggetti

Piattaforme >> Utilizzo degli Strumenti

50G. Mecca - Programmazione Orientata agli Oggetti

Riassumendo

m Linguaggi di Riferimentom La Piattaforma Javam La Piattaforma .NETmCaratteristiche del Linguaggio JavamCaratteristiche del Linguaggio C#mUtilizzo degli Strumenti

Piattaforme >> Sommario

Page 26: Programmazione Orientata agli Oggetti in Linguaggio Java

21/04/2004

26

51G. Mecca - Programmazione Orientata agli Oggetti

Termini della Licenza

Termini della Licenza

m This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

m Questo lavoro viene concesso in uso secondo i termini dellalicenza “Attribution-ShareAlike” di Creative Commons. Per ottenereuna copia della licenza, è possibile visitarehttp://creativecommons.org/licenses/by-sa/1.0/ oppure inviare unalettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.