Programmazione a oggetti

Documenti analoghi
Gocce di Java. Gocce di Java. Programmazione a oggetti. Pierluigi Crescenzi. Università degli Studi di Firenze

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

GESTIONE DEGLI ERRORI

14 - Metodi e Costruttori

Esempi in Java di program.ne O-O

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Metodi. Un metodo è una porzione di codice a cui si associa un nome. Un istruzione eseguita da un metodo può essere:

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Laboratorio di programmazione

Uguaglianza e copia di oggetti

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

La classe java.lang.object

Le eccezioni in Java

Corso sul linguaggio Java

Indice. Prefazione. 3 Oggetti e Java 53

Proprietà delle Classi e degli Oggetti in Java

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

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Le basi del linguaggio Java

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Esempio: Interfacce. Gioco Interfacce

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Programmazione ad Oggetti. Java Parte II

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione ad oggetti Prova scritta 15 Gennaio 2013

Java: Definire Classi e Creare Oggetti

Metodi statici. Dichiarazione e chiamata di metodi statici

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Fondamenti di Programmazione

Esempio: Interfacce. Gioco Interfacce

Ereditarietà e Polimorfismo

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Eccezioni predefinite

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

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Esercitazione. Docente Ing. Mariateresa Celardo

Strutturare il codice: sottoprogrammi

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Programmazione con Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Ereditarietà (ultima)

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

Programmazione ad oggetti

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Introduzione. Java. Errori. Errori

Programmazione Orientata agli Oggetti in Linguaggio Java

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

Introduzione Programmazione Java

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Corso di Reti di Calcolatori L-A

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Programmazione Java Finalization di oggetti, Package, Modificatori di accesso

Riassunto. La programmazione OO. Oggi. Esempio

Le basi del linguaggio Java

Multithreading in Java I parte. Lorenzo Gallucci

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni

Eccezioni Precisazioni e approfondimenti

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Esonero del corso di Programmazione a Oggetti

Corso di Informatica

Il paradigma di programmazione a oggetti

Principi di Progettazione del Software a.a

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

Esempio 2: Subtyping

Gerarchia di classi Java 1

Esonero del corso di Programmazione a Oggetti

Programmazione II Compitino (Vers. B)

Polimorfismo parametrico vs polimorfismo per inclusione

Principi di Progettazione del Software. Principi di Progettazione del Software a.a

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

IL CONCETTO DI CLASSE

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

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Il Linguaggio Java. Le interfacce

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Laboratorio di reti I

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie

Prova d Esame Compito A

I numeri razionali. Specifica: la sintassi. Specifica: la semantica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Uso di metodi statici. Walter Didimo

Esercitazione n 2. Obiettivi

Definizione di metodi

Transcript:

Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32

Cosa è un oggetto Una scatola software contenente variabili (anche dette campi) e metodi. Programmazione a oggetti p.2/32

Un oggetto di tipo razionale Programmazione a oggetti p.3/32

Cosa è un messaggio Quando un oggetto A vuole che un oggetto B esegua uno dei metodi di B, l oggetto A invia un messaggio all oggetto B. Programmazione a oggetti p.4/32

Cosa è una classe Una classe è un prototipo che definisce i campi ed i metodi comuni a tutti gli oggetti di un certo tipo. Programmazione a oggetti p.5/32

Istanze di una classe Un oggetto concreto è un istanza della classe a cui appartiene. Programmazione a oggetti p.6/32

Definizione di una classe Formata dalla dichiarazione della classe ed il corpo della classe. Sintassi class nome Classe blocco Dichiarazione di un oggetto di tipo Razionale Razionale numerorazionale; Programmazione a oggetti p.7/32

Creazione di oggetti Mediante l operatore new (come nel caso degli array) ed il costruttore della classe. Sintassi new nome Classe( lista Parametri ) Creazione di un oggetto di tipo Razionale con numeratore pari a 3 e denominatore pari a 4. Razionale numerorazionale; numerorazionale = new Razionale( 3,4 ); Programmazione a oggetti p.8/32

