+ All Categories
Home > Documents > Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il...

Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il...

Date post: 21-Aug-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
49
1 Definizione di classi Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 19 Definizione di classi Maggio 2010
Transcript
Page 1: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

1Definizione di classi

Corso di Laurea Ingegneria Civile

Fondamenti di Informatica

Dispensa 19

Definizione di classi

Maggio 2010

Page 2: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

2Definizione di classi

Contenuti

Classi per istanziare oggetti

Esempio: la classe Punto

Variabili d’istanza

Metodi d’istanza

Costruttori

Ulteriori aspetti nella definizione di classi

auto-referenziazione

i metodi toString e equals

sovraccarico del costruttore

metodi di classe

variabili di classe

classi e oggetti

occultamento dell’informazione

Esempi: le classi Quadrato, Triangolo

Esercizi

Page 3: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

3Definizione di classi

Prerequisiti

Questo capitolo presuppone la conoscenza

degli argomenti già trattati nelle

precedenti lezioni di questo corso, con

particolare riferimento al capitolo 12 del

libro di testo

Page 4: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

4Definizione di classi

Definizione di classi

In questo capitolo vengono presentati i

concetti relativi alla definizione di classi per

istanziare oggetti

gli aspetti fondamentali del linguaggio Java nella

definizione di classi

alcuni aspetti metodologici

Nota Bene – Va ricordato che la definizione di

una nuova classe implicitamente definisce un

nuovo tipo riferimento

Page 5: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

5Definizione di classi

Classi per istanziare oggetti

Una classe per istanziare oggetti è il progetto

per una tipologia di oggetti istanza che sono

caratterizzati da

uno stato, ovvero da un insieme di proprietà

• variabili d’istanza

un comportamento, ovvero sanno eseguire delle

operazioni

• metodi d’istanza

Un metodo per la loro creazione ovvero per una

opportuna inizializzazione del loro stato

• costruttori

Page 6: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

6Definizione di classi

Esempio: la classe Punto

Una classe per istanziare oggetti ha lo scopo di

rappresentare una certa tipologia di oggetti

la definizione di una classe parte dalla domanda

• che cosa deve rappresentare un oggetto della classe?

La classe Punto

nell’ambito di una applicazione geometrica, si

vogliono rappresentare e gestire dei punti in uno

spazio bidimensionale

ciascun oggetto della classe Punto modella un punto

in uno spazio bidimensionale

Page 7: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

7Definizione di classi

Struttura della classe Punto

/* Un oggetto Punto rappresenta un punto

* in uno spazio bidimensionale. */

class Punto {

... dichiarazione di variabili d'istanza ...

... definizione di costruttori ...

... definizione di metodi d'istanza ...

}

Page 8: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

8Definizione di classi

Caratterizzazione dello stato e

del comportamento

La classe Punto è così caratterizzata

lo stato di un oggetto Punto può essere descritto

mediante una coppia di coordinate (X,Y)

• 2 variabili d’istanza

bisogna poter creare un oggetto Punto in modo

parametrico rispetto alle sue coordinate (X,Y)

• un costruttore (con due parametri)

un oggetto Punto deve saper eseguire le seguenti

operazioni da realizzare con tre metodi d’istanza

• accedi alla coordinata X del punto

• accedi alla coordinata Y del punto

Page 9: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

9Definizione di classi

La classe e oggetti Punto

...

Punto

«costruttori»

Punto(double xx,

double yy)

«operazioni»

double getX()

double getY()

(1.0, -1.0)

p1 : Punto

double getX()

double getY()

(0.0, 0.0)

p : Punto

double getX()

double getY()

(1.0, -1.0)

p2 : Punto

double getX()

double getY()

Page 10: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

10Definizione di classi

Variabili d’istanza . . .

La realizzazione di una classe prosegue con la

scelta e la dichiarazione delle variabili per

rappresentare lo stato degli oggetti

le variabili d’istanza sono variabili che servono a

rappresentare lo stato di un oggetto della classe

La classe Punto

lo stato di un oggetto Punto è costituito da una

coppia di coordinate (X,Y)

può essere rappresentato mediante le variabili

d’istanza x e y

Page 11: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

11Definizione di classi

. . . Variabili d’istanza . . .

/* Un oggetto Punto rappresenta un punto

* in uno spazio bidimensionale.

* (Prima versione- parziale.) */

class Punto {

/* Coordinata x del punto. */

private double x;

/* Coordinata y del punto. */

private double y;

}

Page 12: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

