Richiami: Java - di.uniba.it · PDF fileNov-06 Corso di IUM - 2006-2007 5 Esecutori di...
date post
07-Dec-2018Category
Documents
view
214download
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