Programmazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1.

Documenti analoghi
Le basi del linguaggio Java

Java SE 7. Introduzione.

Dichiarazione di una classe. Dichiarazione ereditarietà

Programmazione I - corso B a.a prof. Viviana Bono

Introduzione alla programmazione

Laboratorio di Programmazione Laurea in Bioinformatica

Corso sul linguaggio Java

GESTIONE DEGLI ERRORI

Programmazione a oggetti

GESTIONE DEGLI ERRORI

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Introduzione a Java. Riferimenti

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso sul linguaggio Java

Laboratorio di reti I

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Modello procedurale versus modello O-O

Fondamenti di Informatica

Introduzione Programmazione Java

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

Insegnamento di Laboratorio di algoritmi e strutture dati

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Programmazione ad Oggetti

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Programmazione a Oggetti Lezione 11. Eccezioni e Packages

Introduzione al corso. Obiettivo del corso

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO


Prof. Pagani corrado JAVA

Ereditarietà e Polimorfismo

E7 Esercizi sul Capitolo 7 Realizzazione di Classi

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Esercitazione n 1. Obiettivi

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Informatica Ereditarietà Java. Ereditarietà

La Gestione della Memoria. Carla Binucci e Walter Didimo

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

LE ECCEZIONI. Dott. Riccardo Zese.

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

Java Gli array. Array

Programmazione Java Avanzata Programmazione Object- Oriented in Java

I Metodi. Fondamenti di Informatica A-K

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Parte prima: le basi della programmazione Java

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

Corso sul linguaggio Java

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Corso sul linguaggio Java

Le eccezioni in Java

Lezione 13 Classi interne

Programmazione Orientata agli Oggetti in Linguaggio Java

Classi ed Oggetti. Fondamenti di Informatica A-K

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Esercitazione n 2. Obiettivi

Corso di Informatica

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Eccezioni in Java A. FERRARI

Programmazione Orientata agli Oggetti in Linguaggio Java

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Le eccezioni in Java

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Note ed esercizi aggiuntivi

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

Programmazione Orientata agli Oggetti in Linguaggio Java

Modulo 2: Strutture fondamentali della programmazione Java

Java Gli array. Array

Programmazione ad oggetti

Gestione delle eccezioni in Java

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

14 - Metodi e Costruttori

Java Native Interface Appunti

Oggetto software. stati o proprietà (variabili) comportamenti o metodi (funzioni)

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Oggetti e classi. Cos è un oggetto

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Multithreading in Java I parte. Lorenzo Gallucci

Introduzione D B M G

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Introduzione a Java A. FERRARI

Transcript:

1 Programmazione in Java Java è un linguaggio di programmazione orientato agli oggetti ed indipendente dalla piattaforma. Orientato agli oggetti: segue i paradigmi della programmazione orientata agli oggetti (OOP); Indipendente dalla piattaforma: le applicazioni scritte in Java possono essere eseguite su una moltitudine di piattaforme diverse (Windows, Unix, Mac, ecc.). 2 Indipendenza dalla piattaforma Un applicazione scritta in Java, una volta compilata, può essere eseguita su praticamente ogni piattaforma: Windows, Unix, Mac, altri sistemi operativi proprietari. Questo perché un applicazione Java viene eseguita dalla Java Virtual Machine (JVM), una macchina virtuale che astrae dal sistema operativo su cui viene installata. Attualmente esistono JVM per quasi ogni ambiente di elaborazione conosciuto. 3 Indipendenza dalla piattaforma App. Java 1 App. Java 2 Java Virtual Machine App. 1 App. 2 Sistema Operativo Hardware

4 Paradigmi della OOP I paradagmi relativi alla programmazione orientata agli oggetti sono concetti di progettazione e di programmazione: Concetto di oggetto con attributi e metodi; Concetto di interfaccia; Concetto di ereditarietà; Concetto di polimorfismo. 5 Concetto di oggetto Un oggetto è una scatola nera che espone all esterno attributi (entità a cui è possibile assegnare e da cui è possibile ottenere valori) e metodi (funzioni che è possibile richiamare, eventualmente specificando dei parametri, e che modificano lo stato dell oggetto e/o restituiscono valori): OGGETTO attributo metodo 6 Concetto di oggetto Per gli attributi ed i metodi, in Java vengono definiti tre livelli di visibilità: Pubblico (public): visibile da tutti; Protetto (protected):visibile solo dagli oggetti che ereditano; Privato (private): visibile solo dall interno dello stesso oggetto.