12Definizione di classi

. . . Variabili d’istanza

x : double

y : double

Punto

x = 1.0

y = -1.0

p1 : Punto x = 0.0

y = 0.0

p : Punto

x = 1.0

y = -1.0

p2 : Punto

Page 13: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

13Definizione di classi

Accesso a variabili d’istanza

Si supponga di aver creato un oggetto Punto e

di aver assegnato un valore alle sue variabili

d’istanza

Punto p1;

p1 = new Punto(1,-1);

Le variabili d’istanza di un oggetto possono

essere accedute all’interno della classe

System.out.println(p1.x); // visualizza 1.0

p1.y = 2; // ora p1 è il punto (1,2)

x = 1.0

y = -1.0

p1 : Puntop1

Punto

Page 14: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

14Definizione di classi

Metodi d’istanza

La realizzazione di una classe prosegue con

l’implementazione delle operazioni e dei

costruttori

un metodo d’istanza è un metodo

• la cui esecuzione può essere richiesta inviando un

messaggio a un oggetto istanza

La classe Punto deve contenere le definizioni

dei metodi d’istanza

•double getX()

•double getY()

Page 15: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

15Definizione di classi

Costruttori

Gli oggetti istanza devono essere creati

esplicitamente, mediante l’operatore new e

l’invocazione di un costruttore che, in modo

parametrico, inizializza lo stato dell’oggetto

creato

un costruttore consente di inizializzare lo stato di un

oggetto appena creato

La classe Punto deve contenere le definizioni

del costruttore che ha lo stesso nome della

classe

Punto(double xx, double yy)

Page 16: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

16Definizione di classi

La classe Punto . . .

/* Un oggetto Punto rappresenta un punto sul piano */

class Punto {

/* Coordinata x del punto. */

private double x;

/* Coordinata y del punto. */

private double y;

/* Crea un nuovo Punto di coordinate (xx,yy). */

public Punto(double xx, double yy) {

this.x = xx;

this.y = yy;

}

. . .

Page 17: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

17Definizione di classi

. . . La classe Punto

. . .

/* Restituisce la coordinata x di questo punto. */

public double getX() {

return this.x; }

/* Restituisce la coordinata y di questo punto. */

public double getY() {

return this.y; }

}

Page 18: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

18Definizione di classi

Il metodo toString

Spesso è utile avere un metodo che calcola una

descrizione testuale di un oggetto

ad esempio, Punto[x=1.0,y=-1.0]

è compito del metodo String toString()

• questo metodo ha un significato speciale in Java

/* Calcola una descrizione testuale di questo punto. */

public String toString() {

return "Punto[x=" + x + ",y=" + y + "]";

}

Page 19: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

19Definizione di classi

Il metodo equals

È utile anche definire un metodo boolean

equals(...) per verificare l’uguaglianza tra due

oggetti istanza della classe

anche questo metodo ha un significato speciale in

Java

/* Verifica se questo punto è uguale al Punto p. */

public boolean equals(Punto p) {

// pre: p!=null

return (this.x==p.x) && (this.y==p.y);

}

Page 20: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

20Definizione di classi

Sovraccarico del costruttore

Una classe può definire anche più di un

costruttore, il cui nome sarà sovraccarico

un costruttore senza argomenti

/* Crea un nuovo Punto di coordinate (0,0). */

public Punto() {

this.x = 0;

this.y = 0; }

un costruttore di copia

/* Crea un nuovo Punto uguale al Punto p. */

public Punto(Punto p) {

// pre: p!=null

this.x = p.x;

this.y = p.y;}

Page 21: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

21Definizione di classi

Classe e oggetti Punto

x : double

y : double

Punto

«costruttori»

Punto()

Punto (double x, double y)

Punto(Punto p)

«operazioni d’istanza»

double getX()

double getY()

String toString()

boolean equals(Punto p)

x = 1.0

y = -1.0

p2 : Punto

double getX()

double getY()

void trasla(double dx, double dy)

String toString()

boolean equals(Punto p)

x = 1.0

y = -1.0

p1 : Punto

double getX()

double getY()

void trasla(double dx, double dy)

String toString()

boolean equals(Punto p)

x = 0.0

y = 0.0

p : Punto

double getX()

double getY()

String toString()

boolean equals(Punto p)

Complessivamente si ha:

Page 22: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

22Definizione di classi

Occultamento dell’informazione

Le variabili d’istanza di una classe vengono normalmente

