Programmazione Gli oggetti in un

Documenti analoghi
Definizione di classi. Walter Didimo

Concetti base programmazione. Antonio Gallo

Modello procedurale versus modello O-O

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Programmazione con Java

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

Fondamenti Teorici e Programmazione

Strutture come parametri di funzioni

Programma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Programmazione II Compitino (Vers. B)

Programmazione a Oggetti Lezione 8. Definizioni di Classi II

I Metodi. Fondamenti di Informatica A-K

Programmazione a oggetti

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Oggetti. Definizioni di Classi II

Java Le stringhe. Stringhe

Stringhe ed Array. Fondamenti di Informatica A-K

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Laboratorio di informatica Ingegneria meccanica

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Java Le stringhe. Stringhe

Algoritmi e Strutture Dati

Programmazione II. Lezione 23. Daniele Sgandurra 28/1/2011.

Java: Definire Classi e Creare Oggetti

Algoritmi e Strutture di Dati

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

Introduzione alle classi e agli oggetti. Walter Didimo

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Strutture Dati Dinamiche

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

Realizzazione di Classi. Emilio Di Giacomo e Walter Didimo

Programmazione ad oggetti

Stringhe. Walter Didimo

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Note ed esercizi aggiuntivi

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Programmazione II Compitino (Vers. A)

Istruzioni di selezione in Java 1

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

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

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

Introduzione al linguaggio C Puntatori

Fondamenti di Informatica

Laboratorio di programmazione

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Programmazione I - corso B a.a prof. Viviana Bono

Impariamo a programmare in. Lezione 7

Programmazione II Compitino (Vers. A)

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

Array. Definizione e utilizzo di vettori

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Il Linguaggio di Programmazione Pascal

Programmazione orientata agli oggetti. Ivan Lanese

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

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

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

Allocazione Dinamica della Memoria

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.2b: Programmazione in Pascal (1)

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Corso sul linguaggio Java

Quadrato Magico. Fondamenti di Programmazione

Programmazione Preparazione al II Compitino

14 - Metodi e Costruttori

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

UD 3.2b: Programmazione in Pascal (1)

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

La classe java.lang.object

Strutturare il codice: sottoprogrammi

METODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi

ProgrammazioneTre esempi di firma di metodo

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:

i Vettori Alessandra Giordani Lunedì 15 aprile

Il linguaggio C. Notate che...

Programmazione II Compitino (Vers. B)

C: panoramica. Violetta Lonati

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

FONDAMENTI DI INFORMATICA T-A. Java parte 3 Ing. Giorgio Villani

Introduzione al linguaggio C Dati aggregati

Corso sul linguaggio Java

Corso di Fondamenti di Informatica Università degli Studi di Cassino

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Dati aggregati. Violetta Lonati

Stringhe in C. Alessandra Giordani Lunedì 23 aprile 2012

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Caratteristiche di un linguaggio ad alto livello

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Laboratorio di Programmazione Anno Accademico

L Array e un oggetto. L array puo contenere elementi che sono: tipi primitivi, o oggetti (in realta riferimenti ad oggetti!!!).

Transcript:

Programmazione Gli oggetti in un Eugenio Omodeo Università degli Studi di Trieste. Trieste, 04.03.2019

Un oggetto è una mescolanza di dati e comportamenti... campi metodi

Un oggetto è una mescolanza di dati e comportamenti... campi metodi... realizzati rispettivamente dai campi dell oggetto e dai suoi metodi

Un oggetto è una mescolanza di dati e comportamenti... campi Esempio metodi... realizzati rispettivamente dai campi dell oggetto e dai suoi metodi

