Definizione di classi

Похожие документы
Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Istruzioni Condizionali

Laboratorio di Programmazione 1 [Java]

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi

Laboratorio di Informatica 4 Novembre 2005

Lezione 9 programmazione in Java Classi come contenitori

Indice. Prefazione. 3 Oggetti e Java 53

CLASSI ASTRATTE - ESERCIZIO

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Capitolo 2. Dall idea al codice con UML 2 Esercizi introduttivi

Algoritmi di Ricerca. Esempi di programmi Java

Linguaggio C Struct e union

Esercizi di ricapitolazione

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

GEOMETRIA ANALITICA. Il Piano cartesiano

Assumendo 1 u = 1 cm, calcola il perimetro e l area del quadrilatero ABCD.

Fondamenti di Informatica I

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Modulo 2: Strutture fondamentali della programmazione Java

La classe java.lang.object

Programmazione 1 A.A. 2015/2016

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Test sui teoremi di Euclide e di Pitagora

Riassunto. La programmazione OO. Oggi. Esempio

Terza Media Istituto Elvetico Lugano prof. Mazzetti Roberto

Uso di metodi statici. Walter Didimo

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione ad oggetti

Fondamenti di Informatica T-1 Modulo 2

Proprietà delle Classi e degli Oggetti in Java

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

PIANO CARTESIANO. NB: attenzione ai punti con una coordinata nulla: si trovano sugli assi

Test di Matematica di base

Appunti ed esercizi di geometria analitica PRIMA PARTE

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona.

TIPI PRIMITIVI: LIMITI

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Ricordiamo. 1. Tra le equazioni delle seguenti rette individua e disegna quelle parallele all asse delle ascisse:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Problemi, algoritmi e oggetti

14 - Metodi e Costruttori

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

1 SIGNIFICATO DEL DETERMINANTE

Buone Vacanze! Compiti per le vacanze. Classe II A

SISTEMI DI RIFERIMENTO SU UNA RETTA E SU UN PIANO

Stabilire se il punto di coordinate (1,1) appartiene alla circonferenza centrata nell origine e di raggio 1.

Dati aggregati. Violetta Lonati

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

Anno Scolastico 2015/16 PROGRAMMAZIONE ANNUALE CLASSE SECONDA LICEO LINGUISTICO LICEO DELLE SCIENZE UMANE LICEO ECONOMICO-SOCIALE LICEO MUSICALE

BUONA ESTATE!!!!! Compiti di Matematica per le vacanze

Considerato un qualunque triangolo ABC, siano D ed E due punti interni al lato BC tali che:

Rilevazione degli apprendimenti

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Ereditarietà e Polimorfismo

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Problemi sulla circonferenza verso l esame di stato

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Il concetto di calcolatore e di algoritmo

Kangourou Italia Gara del 17 marzo 2016 Categoria Student Per studenti di quarta e quinta della scuola secondaria di secondo grado

Progettazione del Software

L AREA DELLE FIGURE PIANE

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

1) Claudio ha 45 biglie colorate e ne regala 1/3 alla sua migliore amica. Con quante biglie gli restano? 2) Ho letto i sette decimi di un libro di

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione Orientata agli Oggetti

Soluzioni dei problemi della maturità scientifica A.S. 2007/2008

Транскрипт:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 2

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 3

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 Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 18 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 4

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 5

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 6

... La classe Quadrato Diagramma classi per Quadrato Quadrato lato : double «costruttore» Quadrato(double l) «operazioni» double lato() double area() double perimetro() double diagonale() http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 7

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 } } http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 8

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(), quadrato(), perimetro() e diagonale() http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 9

