unita didattica 3: gli oggetti in java fondamenti di informatica cristina parisi dic 2002 modulo...

40
UNITA’ DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

Upload: gianbattista-capasso

Post on 01-May-2015

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UNITA’ DIDATTICA 3:

GLI OGGETTI IN JAVA

Fondamenti di Informatica

Cristina Parisi DIC 2002

MODULO LINGUAGGIO JAVA

Page 2: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 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

Page 3: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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

Page 4: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

• 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

CONTENUTI

Page 5: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

• Lezione frontale• Lezione dialogata• Esercitazioni in laboratorio

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

METODOLOGIE

Page 6: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

• Libro di testo• Appunti• Presentazioni multimediali• Computer

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

STRUMENTI

Page 7: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

Valutazionesarà 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.

Page 8: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

TEMPI

2 settimane (12 ore):

- 4 h lezione frontale- 4 h esercitazioni in laboratorio- 2 h verifica- 2 h chiarimenti e potenziamento

Page 9: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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 motociclettamotocicletta come oggetto, avremo:

Attributi : casa_produttrice, modello, cilindrata, colore

Metodi : accelera, frena, cambia_marcia

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

Gli oggetti

Page 10: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

Page 11: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

Esempio di oggetti istanze

ES. A partire da motociclettaotocicletta 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

Page 12: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

La struttura base per poter dichiarare una classe usa la parola chiave classclass, 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

Dichiarazione di una CLASSE

Page 13: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

• 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

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):

Page 14: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

• 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

Livelli di visibilità per le classi

Page 15: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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 motociclettamotocicletta possono essere:

int cilindrata, anno_immatricolaz;

String modello;

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

Dichiarazione degli attributi

Page 16: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

Dichiarazione degli attributi

ES. Alcuni attributi della classe motociclettamotocicletta possono essere:

int cilindrata = 600;

int anno_immatricolaz = 1996;

String modello = “Dominator”;

Page 17: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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 l’attributo è accessibile da qualsiasi altra classe;

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.

Page 18: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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

Livelli di visibilità per gli attributi

Page 19: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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

Page 20: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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

Dichiarazione dei metodi

Page 21: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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

Page 22: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

Passaggio di parametri

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.

Page 23: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

ES_1. Si consideri un metodo che calcoli la somma di 2 numeri

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

public int somma (int a, int b)

{

int sum;

sum = a+b;

return sum;

}

Esempi di metodi con passaggio di parametri

Page 24: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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];

}

Esempi di metodi con passaggio di parametri

Page 25: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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 il metodo è visibile solo dalle sottoclassi.

Solitamente i metodi vengono definiti public

Page 26: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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.

Metodo costruttore

Page 27: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

ES. Costruiamo una classe coppia di numeri interi

Class Coppia

{

int num,succ;

public Coppia (int numero)

{

num=numero;

succ=num+1;

}

}

Metodo costruttore

Page 28: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

Page 29: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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;

}

}

Metodo costruttore

Page 30: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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.

Metodo costruttore

Page 31: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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)

}

}

Page 32: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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>

Creazione e uso di oggetti

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.

Page 33: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

E’ possibile dichiarare e allocare un oggetto attraverso un’unica riga di comando:

ES. Creiamo un oggetto della classe moto

Moto MiaMoto = new Moto();

Creazione e uso di oggetti

ES. Creiamo un oggetto della classe moto

Moto MiaMoto;

MiaMoto = new Moto();

Page 34: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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.

Page 35: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

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();

}

}

Esempio

Page 36: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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.

Accesso agli attributi di un oggetto

Page 37: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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.

Accesso ai metodi di un oggetto

Page 38: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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;

Attributi e metodi static

Page 39: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

UD 3: GLI OGGETTI IN JAVA Cristina Parisi DIC 2002

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( );

Attributi e metodi static

Page 40: UNITA DIDATTICA 3: GLI OGGETTI IN JAVA Fondamenti di Informatica Cristina Parisi DIC 2002 MODULO LINGUAGGIO JAVA

FINE