Distruzione di oggetti Non esistono operatori ad-hoc. Un oggetto privo di riferimenti diviene memoria da riciclare (da parte del garbage collector). Razionale R = new Razionale( 10,15 ); R = new Razionale( 15,10); Programmazione a oggetti p.9/32

Usare gli oggetti Nome qualificato di campo/metodo: nome dell oggetto, seguito da un punto e dal nome del campo/metodo. Sintassi nome Oggetto.nome Variabile nome Oggetto.nome Metodo( lista Par ) Esempio numerorazionale.num numerorazionale.maggiore ( altronumraz ) Passaggio per riferimento: come per gli array, un oggetto passato come argomento ad un metodo può essere modificato dalle istruzioni contenute all interno del metodo. Programmazione a oggetti p.10/32

Oggetti come parametri formali Creando un nuovo oggetto per poi assegnare al parametro formale il riferimento al nuovo oggetto, non si modifica l oggetto originale. void cambiarazionale( Razionale r,int n,int d ) { Razionale h = new Razionale( n,d ); r = h; } Programmazione a oggetti p.11/32

Costruttori Hanno lo stesso nome della classe. Creano ed inizializzano la memoria necessaria ad immagazzinare i campi dell oggetto. Sintassi nome Classe( lista Parametri ) Esempio Razionale( int n,int d ) { num = n; den = d; } Se nessun costruttore viene definito, automaticamente uno senza parametri (detto di default). Programmazione a oggetti p.12/32

Metodo main Metodo da cui la classe inizia automaticamente l esecuzione. Sintassi public static void main( String[] args ) blocco Programmazione a oggetti p.13/32

Accessori e mutatori Consentono la lettura e la modifica di campi. Sintassi tipo Variabile getnome Var( ) blocco void setnome Var( lista Parametri ) blocco Esempio int getnum( ) { return num; } void setnum( int n ) { num = n; } Programmazione a oggetti p.14/32

La classe String Creazione di stringhe. Uso di stringhe. Programmazione a oggetti p.15/32

Concatenazione e sequenze escape Operatore +. String primomessaggio = "Buongiorno!"; String secondomessaggio = "Mi chiamo Pierluigi."; String messaggiototale; messaggiototale = primomessaggio+secondomessaggio; Sequenza escape: carattere \ seguito da altro carattere. \": doppio apice. \ : apice singolo. \\: carattere backslash. \n: per andare a capo nella stringa. \r per andare all inizio della riga corrente. \t per andare alla successiva tabulazione. Programmazione a oggetti p.16/32

Sovraccaricamento di metodi Firma di un metodo: nome del metodo, numero e tipo dei suoi parametri. All interno di una classe, i metodi devono avere tutti firma diversa I metodi presenti più volte con lo stesso nome si dicono sovraccaricati Programmazione a oggetti p.17/32

Ereditarietà Permette di definire una super-classe, e successivamente di definirne un altra più specializzata, detta sotto-classe, aggiungendo solo il necessario. Sintassi class nome Sotto extends nome Super blocco Risparmio di lavoro: sotto-classe eredita proprietà di super-classe, necessario programmare solo nuove funzionalità. Sotto-classe utilizza campi e metodi di super-classe (oltre a quelli aggiunti nella sua definizione). In sotto-classe, metodi di super-classe possono essere opportunamente ri-definiti. Programmazione a oggetti p.18/32

Gerarchia delle classi Indica le relazioni di ereditarietà. Rappresenta graficamente il processo di specializzazione. Programmazione a oggetti p.19/32

Ereditarietà e costruttori I costruttori non sono ereditati. Costruttore sotto-classe, per prima cosa, invoca costruttore super-classe mediante parola chiave super. Se non esplicitamente, implicitamente super( ): errore se super-classe non ha costruttore senza parametri. Invocazione del costruttore super-classe deve essere prima istruzione (altrimenti viene invocato super( )). Se sotto-classe non ha costruttori espliciti, costruttore di default invoca super( ). Programmazione a oggetti p.20/32

