Presentazione di PowerPoint - Dipartimento di Matematica e

Fondamenti di Informatica
MODULO
LINGUAGGIO JAVA
UNITA’ DIDATTICA 3:
GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
PREREQUISITI
Conoscenze di programmazione
imperativa acquisite nella classe III nel
corso di programmazione in C++ o
altro linguaggio imperativo
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Competenze
Alla fine dell’u.d. lo studente deve essere
in grado di:
• Definire le classi con attributi e metodi
• Applicare i principi della
programmazione ad oggetti usando il
linguaggio Java
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
CONTENUTI
•
•
•
•
•
•
Gli oggetti
Le classi
Metodi e attributi
Passaggio di parametri
Metodo costruttore
Creazione ed uso degli oggetti
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
METODOLOGIE
• Lezione frontale
• Lezione dialogata
• Esercitazioni in laboratorio
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
STRUMENTI
•
•
•
•
Libro di testo
Appunti
Presentazioni multimediali
Computer
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
VERIFICA e VALUTAZIONE
Verifica
- test di verifica (a risposta multipla e risposta libera);
- esercitazioni in laboratorio.
Valutazione
sarà effettuata una valutazione sommativa:
- mostrare di aver acquisito le nozioni di base;
- mostrare di aver maturato le competenze per la
logica della programmazione ad oggetti.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
TEMPI
2 settimane (12 ore):
-
4
4
2
2
h
h
h
h
lezione frontale
esercitazioni in laboratorio
verifica
chiarimenti e potenziamento
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Gli oggetti
La struttura di un oggetto è descritta attraverso attributi e
metodi
attributi
descrivono le caratteristiche, le proprietà
statiche dell’oggetto
metodi
descrivono i comportamenti, le proprietà
dinamiche dell’oggetto
ES. Considerando una motocicletta come oggetto, avremo:
Attributi : casa_produttrice, modello, cilindrata, colore
Metodi : accelera, frena, cambia_marcia
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
La classe
Possono esistere più oggetti che hanno stessi attributi (che
possono assumere valori diversi) e stesse funzionalità. In
questo caso gli oggetti appartengono alla stessa classe.
Per classe s’intende il contenitore logico di uno o più
oggetti.
Solo dopo aver creato la classe è possibile creare l’oggetto
attraverso un’istanza.
Quindi a partire da una classe è possibile creare n oggetti,
attraverso n istanze.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Esempio di oggetti istanze
ES. A partire da motocicletta con i seguenti attributi e metodi
Attributi : casa_produttrice, modello, cilindrata, colore
Metodi : accelera, frena, cambia_marcia
Si possono avere i seguenti oggetti istanza
Oggetto1: Yamaha, XT, 600, bianco
Oggetto2: Honda, Africa_Twin,, 750, verde
Oggetto3:Suzuki, DR, 650, blu
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Dichiarazione di una CLASSE
La struttura base per poter dichiarare una classe usa la
parola chiave class, seguita dal nome della classe e
dal suo contenuto racchiuso tra le parentesi graffe { }.
All’interno delle parentesi vengono dichiarati gli attributi
e i metodi
class <nome della classe>{
// attributi
// metodi
}
Attraverso questa dichiarazione viene creato un nuovo
tipo di dato.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Livelli di visibilità per le classi
Durante la dichiarazione di una classe può essere indicato
il livello di visibilità (per stabilire da quale punto del
programma è possibile creare istanze della classe):
• public = la classe può essere usata oltre che all’interno
della libreria in cui è stata definita, anche al di fuori
• abstract = la classe è ancora incompleta e alcuni metodi
sono astratti. Può essere usata per creare sottoclassi in cui
vengono implementati metodi astratti. Inoltre non può
essere istanziata
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Livelli di visibilità per le classi
• final = da questa classe non è possibile creare
sottoclassi
La parola chiave viene posta prima di class.
Se non viene scritto niente la classe può essere usata da
tutte le classi.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Dichiarazione degli attributi
Gli attributi di una classe (detti anche variabili di istanza,
poiché ogni oggetto possiede le proprie variabili) devono
essere dichiarati in tal modo:
<tipo> <nome della variabile>
ES. Alcuni attributi della classe motocicletta possono essere:
int cilindrata, anno_immatricolaz;
String modello;
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Dichiarazione degli attributi
Durante la loro dichiarazione gli attributi possono essere
anche inizializzati. Se ciò non avviene per default
vengono assegnati ai numeri e ai caratteri il valore zero,
ai booleani false e agli oggetti null.
ES. Alcuni attributi della classe motocicletta possono essere:
int cilindrata = 600;
int anno_immatricolaz = 1996;
String modello = “Dominator”;
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Livelli di visibilità per gli attributi
Attraverso la visibilità si stabilisce se l’attributo è
accessibile da altre classi:
 public