Ogni oggetto è esemplare, istanza, di una qualche classe campi campi campi metodi metodi metodi } {{ } classe

Ogni oggetto è esemplare, istanza, di una qualche classe campi metodi campi metodi campi metodi Quanti sono? Dove risiedono? } {{ } classe

Ogni oggetto è esemplare, istanza, di una qualche classe

di un oggetto Implementando una classe, dovremo specificare quali campi caratterizzano ciascun esemplare della classe.

di un oggetto Implementando una classe, dovremo specificare quali campi caratterizzano ciascun esemplare della classe. I campi di un oggetto sono perciò chiamati anche sue variabili d istanza, perché sono dote esclusiva di ciascun esemplare.

di un oggetto Implementando una classe, dovremo specificare quali campi caratterizzano ciascun esemplare della classe. È possibile che due oggetti, pur essendo distinti, abbiano tutti i campi uguali. Pertanto: quasi mai ha senso confrontare due oggetti tramite l ==!

di un oggetto 1 o esempio Potremmo, nel definire una classe Rettangolo, attribuire agli oggetti suoi esemplari quattro campi:

di un oggetto 1 o esempio Potremmo, nel definire una classe Rettangolo, attribuire agli oggetti suoi esemplari quattro campi: x, y coordinate di un suo prestabilito vertice altezza larghezza

di un oggetto 1 o esempio Potremmo, nel definire una classe Rettangolo, attribuire agli oggetti suoi esemplari quattro campi: x, y coordinate di un suo prestabilito vertice altezza larghezza Perché questi e non altri? Sta al programmatore scegliere

di un oggetto 1 o esempio Potremmo, nel definire una classe Rettangolo, attribuire agli oggetti suoi esemplari quattro campi: x, y coordinate di un suo prestabilito vertice altezza larghezza Perché questi e non altri? Sta al programmatore scegliere ( Avete una proposta alternativa? )

di un oggetto 2 o esempio Potremmo, nel definire una classe Frazione, attribuire agli oggetti suoi esemplari due campi:

di un oggetto 2 o esempio Potremmo, nel definire una classe Frazione, attribuire agli oggetti suoi esemplari due campi: numeratore l intero da dividere denominatore l intero per cui dividere

di un oggetto 2 o esempio Potremmo, nel definire una classe Frazione, attribuire agli oggetti suoi esemplari due campi: numeratore l intero da dividere denominatore l intero per cui dividere Ridotta ai minimi termini? Sta al programmatore decidere

Visibilità dei campi È bene che i campi siano privati, altrimenti potrebbero venir modificati dall esterno.

Visibilità dei campi È bene che i campi siano privati, altrimenti potrebbero venir modificati dall esterno. Fanno eccezione a questa regola i campi dichiarati final, visto che una volta inizializzati non possono piú cambiar valore.

Visibilità dei campi È bene che i campi siano privati, altrimenti potrebbero venir modificati dall esterno. Fanno eccezione a questa regola i campi dichiarati final, visto che una volta inizializzati non possono piú cambiar valore. Esempio: Il campo length di qualunque array.

Come e costituito un oggetto Eugenio Omodeo Universita degli Studi di Trieste. Programmazione Gli oggetti in un

Sommaria classificazione dei metodi campi Costruttori metodi di accesso metodi di modifica altri metodi

Cosa specificano i metodi non-statici? I metodi non-statici di una classe definiscono fisionomia comportamento che accomunano gli oggetti esemplari di quella classe

Cosa specificano i metodi non-statici? I metodi non-statici di una classe definiscono fisionomia comportamento che accomunano gli oggetti esemplari di quella classe Questo discorso comprende anche i costruttori; perché se è vero che un costruttore non può riferirsi a un oggetto che non c è ( essendo, al momento, in costruzione ), è pur vero che i campi dell oggetto vengono allocati subito, non appena il costruttore viene invocato ( con la new ).

Metodi non-statici: Esempio ( Di nuovo le frazioni ) Nel caso della Frazione, il costruttore può effettuare la riduzione ai minimi termini ed attribuire l eventuale segno negativo al solo numeratore.

Metodi non-statici: Esempio ( Di nuovo le frazioni ) Nel caso della Frazione, metodi di somma, prodotto, inversione stabiliranno come effettuare queste operazioni e garantiranno se cosí è convenuto il mantenimento dei minimi termini.

di un oggetto Talvolta i metodi dinamici di un oggetto consentono di modificare dall interno i campi di un oggetto. Modificano cosí usa dire lo stato dell oggetto.

Accesso ai dati di un oggetto Talvolta i metodi dinamici consentono semplicemente di acquisire dall esterno informazioni sul suo stato.

Accesso ai dati di un oggetto Talvolta i metodi dinamici consentono semplicemente di acquisire dall esterno informazioni sul suo stato. Ciò è utile, in quanto i campi sono per lo piú privati.

Accesso ai dati di un oggetto Talvolta i metodi dinamici consentono semplicemente di acquisire dall esterno informazioni sul suo stato. Ciò è utile, in quanto i campi sono per lo piú privati. Si pensi, ad es., al metodo della classe String lenght( )

Un utilizzo sconsigliato dei campi I campi: rappresentano lo stato: possono essere attributi primari dell oggetto ( ad es. la larghezza di un rettangolo ) o in qualche caso attributi secondari ( quali ad es. perimetro o area );

Un utilizzo sconsigliato dei campi I campi: rappresentano lo stato: possono essere attributi primari dell oggetto ( ad es. la larghezza di un rettangolo ) o in qualche caso attributi secondari ( quali ad es. perimetro o area ); non vanno utilizzati come espediente per far condividere informazioni accessorie ai metodi: per questo fine, lo strumento appropriato è il passaggio di parametri.

Valori per le variabili di una certa classe Una variabile, xxx, dichiarata come Tipo xxx ( dove Tipo è una certa classe ) può assumere come valori

Valori per le variabili di una certa classe Una variabile, xxx, dichiarata come Tipo xxx ( dove Tipo è una certa classe ) può assumere come valori gli oggetti di classe Tipo

Valori per le variabili di una certa classe Una variabile, xxx, dichiarata come Tipo xxx ( dove Tipo è una certa classe ) può assumere come valori il valore fittizio null l indefinito

Valori per le variabili di una certa classe Una variabile, xxx, dichiarata come Tipo xxx ( dove Tipo è una certa classe ) può assumere come valori gli oggetti di classe Tipo il valore fittizio null l indefinito Ma allora una var. di tipo Boolean ammette tre possibili valori?

Un oggetto viene riferito ( non posseduto come valore ) xxx riferimento campi metodi

Un oggetto viene riferito ( non posseduto come valore ) xxx riferimento campi Questa la situazione che si instaura con una Tipo xxx = newtipo( ); metodi

Un oggetto viene riferito ( non posseduto come valore ) xxx riferimento campi metodi Stessa situazione quando, in un invocazione, xxx funge da parametro formale.

Un oggetto viene riferito ( non posseduto come valore ) xxx riferimento campi metodi Questa la situazione che si instaura con una Tipo xxx = newtipo( ); Stessa situazione quando, in un invocazione, xxx funge da parametro formale.

Potere dei riferimenti Copiando un oggetto in un parametro formale, all invocazione di un metodo, si conferisce al metodo la possibilità di modificare lo stato di quell oggetto.

Potere dei riferimenti Copiando un oggetto in un parametro formale, all invocazione di un metodo, si conferisce al metodo la possibilità di modificare lo stato di quell oggetto. Qualora, però, il metodo poi cambi il valore del parametro formale, con ciò rinuncia a tale facoltà.

Potere dei riferimenti Copiando un oggetto in un parametro formale, all invocazione di un metodo, si conferisce al metodo la possibilità di modificare lo stato di quell oggetto. Un metodo potrà dunque restituire modificato il contenuto ( non la lunghezza ) di un array ricevuto tramite parametro;

Potere dei riferimenti Copiando un oggetto in un parametro formale, all invocazione di un metodo, si conferisce al metodo la possibilità di modificare lo stato di quell oggetto. Un metodo potrà dunque restituire modificato il contenuto ( non la lunghezza ) di un array ricevuto tramite parametro; non potrà, invece, in alcun modo modificare una String né un Integer

Una radicale differenza fra String ed array La classe String non offre alcun metodo di modifica.

Una radicale differenza fra String ed array La classe String non offre alcun metodo di modifica. Per gli array è prevista anche la modifica dello stato. Consideriamo:

Una radicale differenza fra String ed array String a = "Ciao"; char[ ] b = new char[4]; b[0] = C ; b[1] = i ; b[2] = a ; b[3] = o ; char x, y;

Una radicale differenza fra String ed array String a = "Ciao"; char[ ] b = new char[4]; b[0] = C ; b[1] = i ; b[2] = a ; b[3] = o ; char x, y; Accesso al primo carattere di b e di a: x = b[0]; y = a.charat(0);

Una radicale differenza fra String ed array String a = "Ciao"; char[ ] b = new char[4]; b[0] = C ; b[1] = i ; b[2] = a ; b[3] = o ; char x, y; Modifica del primo carattere di b e di a: b[0] = c ; a = c + a.substring(1);

Una radicale differenza fra String ed array String a = "Ciao"; char[ ] b = new char[4]; b[0] = C ; b[1] = i ; b[2] = a ; b[3] = o ; char x, y; Accesso al primo carattere di b e di a: x = b[0]; y = a.charat(0); Modifica del primo carattere di b e di a: b[0] = c ; a = c + a.substring(1); Si tratta di due meccanismi ben diversi: in che senso?