Richiami: Java - di.uniba.it · PDF fileNov-06 Corso di IUM - 2006-2007 5 Esecutori di...

Click here to load reader

  • date post

    07-Dec-2018
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Richiami: Java - di.uniba.it · PDF fileNov-06 Corso di IUM - 2006-2007 5 Esecutori di...

1

Corso di Laurea inInformatica e Comunicazione Digitale

a.a. 2006 - 2007

Interazione Uomo-Macchina

Irene MazzottaGiovanni Cozzolongo

Vincenzo Silvetri

Introduzione a JavaSeconda Parte

Nov-06 Corso di IUM - 2006-2007 2

Richiami: JavaIl linguaggio Java un linguaggio diprogrammazione orientato agli oggetti, derivato dal C++ (e quindi indirettamentedal C). La piattaforma di programmazione Java fondata sul Linguaggio stesso, sulla Java Virtual Machine (JVM) e sulleAPI.

Caratteristica principale: Portabilit.

Nov-06 Corso di IUM - 2006-2007 3

WRITE ONCE, RUN EVERYWHERE!

Compiler (Unix)

Compiler (Pentium)

Compiler (Mac)

file.java

Pentium + JVM

Mac + JVM

Unix + JVM

Bytecode(Platform

indipendent)

file.class

Source code

Nov-06 Corso di IUM - 2006-2007 4

WRITE ONCE, RUN EVERYWHERE!

Compiler (Unix)

Compiler (Pentium)

Compiler (Mac)

file.java

Pentium + JVM

Mac + JVM

Unix + JVM

Bytecode(Platform

indipendent)

file.class

Source code

file.java JAVAC file.class JAVA

Compilatore Interprete

javac file.java java file

Nov-06 Corso di IUM - 2006-2007 5

Esecutori di Bytecode

stand-alone program (applicazione)- eseguiti da interpreti java;

applet eseguiti da- browser Web- applicativi ad hoc.

Java pu essere usato per creare due tipi diprogrammi:

Nov-06 Corso di IUM - 2006-2007 6

Altre caratteristiche di JavaSempliceSicuroRobustoIndipendente dallarchitetturaDistribuitoInterpretatoDinamicoAd elevate prestazioniConcorrente (multithread)

Nov-06 Corso di IUM - 2006-2007 7

SemplicitSintassi simile a C e C++ ma privo di costruttiridondanti/"pericolosi.Ci sono solo tre gruppi di primitive (numerico, boolean e array) e delle classi specifiche per le stringhe.

SicurezzaJava prende le decisioni relative alle allocazionidi memoria a run-time (Binding dinamico).Linesistenza di puntatori impedisce eventualierrori, anche involontari, ad altri programmi in memoria.

Nov-06 Corso di IUM - 2006-2007 8

Robustezza

Fortemente tipizzato- controllo statico dei tipi - il compilatore Java effettua severi controlliin fase di compilazione.

Gestione automatica della memoria medianteil meccanismo del garbage collection;Gestione delle eccezioni (tutti gli errori a run-time dovrebbero essere gestiti dal programma).

Nov-06 Corso di IUM - 2006-2007 9

Java vs C++Sintassi simile al C++ maJava

Non usa puntatori.Non supporta lereditariet multipla (ma la ottiene mediante le interfacce).Ha il tipo stringa (le stringhe sono oggetti veri e propri).Ha una gestione migliore della memoria(garbage collection).

"Conclusione: Java un 'C++' --"

Nov-06 Corso di IUM - 2006-2007 10

Perch programmare a oggetti?

Programmare a oggettinon velocizza lesecuzione dei programminon ottimizza luso della memoria...

E allora perch programmare a oggetti?

Programmare a oggetti facilita la progettazione, lo sviluppo e ilmantenimento di sistemi software molto complessi!

Nov-06 Corso di IUM - 2006-2007 11

Convenzioni

I nomi delle Classi iniziano con la MAIUSCOLA

I NOMI DEGLI Oggetti iniziano con la minuscola

Point point = new Point();

Nov-06 Corso di IUM - 2006-2007 12

Classe e OggettiClasse: descrizione astratta di un oggettoOggetto: istanza di una classe: un oggetto una coppia (stato, funzioni)

ES.: Classe AutomobileOggetto BerlinaOggetto Monovolume

ATTENZIONE: Una Istanza non pu esistere senza la sua

Classe di appartenenza!!!

Nov-06 Corso di IUM - 2006-2007 13

Classe e OggettiNella classe definiamo:

Le variabili: consentono di memorizzare le informazioni di ciascuna istanza (cio lo stato delloggetto).I costruttori: specificano come inizializzare lo stato di una nuova istanza.I metodi: specificano le operazioni che determinano il comportamento delle istanze.

public class ClassName {Variabili di istanzaCostruttoriMetodi

}

Nov-06 Corso di IUM - 2006-2007 14

Variabili di istanza

Nella definizione di una variabile di istanza:Modificatore di visibilit TipoNome della variabile

private String nome;Modificatore di visibilit

TipoNome della variabile

Nov-06 Corso di IUM - 2006-2007 15