altra classe;
l’attributo è accessibile da qualsiasi
 private
l’attributo è visibile solo all’interno
della classe, quindi nessun’altra può variarne il valore;
 protected
l’attributo è accessibile dalle classi che
appartengono alla stessa libreria e dalle sottoclassi.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Livelli di visibilità per gli attributi
Se non viene specificato niente, l’attributo sarà visibile da
tutte le classi.
Inoltre per definire un attributo costante deve essere
dichiarato final
ES. public final boolean risposta_affermativa = true;
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Dichiarazione dei metodi
I metodi servono per implementare le funzioni che una
classe può eseguire.
La dichiarazione prevede oltre il nome del metodo, il
livello di visibilità, il tipo restituito, e uno o più
parametri racchiusi tra parentesi tonde( ).
Il corpo del metodo è racchiuso tra parentesi graffe {}.
<livello di visibilità><tipo restituito> <nome metodo>
(<parametri>)
{
//istruzioni
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Dichiarazione dei metodi
 Il tipo restituito e il nome del metodo con le parentesi tonde
(non necessariamente contenenti la lista dei parametri) sono
obbligatori.
 Nel caso in cui il metodo non restituisce alcun valore viene
usata la parola chiave void come tipo restituito.
 Se il metodo restituisce un valore (quindi non è void) il suo
corpo deve contenere l’istruzione return.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Passaggio di parametri
Il nome del metodo è sempre seguito da parentesi tonde ( ),
in cui possono essere elencati i parametri separati tra loro
da virgole.
ES. void accelera(int velocità_attuale, int velocità_finale)
Il passaggio dei parametri può avvenire per valore o per
riferimento.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Passaggio di parametri
I parametri vengono passati per valore se sono tipi di dati
primitivi; quindi per ogni parametro viene creata una copia
che diventa variabile locale all’interno del metodo.
Se sono invece degli oggetti o degli array vengono passati
per riferimento, quindi le operazioni fatte su di essi hanno
effetto sugli oggetti originali; in quanto viene creata una
copia del riferimento e non dell’oggetto e le modifiche fatte
all’interno del metodo modificano anche l’oggetto originale.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Esempi di metodi con passaggio di parametri
ES_1. Si consideri un metodo che calcoli la somma di 2
numeri
public int somma (int a, int b)
{
int sum;
sum = a+b;
return sum;
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Esempi di metodi con passaggio di parametri
ES_2. Si consideri un metodo che calcoli il massimo degli
elementi di un array costituito da 2 numeri
public int max (int a[])
{
if (a[0] > a[1]) return a[0]
else return a[1];
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Livelli di visibilità dei metodi
Per la visibilità dei metodi valgono le stesse regole poste
per gli attributi
 public
il metodo può essere richiamato da
qualsiasi altra classe;
 private
il metodo può essere richiamato solo
all’interno della classe in cui è stato definito ;
 protected
sottoclassi.
il metodo è visibile solo dalle
Solitamente i metodi vengono definiti public
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
 Il metodo costruttore viene eseguito ogni qualvolta
che viene istanziato un oggetto. Solitamente viene
usato per le operazioni di inizializzazione.
 Questo metodo ha sempre lo stesso nome della
classe. Esso non deve restituire alcun valore, ma non
deve neanche essere dichiarato di tipo void.
 Solitamente viene dichiarato di tipo public. Per
compiere le operazioni di inizializzazione vengono
spesso usati i parametri.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
ES. Costruiamo una classe coppia di numeri interi
Class Coppia
{
int num,succ;
public Coppia (int numero)
{
num=numero;
succ=num+1;
}
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
All’interno del costruttore è possibile usare come
nome del parametro, lo stesso dell’attributo.
In questo caso sarà usata la parola chiave this (con
questo comando l’oggetto riconosce se stesso), che
costituisce un riferimento all’oggetto in questione.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
Esempio della classe Coppia con l’uso del this
Class Coppia
{
int num, succ;
public Coppia (int num)
{
this.num=num;
succ=this.num+1;
}
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
Se una classe viene costruita senza dichiarare il
costruttore, in ogni caso viene associato ad essa un
costruttore vuoto.
In questo caso al momento della creazione di un
oggetto della classe non verranno eseguite operazioni.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Metodo costruttore
ES. Definiamo una classe Moto senza l’uso del costruttore
Class Moto{
int cilindrata;
String modello;
void inizializza (int c,String m)
{
cilindrata =c;
modello = new String(m)
}
}
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Creazione e uso di oggetti
Per poter utilizzare le classi è necessario creare e istanziare un
oggetto.
 La dichiarazione dell’oggetto si fa, facendo seguire al nome
della classe il nome dell’oggetto, in tal modo:
<classe><nome oggetto>
 Dopo aver fatto ciò è necessario andare ad allocare l’oggetto
in memoria attraverso l’operatore new in tal modo:
<nome oggetto>= new<costruttore>(<parametri>)
L’operatore new restituisce un riferimento ad un’area di
memoria in cui viene memorizzato l’oggetto.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Creazione e uso di oggetti
ES. Creiamo un oggetto della classe moto
Moto MiaMoto;
MiaMoto = new Moto();
E’ possibile dichiarare e allocare un oggetto attraverso
un’unica riga di comando:
ES. Creiamo un oggetto della classe moto
Moto MiaMoto = new Moto();
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Allocazione di un oggetto in memoria
Nella fase di dichiarazione dell’oggetto viene creata una
variabile vuota, un oggetto senza riferimento.
Nella fase di allocazione viene inserito nella variabile il
riferimento dell’oggetto, che punta ad un’area di memoria
contenente i valori degli attributi dell’oggetto.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Esempio
import java.io.* ;
class Auto {
int cilindrata;
String modello;
Auto (int c, String m) {
cilindrata=c;
modello = new String (m);
}
void VisualizzaInfo( )
{
System.out.println ("Modello: "+modello);
System.out.println ("Cilindrata: "+cilindrata);
}
}
class Car {
public static void main (String arg[ ]) {
static Auto fer = new Auto(2000,"Ferrari F-40");
static Auto alf = new Auto(1300,"Alfa 33");
fer.VisualizzaInfo();
alf.VisualizzaInfo();
}
}
Accesso agli attributi di un oggetto
Per accedere agli attributi di un oggetto si usa
l’operatore punto . E viene inserito tra l’oggetto e
l’attributo
<oggetto>.<attributo>
L’attributo deve essere visibile nel contesto in cui è
richiamato.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Accesso ai metodi di un oggetto
Anche per invocare un metodo viene usato l’operatore
punto . E viene inserito tra l’oggetto e l’attributo
<oggetto>.<metodo>(<parametri>)
Quando viene richiamato un metodo, all’interno di un
altro metodo, appartenente alla stessa classe del primo,
non è necessario usare questa tecnica, ma può essere
direttamente invocato.
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Attributi e metodi static
Definendo un attributo static si avrà una copia sola di
quell’attributo per tutti gli oggetti di quella classe.
Solitamente gli attributi non vengono dichiarati static,
quindi si ha per ogni oggetto una copia.
Un attributo statico, per cui, viene condiviso da tutte le
istanze della classe.
Es. Un esempio di attributo statico è il pigreco PI,
dichiarato nella classe Math, del package java.lang
public static final double PI;
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
Attributi e metodi static
I metodi statici vengono richiamati senza dover creare
un oggetto di classe, infatti per invocarlo basta utilizzare
il nome della classe e non dell’oggetto
<nome classe>.<metodo static>
Es. Nella classe Math esistono vari metodi, fra cui il
metodo random( ) che è un metodo static
public static double random( );
UD 3: GLI OGGETTI IN JAVA
Cristina Parisi
DIC 2002
FINE