7 Concetto di oggetto In Java, un oggetto è un istanza di una classe. In altre parole, una classe è un descrittore, cioè un entità che descrive le proprietà ed il comportamento, di un oggetto. In parole povere, la classe è per gli oggetti quello che rappresenta il tipo per una variabile nell ambito della programmazione strutturata. Ne deriva immediatamente che più oggetti sono generalmente istanza della stessa classe. 8 Concetto di oggetto Classe Istanza 1 Istanza 2 Istanza 3 9 Concetto di interfaccia L interfaccia è una lista di metodi che una classe può implementare, cioè descrivere implementandone le caratteristiche e le funzionalità. Questo significa che un interfaccia non definisce i metodi, ma solo il loro nome ed i loro parametri: OGGETTO metodo 1 metodo 2 Interfaccia

10 Concetto di interfaccia Il concetto di interfaccia è importante in quanto permette: di fornire specifiche precise a chi deve sviluppare una classe (progettista => sviluppatore); di fornire una chiara descrizione dell oggetto a chi deve decidere come utilizzarlo (sviluppatore => progettista). 11 Concetto di ereditarietà Uno dei paradigmi più importanti della programmazione orientata agli oggetti è il concetto di ereditarietà. Tramite opportuni meccanismi, è possibile ereditare in una classe attributi e metodi di un altra classe più generica, specializzandola secondo le necessità, senza dover ricrearla da capo. Questo permette, fra l altro, di realizzare librerie di classi generiche riutilizzabili. 12 Concetto di ereditarietà Classe Classe Eredita attributo 1 metodo 1 attributo 1 (ereditato) metodo 1 (ereditato) attributo 2 metodo 2

13 Concetto di ereditarietà Questo concetto introduce grandi vantaggi in termini di riutilizzo e di manutenibilità del codice. Il riutilizzo è possibile grazie alla possibilità di generare classi generiche affinate da classi più specifiche. La manutenibilità è possibile grazie alla miglior organizzazione del codice e delle varie funzionalità. 14 Concetto di polimorfismo Il supporto al polimorfismo permette di creare metodi omonimi con comportamenti diversi. Esistono due tipi di polimorfismo: polimorfismo orizzontale: permette di definire metodi omonimi con comportamenti diversi a seconda dei parametri; polimorfismo verticale: permette di modificare il comportamento di un metodo ereditato. 15 Concetto di polimorfismo Un esempio di polimorfismo orizzontale è il seguente: intero Somma(intero a, intero b) reale Somma(reale a, reale b) stringa Somma(stringa a, stringa b) Questi tre metodi eseguono concettualmente la stessa operazione, ma con dati diversi, quindi con risultati diversi.