dichiarate private class Punto {

/* Coordinata x del punto. */

private double x;

/* Coordinata y del punto. */

private double y;

...

}

Una variabile d’istanza privata può essere acceduta solo

da oggetti costruiti dalla classe

nell’ambito di istruzioni scritte nella classe

Una variabile d’istanza privata non può essere acceduta

da oggetti di altre classi

nell’ambito di istruzioni scritte in altre classi

Page 23: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

23Definizione di classi

Uso della classe Punto . . .

Una caratterizzazione più precisa del

comportamento della classe Punto

Scrivere una applicazione di prova che acquisisce due

oggetti di tipo Punto e calcola la distanza tra essi

• Si usa una classe applicazione (che contiene il ―main‖)

• Bisogna creare gli oggetti definiti nella classe e usarli

Definizione della classe punto

• Punto.java

Uso degli oggetti di tipo Punto (classe Punto)

• UsoPunto.java

• Al suo interno definiamo il metodo di classe ―distanza‖

Page 24: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

24Definizione di classi

. . . Uso della classe Punto

Class UsoPunto{

Public static void main(Strig[] args){

Punto p, p1, p2; // tre punti nel piano

p = new Punto(0,0); // p è l'origine del piano

p1 = new Punto(1,-1); // p1 è il punto di coordinate

// (1,-1)

p2 = new Punto(1,-1); // un altro punto di coordinate

// (1,-1)

System.out.println(p1.getX()); // visualizza 1.0

System.out.println(p1.getY()); // visualizza -1.0

System.out.println(distanza(p1,p2));

}

}

Page 25: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

25Definizione di classi

Distanza tra due punti

Un metodo che calcola e restituisce la distanza

tra due punti – metodo di classe/* Calcola la distanza tra gli oggetti Punto p1 e p2.*/

public static double distanza(Punto p1, Punto p2) {

double qd; // quadrato della distanza

/* calcola il quadrato della distanza */

qd = (p1.x-p2.x)*(p1.x-p2.x) +

(p1.y-p2.y)*(p1.y-p2.y);

/* calcola e restituisce la distanza */

return Math.sqrt(qd);

}

Page 26: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

26Definizione di classi

La classe Quadrato . . .

Si vuole definire la classe Quadrato per istanziare oggetti un oggetto Quadrato modella un quadrato

lo stato di un oggetto Quadrato consiste nella lunghezza del suo lato

per creare un oggetto Quadrato è richiesta la lunghezza del lato come parametro

un oggetto Quadrato deve saper eseguire le seguenti operazioni

• lato() — restituisce il lato del quadrato

• area() — calcola e restituisce l’area del quadrato

• perimetro() — calcola e restituisce il perimetro del quadrato

• diagonale() — calcola e restituisce la diagonale del quadrato

Page 27: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

27Definizione di classi

. . . La classe Quadrato

Diagramma classi per Quadrato

Page 28: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

28Definizione di classi

Uso della classe Quadrato/* Applicazione di prova per la classe Quadrato. */

class TestQuadrato {

public static void main(String[] args) {

Quadrato p, q; // due quadrati

double areaP; // area del quadrato p

double perimetroQ; // perimetro del quadrato q

/* crea i due quadrati */

p = new Quadrato(10);

q = new Quadrato(20);

/* calcola e visualizza l'area di p */

areaP = p.area();

System.out.println(areaP); // 100

/* calcola e visualizza il perimetro di q */

perimetroQ = q.perimetro();

System.out.println(perimetroQ); // 80

}

}

Page 29: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

29Definizione di classi

La classe Quadrato

Ricordiamo come si definisce una classe per

istanziare oggetti

bisogna dichiarare le variabili d’istanza

• in questo caso, c’è bisogno di una variabile che rappresenta

il lato del quadrato

bisogna definire (almeno) un costruttore per la

classe

bisogna definire un metodo per ciascuna operazione

che gli oggetti della classe devono saper eseguire

• in questo caso, si devono definire i metodi lato(), area(),

perimetro() e diagonale()

Page 30: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

30Definizione di classi

La classe Quadrato — variabili d’istanza

/* Un oggetto Quadrato rappresenta

* un quadrato. */