Forme bidimensionali e costruttori Programmazione a oggetti p.21/32

Ereditarietà e campi Sotto-classe può definire nuovi campi. Programmazione a oggetti p.22/32

Ereditarietà e metodi Sotto-classe può definire nuovi metodi. Programmazione a oggetti p.23/32

Ereditarietà e sovrascrittura Sotto-classe può sovrascrivere (ovvero, modificare) metodi di super-classe. Programmazione a oggetti p.24/32

Gerarchia di forme bidimensionali Programmazione a oggetti p.25/32

Ereditarietà e tipi di dato Un oggetto di una classe derivata è del tipo della sotto-classe e del tipo della super-classe (e di tutte le sue super-classi). Possibile usare un oggetto di una classe derivata in tutte le circostanze in cui è ammesso usare un oggetto della super-classe. Rettangolo miorettangolo; Quadrato mioquadrato = new Quadrato( 3 ); miorettangolo = mioquadrato; Non è possibile il contrario. Rettangolo miorettangolo = new Rettangolo( 3,2 ); Quadrato mioquadrato; mioquadrato = miorettangolo; Programmazione a oggetti p.26/32

Modificatori public: indica che non ci sono restrizioni su chi può utilizzare le classi, i campi oppure i metodi. private: rende il campo oppure il metodo non accessibili fuori dalla classe. Permette incapsulamento. static: indica metodi e campi che appartengono a tutta la classe e che non richiedono alcun oggetto per poter essere utilizzati. Metodi della classe Math (ad esempio, estrazione di numeri casuali o calcolo di radice quadrata). final: indica metodi e campi che non possono essere sovrascritti o modificati. Programmazione a oggetti p.27/32

Eccezioni Strumento per gestire il trattamento degli errori. Un eccezione è un istanza di una classe che, generalmente, estende Exception. Un metodo che rileva un errore genera un eccezione. L eccezione deve essere catturata dal codice che ha chiamato il metodo. Altrimenti gestore di default la gestisce (in genere, con un messaggio all utente). Programmazione a oggetti p.28/32

Generare eccezioni Mediante l istruzione throw. Sintassi tipo nome( lista Par ) throws lista Ecc throw oggetto Eccezione; Esempio Razionale(int n,int d) throws EccezioneRazionale { if ((n>0)&&(d>0)) { num = n; den = d; } else { throw new EccezioneRazionale( "N o D non positivo" ); } } Programmazione a oggetti p.29/32

Catturare eccezioni Mediante l istruzione try-catch. Sintassi try blocco catch (tipo Eccezione 1 nome Eccezione 1) Esempio Razionale nr = null; try { int num = (int)(math.random()*100); int den = (int)(math.random()*100); nr = new Razionale( num,den ); } catch ( EccezioneRazionale e ) { System.exit( 1 ); } System.out.println( nr.getnum()+"/"+nr.getden() ); Programmazione a oggetti p.30/32

Pacchetti Consentono di raggruppare classi che realizzano funzioni tra di loro collegate. Ogni classe fa parte di un pacchetto. Sintassi package nome Pacchetto; Nome di un pacchetto generalmente strutturato in più sequenze di caratteri separate da un punto. Esempio: piluc.gj.poligoni Per accedere alla classe di un pacchetto, si scrive il nome completo della classe, oppure si importa la classe facendo uso dell istruzione import. Sintassi import nome Pacchetto.nome Classe; import nome Pacchetto.*; Programmazione a oggetti p.31/32

Interfacce Strumento di progettazione: consistono di metodi dichiarati (e non definiti) e di costanti. Delegano l implementazione alle loro realizzazioni. Sintassi interface nome Interfaccia blocco class nome extends classe implements lista Interfacce blocco Esempio public interface Curva { public boolean contiene( Point p ); } public classe CurvaVuota implements Curva { public boolean contiene( Point p ) { return false; } } Programmazione a oggetti p.32/32