16 Concetto di polimorfismo Un esempio di polimorfismo verticale è il seguente: Classe Classe Eredita int Elabora(int a, int b) int Elabora(int a, int b) Il metodo della classe che eredita ricopre quello della classe ereditata. 17 Esempio di classe Java Nel seguito viene proposto un esempio di classe Java, con attributi, costruttori e metodi. Successivamente, verrà creata un applicazione che utilizza oggetti di questa classe. In questa sede non verranno prese in considerazione le applet, visto che esulano dagli obiettivi di questo corso. Si tenga inoltre presente che Java è un linguaggio di programmazione case sensitive. 18 Attributi Tramite il codice seguente si definiscono gli attributi della classe di esempio (pubblica). Questi attributi sono privati: è infatti buona norma permettere sempre e comunque l accesso agli attributi solo attraverso metodi appositi: public class CognomeNome { private String nome; private String cognome;

19 Costruttori I costruttori permettono di definire come può essere inizializzato un oggetto: public class CognomeNome { public CognomeNome() { nome = ; cognome = ; public CognomeNome(String nome, String cognome) { this.nome = nome; this.cognome = cognome; 20 Metodi I metodi definiscono gli accessi agli attributi e le funzionalità necessarie all oggetto: public class CognomeNome { public void set(string nome, String cognome) { this.nome = format(nome); this.cognome = format(cognome); public void set(string cognome) { this.nome = ; this.cognome = format(cognome); public String getnome() { return nome; public String getcognome() { return cognome; private String format(string s) { 21 Esempio di classe Java Questa classe è, a tutti gli effetti, utilizzabile per la creazione di oggetti Java, utilizzabili per la memorizzazione di nome e cognome formattati. Perché un applicazione sia però utilizzabile è necessario definire un qualche punto di partenza per l esecuzione. In Java, questa è una funzione chiamata main, che permette di definire il codice minimo per lo start dell applicazione e l utilizzo di tutti gli altri oggetti.

22 Esempio di classe Java Ecco, quindi, l ultimo metodo della classe di esempio, contenente codice che utilizza un istanza dell oggetto definito, che realizza l applicazione: public static void main(string[] args) { CognomeNome cn1 = new CognomeNome(); cn1.set( Paolo, Rossi ); CognomeNome cn2 = new CognomeNome( Luca, Verdi ); System.out.println( cn1 = + cn1.getnome() + + cn1.getcognome()); System.out.println( cn2 = + cn2.getnome() + + cn2.getcognome()); 23 Compilazione ed esecuzione Una volta terminata la codifica è necessario salvare il codice in un file denominato CognomeNome.java. Java richiede infatti un organizzazione delle classi in package, che ha come regola principale la denominazione dei file con lo stesso nome della classe pubblica che contengono (in maniera case sensitive). 24 Compilazione ed esecuzione La compilazione del sorgente Java avviene con il comando seguente: C:\>javac CognomeNome.java Se il codice è corretto, la compilazione restituisce un file contenente bytecode Java, denominato CognomeNome.class. Per eseguire il codice è sufficiente utilizzare il comando seguente: C:\>java CognomeNome

25 Compilazione ed esecuzione L esecuzione del codice di esempio descritto finora ha, come prevedibile, il seguente risultato: cn1 = Paolo Rossi cn2 = Luca Verdi 26 Altri concetti importanti Qualificatore static: un attributo od un metodo definito static è un entità di classe, cioè un entità che gode delle seguenti caratteristiche peculiari: 1. Può essere invocato riferendosi alla classe e non ad un oggetto istanza della classe; 2. Il valore, nel caso di un attributo, è condiviso fra tutti gli oggetti istanza della classe. 27 Altri concetti importanti Qualificatore final: un attributo od un metodo definito final è un entità costante, cioè un entità che assume un determinato valore per definizione, senza che questo possa essere successivamente modificato. Per un attributo questo ha significato di costante vero e proprio. Per un metodo questo significa che non può essere ridefinito dalle classi che lo ereditano.

28 Altri concetti importanti Clausola import: questa clausola permette di dichiarare quali altre classi si intende utilizzare all interno della classe che si sta realizzando. Per dichiarare l intento di utilizzare tutte le classi che forniscono accesso alle componenti grafiche, per esempio, si utilizza la seguente clausola: import java.awt.*; 29 In Java, come in tutti gli altri linguaggi di programmazione, alcune operazioni provocano il verificarsi di eventi che necessitano di gestione particolare. Nell ambito dei linguaggi di programmazione orientati agli oggetti il caso più caratteristico è quello del riferimento ad attributi o metodi di un oggetto non inizializzato. In Java, in questi casi vengono lanciate eccezioni che, se non correttamente gestite, provocano la terminazione dell esecuzione. 30 Supponiamo di compilare ed eseguire il codice seguente: public class Prova { public int valore; public static void main(string[] args) { Prova p = new Prova(); p = null; p.valore = 1;

31 Il risultato sarà la terminazione con errore a causa di un eccezione del tipo NullPointerException. Le eccezioni possono però essere gestite tramite l utilizzo di blocchi detti try-catch, che permettono di gestire in maniera più elegante, e senza la terminazione dell applicazione, eccezioni di questo tipo. L esempio seguente mostra il codice precedente modificato in modo da gestirne le eccezioni. 32 public class Prova { public int valore; public static void main(string[] args) { Prova p = new Prova(); p = null; try { p.valore = 1; catch (NullPointerException npe) { System.out.println( Eccezione catturata: npe.tostring()); 33 In questo caso, il programma termina senza errori segnalando l eccezione catturata. Naturalmente, in molte applicazioni reali il blocco di codice adibito alla gestione non si limiterà a segnalare l eccezione come in questo caso, ma la gestirà in maniera tale da permettere il continuare dell esecuzione.

34 Un altro concetto particolarmente importante nell ambito della gestione delle eccezioni è quello di delega della gestione al richiamante un metodo. Supponiamo di avere un metodo come il seguente: public boolean getcondizione(string s) { s = null; s.equals( Java ); Come facilmente immaginabile, l esecuzione di questo codice genera un eccezione che termina l esecuzione. 35 Pur essendo possibile utilizzare un blocco trycatch all interno del metodo, è possibile anche delegare esplicitamente il chiamante il metodo alla gestione dell eccezione, dichiarandolo nell intestazione del metodo: public boolean getcondizione(string s) throws NullPointerException { s = null; s.equals( Java ); 36 Si noti che la gestione delle eccezioni è effettivamente importante durante l utilizzo di oggetti complessi, dove possono accadere eventi non prevedibili dallo sviluppatore a causa, per esempio, di anomalie sulle risorse referenziate. In particolare, il compilatore Java obbliga alla gestione di alcune eccezioni strategiche impedendo la compilazione nel caso in cui lo sviluppatore non lo faccia.

37 Riferimenti L ambiente di sviluppo standard e la documentazione ufficiale del linguaggio Java è reperibile sul sito di SUN www.javasoft.com. In particolare, sono di fondamentale importanza il JDK (Java Development Kit) 1.3 (ultima versione disponibile), la documentazione relativa (scaricabile indipendentemente) ed il Java Tutorial (che contiene teoria ed esempi su quasi tutto il mondo Java).

This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.