CostruttoriI costruttori inizializzano lo stato di un oggetto

Memorizzano i valori iniziali negli attributi;A tal fine spesso ricevono parametri dallesterno.

I costruttori hanno lo stesso nome della loro classe.Se non si specificano costruttori, viene definito automaticamente un costruttore di default.

public class Persona {private String nome;private int civico;public Persona(String nome, int civico) {this.nome = nome;this.civico = civico;

} }

Nov-06 Corso di IUM - 2006-2007 16

this rappresenta un riferimento allistanza che sto manipolandoE' indispensabile farne uso quando il nome del campo a cui si vuole accedere nascosto dal nome di una variabile locale o di un parametro

public class Persona {private String nome;private int civico;

public Persona(String nome, int civico) {this.civico = civico;this.nome = nome;

}

}

Costruttori: La parola chiave this

Nov-06 Corso di IUM - 2006-2007 17

Per favorire la leggibilit del codice adottiamo comunque la convenzione di usare sempre this quando ci riferiamo a variabili di istanza

Costruttori: La parola chiave this

public class Persona {private String nome;private int civico;

public Persona(String nome, int civico) {this.civico = civico;this.nome = nome;

}}

Nov-06 Corso di IUM - 2006-2007 18

Crea un nuovo oggetto della classe specificata.Invoca lesecuzione del costruttore(che inizializza lo stato delloggetto)Ritorna un riferimento alloggetto creato

Persona persona = new Persona()

Costruttori: Loperatore new

Nov-06 Corso di IUM - 2006-2007 19

Costruttori e metodi ricevono dati attraverso parametriI parametri sono definiti nellintestazione del costruttore o del metodo

public class Persona {private String nome;private int civico;

public Persona(String nome, int civico) {this.nome = nome;this.civico = civico;

} }

Costruttori: I parametri

Nov-06 Corso di IUM - 2006-2007 20

Costruttori: I parametripublic class Persona {

private String nome;private int civico;

public Persona(String nome, int civico) {this.nome = nome;this.civico = civico;

} }

Questo costruttore ha due parametri:nome, che di tipo Stringcivico, che di tipo int

Nov-06 Corso di IUM - 2006-2007 21

MetodiImplementano il comportamento di un oggettoHanno una intestazione ed un corpo

public int getCivico() {return this.civico;

}

Tipo di ritornoNome del metodo

Lista parametri formali (qui vuota)

Inizio e fine del corpo del metodo (blocco)

Istruzione return

Modificatore di visibilit

Nov-06 Corso di IUM - 2006-2007 22

public class Persona {

/*** Imposta il nome di una persona * @param il nome di una persona */public void setNome(String nome) {

this.nome = nome;}

}

Metodi

Nov-06 Corso di IUM - 2006-2007 23

Metodi: Modificatori daccessoLinformation hiding ottenuto mediante I modificatori diaccesso che limitano la visibilit delle variabili e dei metodiagli oggetti delle classi esterne e alle sottoclassi.

I modificatori sono:public visibile da tuttifriendly visibile da tutti nello stesso package

(sarebbe il default)protected visibile dalle sottoclassiprivate nascosto a tutti, tranne che allinterno della

classe

Nov-06 Corso di IUM - 2006-2007 24

Tutte le variabili di istanza (e di classe) devono essere privateprivate TipoAttributo nomeAttributo;Se ci sono forti motivazioni per concedere la possibilit di aggiornare dall'esterno un attributo si definisce un metodo "modificatore" pubblico (o amico)

Convenzione nome metodo modificatore:void setNomeAttributo(TipoAttributo

nomeAttributo)Se ci sono esigenze per accedere in lettura si definisce un metodo "accessore" pubblico (o friendly)

Convenzione nome metodo accessore:TipoAttributo getNomeAttributo()

Metodi: Modificatori daccesso semplici linee guida

Nov-06 Corso di IUM - 2006-2007 25

/*** Ritorna il nome della persona* @return String il nome della persona*/

public String getNome() {return this.nome;

}

Un metodo pu restituire un valorevoid se non restituisce nessun valore (come nel caso del metodo setNome(String))

Metodi: valore restituito

Nov-06 Corso di IUM - 2006-2007 26

Forma generale: dot-notation

Diciamo che effettuiamo una chiamata a un metodo esterno quando chiamiamo un metodo di un altro oggetto

oggetto.nomeMetodo(lista-parametri-attuali)

Chiamate a metodi esterni

Nov-06 Corso di IUM - 2006-2007 27

Forma generale

E equivalente a:

per leggibilit preferiamo quest'ultima

nomeMetodo(lista-parametri-attuali)

this.nomeMetodo(lista-parametri-attuali)

Chiamate a metodi esterni

Nov-06 Corso di IUM - 2006-2007 28

boolean vero (true) o falso (false)char caratteri Unicode 2.1 (16-bit) byte interi a 8 bit (con segno e in C2)short interi a 16 bit (con segno in C2)int interi a 32 bit (con segno in C2)long interi a 64 bit (con segno in C2)float numeri in virgola mobile a 32-bitdouble numeri in virgola mobile a 64-bit