La classe Quadrato variabili d istanza /* Un oggetto Quadrato rappresenta * un quadrato. */ class Quadrato { /* lato del quadrato */ private double lato;... segue... http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 10

La classe Quadrato il costruttore... segue... /* Crea un nuovo Quadrato di lato l. */ public Quadrato(double l) { // pre: l>0 this.lato = l; }... segue... http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 11

La classe Quadrato il metodo lato()... segue... /* Calcola il lato del quadrato. */ public double lato() { } /* restituisce il lato */ return this.lato;... segue... Esercizio - Completare la definizione della classe con la definizione degli altri metodi d istanza previsti http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 12

Esecuzione di TestQuadrato Lo stato di ogni oggetto istanza è indipendente da quello degli altri oggetti istanza della stessa classe main() «applicazione» TestQuadrato println(areap) println(perimetroq) System.out main(...) println(double x) «crea» Quadrato(10) areap = area() «crea» Quadrato(20) perimetroq = perimetro() p : Quadrato lato = 10 q : Quadrato lato = 20 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 13

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 x1, y1, x2, y2, x3, y3 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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 14

... La classe Triangolo Diagramma classi per Triangolo Triangolo x1, y1, x2, y2, x3, y3 : double «costruttore» Triangolo (double x1, double y1, double x2, double y2, double x3, double y3 ) «operazioni»... double perimetro() http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 15

Uso della classe Triangolo /* Applicazione di prova per la classe Triangolo. */ class TestTriangolo { public static void main(string[] args) { Triangolo t; // un triangolo double perimetrot; // perimetro del triangolo t /* crea un triangolo */ t = new Triangolo (1, 2, 4, 6, 8, 1); } /* calcola e visualizza il perimetro di t */ perimetrot = t.perimetro(); System.out.print("Il perimetro del triangolo è "); System.out.println(perimetroT); // 80??? } http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 16

La classe Triangolo variabili d istanza /* Un oggetto Triangolo rappresenta un triangolo sul piano cartesiano. */ class Triangolo { /* coordinate dei vertici */ private double x1, y1, x2, y2, x3, y3;... segue... http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 17

La classe Triangolo il costruttore Triangolo... segue... /* Crea un nuovo Triangolo con vertici le cui * coordinate x1, y1, x2, y2, x3, y3 * sono rispettivamente ax, ay, bx, by, cx, cy. */ public Triangolo (double ax, double ay, double bx, double by, double cx, double cy) { // pre: ax>0, ay>0, bx>0, by>0, cx>0, cy>0 this.x1 = ax; this.y1 = ay; this.x2 = bx; this.y2 = by; this.x3 = cx; this.y3 = cy; }... segue... http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 18

La classe Triangolo il metodo double perimetro() Il metodo perimetro() è un metodo d istanza che deve semplicemente restituire il valore del perimetro del triangolo In pratica, quindi, il metodo deve calcolare il perimetro del triangolo (a partire dai valori che il costruttore Triangolo avrà assegnato alle variabili d istanza x1, y1, x2, y2, x3, y3 del triangolo) ripercorrendo i passi dell algoritmo già visto in precedenza per l applicazione PerimetroTriangolo http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 19

La classe Triangolo il metodo double perimetro()... segue... /* Calcola il perimetro del triangolo. */ public double perimetro() { double d12, d13, d23; // distanze tra i vertici double perimetro; // perimetro del triangolo /* calcola le distanze tra i vertici */ d12 = Misuratore.distanza(this.x1, this.y1, this.x2, this.y2); d13 = Misuratore.distanza(this.x1, this.y1, this.x3, this.y3); d23 = Misuratore.distanza(this.x2, this.y2, this.x3, this.y3); /* calcola il perimetro del triangolo */ perimetro = d12 + d13 + d23;? /* restituisce il perimetro */ return perimetro; } } http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 20

La classe Triangolo osservazioni ed esercizi Osservazioni Nella precedente definizione del metodo d istanza perimetro() siamo proprio sicuri che sia tutto a posto? Esercizi La classe Misuratore chi è in questo contesto? Dove sta? Dove sta il suo metodo distanza? E tutto corretto quello che abbiamo scritto? Dare risposte alle precedenti domande intervenendo con le eventuali modifiche necessarie Costruire il diagramma di collaborazione per l applicazione TestTriangolo http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 21

Esercizi Altri 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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 22

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 23

Esercizio Classe Rettangolo Definire una classe Rettangolo ciascun oggetto Rettangolo rappresenta un rettangolo in un piano bidimensionale, ortogonale rispetto agli assi cartesiani y 6 5 4 3 2 1 r1 r2 1 2 3 4 5 6 7 8 x http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 24

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 25

Esercizi Altri Numeri Definire una classe NumeroReale per rappresentare numeri reali (di tipo double) Definire una classe NumeroRazionale per rappresentare numeri razionali come coppia di numeri interi (di tipo int) Definire una classe NumeroComplesso per rappresentare numeri complessi come coppia di numeri reali (di tipo double) http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 26

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 27

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 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 28

Cosa abbiamo visto finora Tipi riferimento e classi Esempi ed esercizi di definizione di classi per istanziare oggetti http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 29

Riferimenti al libro di testo Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 18 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 30