class Quadrato {

/* lato del quadrato */

private double lato;

... segue ...

Page 31: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

31Definizione di classi

La classe Quadrato — il costruttore

... segue ...

/* Crea un nuovo Quadrato di lato l. */

public Quadrato(double l) {

// pre: l>0

this.lato = l;

}

... segue ...

Page 32: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

32Definizione di classi

La classe Quadrato — il metodo lato()

. . . segue . . .

/* Calcola il lato del quadrato. */

public double getLato() {

/* restituisce il lato */

return this.lato;

}

. . . segue . . .

Esercizio - Completare la definizione della

classe con la definizione degli altri metodi

d’istanza previsti

Page 33: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

33Definizione di classi

Esecuzione di TestQuadrato

Lo stato di ogni oggetto istanza è indipendente

da quello degli altri oggetti istanza della stessa

classe

Page 34: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

34Definizione di classi

Esercizio: la classe Triangolo . . .

Si vuole definire la classe Triangolo per istanziare

oggetti

un oggetto Triangolo modella un triangolo sul piano cartesiano

lo stato di un oggetto Triangolo consiste nella conoscenza delle

coordinate dei suoi vertici tre vertici v1, v2 e v3

per creare un oggetto Triangolo sono richiesti, come parametri,

i valori delle coordinate dei suoi vertici

un oggetto Triangolo deve saper eseguire, tra altre possibili, la

seguente operazione:

• perimetro() — calcola e restituisce il perimetro del triangolo

Page 35: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

35Definizione di classi

Esercizi — Altre classi per i triangoli

Definire la classe TriangoloEquilatero il cui stato consiste nella

lunghezza del suo lato ed è capace di calcolare il suo lato, il suo

perimetro e la sua area

Suggerimento: Ricordarsi le specifiche (simili) della definizione

della classe Quadrato

Definire la classe TriangoloRettangolo il cui stato consiste nella

lunghezza dei suoi cateti ed è capace di calcolare la sua ipotenusa,

oltre a saper eseguire altre operazioni da scegliere

Suggerimento: Ricordarsi le specifiche (simili) della definizione

della classe TriangoloEquilatero e la classe Ipotenusa già vista in

precedenza

Definire classi per altre tipologie di triangolo a piacere

Page 36: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

36Definizione di classi

Esercizi — Classe Quadrato

Definire una classe QuadratoSulPiano per definire quadrati sul piano cartesiano con i lati paralleli agli assi lo stato di un oggetto QuadratoSulPiano consiste

nella conoscenza delle coordinate dei suoi vertici vbs in basso a sinistra e vad in alto a destra, mentre le operazioni sono le stesse della classe Quadrato

Nella classe QuadratoSulPiano aggiungere

metodi di classe per verificare se

due quadrati hanno lo stesso lato

due quadrati hanno la stessa area

due quadrati sono uno interno all’altro

Page 37: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

37Definizione di classi

Esercizio — Classe Rettangolo

Definire una classe Rettangolo

ciascun oggetto Rettangolo rappresenta un

rettangolo in un piano bidimensionale, ortogonale

rispetto agli assi cartesiani

1 2 3 4 5 6 7 8

1

2

3

4

5

6

r1

r2

x

y

Page 38: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

38Definizione di classi

Caratterizzazione della classe

Rettangolo

Comportamento un rettangolo deve saper calcolare

• la sua base

• la sua altezza

• la sua area

un rettangolo deve sapersi traslare di (DX,DY)

bisogna poter calcolare l’intersezione tra due rettangoli

Stato lo stato di un rettangolo deve rappresentare

• le sue dimensioni

• la sua posizione nel piano

• le posizioni dei suoi vertici

Page 39: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

39Definizione di classi

Esercizi — Altri oggetti

Definire una classe Libro per rappresentare oggetti libro

con il nome dell’autore, il titolo e il numero di pagine e

con opportuni metodi d’istanza tra cui un metodo del

tipo String toString() per la sua descrizione

Definire una classe LineaBus per rappresentare oggetti

linea di autobus urbano con il numero identificativo, il

nome dei due capolinea e con opportuni metodi

d’istanza tra cui un metodo del tipo String toString() per

la descrizione del suo percorso

Page 40: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

40Definizione di classi

Esercizi — Altri oggetti

Definire una classe Auto per rappresentare oggetti

automobile con il nome della marca, il nome del

modello, la targa e l’anno di immatricolazione e con

opportuni metodi d’istanza tra cui un metodo del tipo

String toString() per la sua descrizione

Definire una classe Studente per rappresentare oggetti

studente con il cognome, il nome, il codice fiscale, il

numero di matricola e con opportuni metodi d’istanza

tra cui un metodo del tipo String toString() per la sua

descrizione

Page 41: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

41Definizione di classi

Cosa abbiamo visto finora

Tipi riferimento e classi

Esempi ed esercizi di definizione di classi

per istanziare oggetti

Page 42: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

42

Riepilogo della dispensa

Tipologie di classi

Classi applicazione – eseguibili, contengono il metodo

main

Classi che corrispondono alla creazione di un singolo

oggetto software – ad esempio la classe Math o la classe

System.out

Classi che definiscono il progetto di una tipologia di

oggetti – ad esempio la classe Televisore, da esse si

istanziano oggetti (classi per istanziare oggetti)

Page 43: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

43

Riepilogo della dispensa

Nelle Classi per istanziare oggetti si definiscono: Variabili d’istanza

Almeno un costruttore

Metodi di istanza• Metodi get - per accedere al valore delle variabili d’istanza

• Metodi set - per modificare il valore delle variabili d’istanza

• Metodo equals - per confrontare due oggetti istanza: in genere verifica l’uguaglianza dei valori delle variabili d’istanza

• Metodo toString – per avere una descrizione testuale dell’oggetto istanza

• Altri metodi d’istanza

Eventuali metodi di classe

Page 44: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

44

Riepilogo della dispensa

Classi per istanziare oggetti - Esempio Classe Televisore: Variabili d’istanza – assumono in generale valori

• differenti per i vari oggetti

• indipendenti dai valori assunti negli altri oggetti

• Es. stato (acceso/spento), marca, modello

Costruttore• Inizializza le variabili d’istanza, ad esempio lo stato a spento

Metodi di istanza• Metodi get – ad esempio getStato()

• Metodi set – ad esempio setStato(String s)

• Metodo equals – metodo che verifica se due televisori hanno lo stesso stato, marca, modello

• Metodo toString – per avere una descrizione testuale dell’oggetto

Page 45: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

45

Riepilogo della dispensa

Variabili d’istanza

Possono essere accedute con

riferimentoall’oggetto.nomedellavariabile

Un metodo d’istanza o un costruttore accede alle variabili

d’istanza dell’oggetto che lo sta eseguendo direttamente

col loro nome o attraverso la parola chiave this

(necessaria se una variabile locale o un parametro ha

uguale nome della variabile d’istanza)

Se le variabili d’istanza sono dichiarate private è

possibile accedervi e modificarle solo attraverso i metodi

pubblici get e set

Page 46: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

46

Riepilogo della dispensa

Operatore new e costruttori Gli oggetti vengono creati attraverso l’operatore new e le

loro variabili d’istanza vengono inizializzate attraverso il costruttore

Triangolo t;

t = new Triangolo(1,2,4,6,8,1);

Un costruttore ha:• uguale nome della classe

• elenco dei parametri

• modificatore public

• non ha tipo di ritorno

public Punto(double xx, double yy)

Una classe può avere più costruttori che si differenziano nell’elenco dei parametri

Page 47: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

47

Riepilogo della dispensa

Metodi d’istanza e metodi di classe I metodi d’istanza sono i metodi che l’oggetto sa eseguire

e vengono richiamati come

o.metodo(parametri);

Dove o e’ una variabile che rappresenta un dato oggetto

Ad esempio p1.getX();

I metodi di classe non sono legati ad un dato oggetto, ma agiscono solo in base ai parametri del metodo. Nella loro definizione compare la parola chiave static. Vengono richiamati come:

metodo(parametri) – all’interno della classe

Classe.metodo(parametri) - all’esterno della classe (es.

Punto.distanza(p1,p2)

Page 48: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

48Definizione di classi

Riepilogo della dispensa

Uso di oggetti

Tutti questi metodi vengono scritti in una classe (es.

Oggetto.java) che viene compilata ma non puo’ essere

eseguita

• Non e’ una classe applicazione – non contiene il main

L’oggetto definito in questa classe viene

effettivamente utilizzato da un’altra classe

applicazione (es. UsoOggetto.java) che crea gli

oggetti di tipo Oggetto con il costruttore new e che li

gestisce (può usare anche i metodi di classe con

Oggetto.metodo(parametri))

Page 49: Corso di Laurea Ingegneria Civile Fondamenti di Informaticaelinf/0910/materiale0910/19... · Il metodo toString Spesso è utile avere un metodo che calcola una descrizione testuale

49Definizione di classi

Riferimenti al libro di testo

Per lo studio di questi argomenti si fa

riferimento al libro di testo, e in particolare al

capitolo 18

Nei file .java allegati a questa dispensa si

trova Il codice completo degli esempi mostrati


Recommended