Proprietà delle Classi e degli Oggetti in Java

Documenti analoghi
Proprietà delle Classi e degli Oggetti in Java

18 - Classi parzialmente definite: Classi Astratte e Interfacce

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

Esempio 2: Subtyping

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

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Algoritmi di Ricerca. Esempi di programmi Java

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

14 - Metodi e Costruttori

Programmazione ad oggetti

Laboratorio di programmazione

Ereditarietà e Polimorfismo

Oggetti e classi. Cos è un oggetto

La classe java.lang.object

Corso di Fondamenti di Informatica I

Introduzione. Java. Esempio. Esempio

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

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

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

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

Modificatori di visibilità

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

Programmazione orientata agli oggetti Classi astratte e interfacce

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

Uso di metodi statici. Walter Didimo

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Java. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

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

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

e il loro uso: esistente e cambiare quel che va cambiato specializzare (per ereditarietà) la classe Counter public class EsempioNuovo {

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

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Programmazione ad oggetti

IL CONCETTO DI CLASSE

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

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

Java: Definire Classi e Creare Oggetti

Fondamenti di Informatica I

RETI DI CALCOLATORI Linguaggio Java: Ereditarietà

Esempio: Interfacce. Gioco Interfacce

Programmazione Java: Polimorfismo

Esempio: Interfacce. Gioco Interfacce

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Esercitazione 3. Espressioni booleane I comandi if-else e while

Definizione di metodi

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Fondamenti di Informatica T-1. Ereditarietà & Polimorfismo

Riassunto. La programmazione OO. Oggi. Esempio

1 Il Paradigma ad Oggetti

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

Ereditarietà (ultima)

Variabili e Parametri. Scope, Lifetime Inizializzazione

Pubblico e privato. Per capire il concetto di pubblico e privato è possibile pensare a diversi oggetti del mondo reale. Ad esempio: bancomat.

Programmazione con Java

Esercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Introduzione alla Programmazione in Java attraverso un esempio commentato

Corso di Informatica

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Fondamenti di Informatica T-1. Costruttori Ereditarietà

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

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

Indice. Prefazione. 3 Oggetti e Java 53

Programmazione ad Oggetti. Java Parte II

Definizione di classi

Implementazione Java di un ADT

Algoritmi di Ricerca. Esempi di programmi Java

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Programmazione Orientata agli Oggetti in Linguaggio Java

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

CLASSI ASTRATTE - ESERCIZIO

Fondamenti di Informatica

Programmazione ad oggetti

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Eredità e Polimorfismo in Java

TIPI PRIMITIVI: LIMITI

Definizione di metodi

Le basi del linguaggio Java

Funzioni, Stack e Visibilità delle Variabili in C

Il Linguaggio Java. Le interfacce

La classe Object. Ce li ha anche HelloWorld!!!

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

Esercizi Programmazione I

5 - Istruzioni condizionali

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Finestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe!

Transcript:

Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di una classe si definiscono implicitamente comportamenti e operazioni degli oggetti che appartengono alla classe. Quindi una classe Java è composta da un insieme di oggetti ed un insieme di metodi associati. Una classe può essere composta da più sottoclassi Ad esempio, la classe dei triangoli è composta dalle sottoclassi dei triangoli equilateri, dei triangoli isosceli e dei triangoli scaleni. La classe dei negozi è composta dalle sottoclassi dei negozi alimentari, di abbigliamento, di elettrodomestici, di automobili ecc. La classe degli studenti dell UNICAL è composta dalle sottoclassi degli studenti di ingegneria, di economia, di scienze, di farmacia, e di lettere. Fondamenti di Informatica - D. Talia - UNICAL 2

Proprietà object-oriented di Java Un oggetto è una istanza di una classe. Per effettuare operazioni su una classe è necessario creare un oggetto che è costituito da un insieme di campi o variabili d istanza, a cui corrispondono locazioni di memoria, corrispondenti a quelli dichiarati nella classe. Un metodo realizza un insieme di operazioni sugli oggetti di una classe. Gli oggetti di una classe possono essere manipolati solo tramite i metodi della classe stessa. I metodi possono essere definiti con i modificatori public per indicare che sono visibili anche a metodi non dichiarati nella classe o private per indicare che sono visibili solo all interno della classe. C è una terza possibilità che vedremo più avanti. Fondamenti di Informatica - D. Talia - UNICAL 3 Proprietà object-oriented di Java Dichiarazione di oggetti: nomeclasse nomeoggetto; Esempio: matrice M1, M2; La dichiarazione dell oggetto presuppone che la classe sia stata già definita. Creazioni di oggetti : nomeoggetto = new nomeclasse(); Esempio: M1 = new matrice(); Nella creazione tra le parentesi () possono essere inseriti valori di inizializzazione per le variabili istanze dell oggetto. In questo caso occorre avere un metodo costruttore che viene eseguito nell atto della creazione dell oggetto. Fondamenti di Informatica - D. Talia - UNICAL 4

Esempio : la classe tempo class tempo private int ore; // i campi sono private, tranne separatore private int minuti; private int secondi; public char separatore; // questi sono i 4 campi dell oggetto della classe tempo public int assegnatempo(int ora, int min, int sec) if (ora >= 0 && ora < 24 && min >= 0 && min < 60 && sec >=0 && sec <60) this.ore = ora; this.minuti = min; // in questo metodo si è usato this ma può essere usato this.secondi = sec; // anche negli altri metodi return 0; else return 1; public int leggiora() ore = Console.readInt( Inserire ora: ); return ore ;....... Continua Fondamenti di Informatica - D. Talia - UNICAL 5 Esempio : la classe tempo..... public int leggiminuti() minuti = Console.readInt( Inserire minuti: ); return minuti; public int leggisecondi() secondi = Console.readInt( Inserire secondi: ); return secondi; public void aggiungiore(int numore) ore = ore + numore; while (ore > 23) ore = ore - 24; public void visualizza (boolean acapo) System.out.print(ore); System.out.print(separatore); System.out.print(minuti); System.out.print(separatore); if (acapo) System.out.println(secondi); else System.out.print(secondi); Fondamenti di Informatica - D. Talia - UNICAL 6

Esempio class Programmatempo public static void main (String args[]) int o, m, s, r; tempo miotempo; // object-id miotempo = new tempo(); //creazione dell oggetto miotempo.separatore = : ; // perché è public r=miotempo.assegnatempo(11,30,15); miotempo.visualizza(true); o=miotempo.leggiora(); m=miotempo.leggiminuti(); s=miotempo.leggisecondi(); miotempo.visualizza(true); miotempo.aggiungiore(6); miotempo.visualizza(true); Fondamenti di Informatica - D. Talia - UNICAL 7 Esempio Se si dichiarasse un metodo di tipo private dentro la classe tempo, questo non potrebbe essere utilizzato dalle altre classi. Il nome dell oggetto non è usato nei metodi della classe perché esso è implicito. Usando this si può fare riferimento ad esso (vedi esempio). Modifiche possibili: Sostituire assegnatempo con il metodo costruttore. Controllare i valori letti nei metodi leggiora, leggiminuti e leggisecondi. Inserire un ciclo nel metodo main per leggere e visualizzare orari fino a che non viene letto un valore di particolare. Modificare il metodo main in modo che dato un orario vengano visualizzati gli orari corrispondenti in diverse città con differenti fusi orari...... Fondamenti di Informatica - D. Talia - UNICAL 8

Analizziamo brevemente le quattro proprietà principali dei linguaggi object-oriented: - Incapsulamento - Ereditarietà - Polimorfismo - Overriding Incapsulamento: La proprietà di rendere invisibili i dati e di gestirli solo tramite metodi. In questo modo diversi programmi possono avere diverse visibilità dei dati e si costruiscono delle astrazioni funzionali. Questo accade nella vita reale quando usiamo oggetti e macchine senza conoscere il loro contenuto ed il loro funzionamento interno. Fondamenti di Informatica - D. Talia - UNICAL 9 Ereditarietà : Le proprietà di una classe possono essere ereditate in tutto o in parte dalle sue sottoclassi che possono avere anche altre specifiche proprietà. La classe genitrice è detta superclasse, mentre la sottoclasse è detta classe derivata. Questo viene realizzato tramite la parola chiave extends. Un oggetto della sottoclasse incapsula tutti i dati della classe genitrice più i suoi dati e può usare tutti i metodi della superclasse risparmiando nella scrittura del codice. I metodi e i dati della superclasse non c è bisogno di riscriverli. Fondamenti di Informatica - D. Talia - UNICAL 10

Ereditarietà Se ad esempio, vogliamo estendere la classe tempo con una classe tempo2 che contiene anche i centesimi di secondo si può scrivere: class tempo2 extends tempo private int centesimi; public void assegnacentesimi (int cent) this.centesimi = cent ; public int leggicentesimi () centesimi = Console.readInt( Inserire ora: ); return centesimi ; La classe tempo2 conterràtuttiimetodie icampi della classetempo ed in più i campie imetodi definitiinessa. Fondamenti di Informatica - D. Talia - UNICAL 11 Polimorfismo : Selezione di un metodo tra diversi metodi che hanno lo stesso nome in base al tipo ed al numero dei parametri. All interno di una stessa classe o di una classe da essa derivata si possono avere più metodi con lo stesso nome ma con parametri diversi per tipo e/o per numero. Ad esempio, possiamo metodi diversi che effettuano operazioni matematiche su dati di tipo differente. Oppure due funzioni assegnatempo in cui la seconda usa la prima per assegnare ore, minuti e secondi e quindi assegna anche i centesimi di secondi. L insieme del nome e dei parametri di un metodo sono detti firma del metodo. La firma è unica. Non si possono avere metodi che differiscono per il tipo del valore restituito. Fondamenti di Informatica - D. Talia - UNICAL 12

Overriding : La possibilità di ri-definire (sovrascrivere) in una classe derivata i metodi della classe genitrice. In questo caso, quando viene invocato un metodo si usa quello che è definito all interno della sottoclasse. Ad esempio, nella classe tempo2 si può definire un metodo assegnatempo per assegnare anche i centesimi che ridefinisce il metodo con lo stesso nome della classe tempo. miotempo2.assegnatempo(o, m, s, c); Se invece si vuole usare in una classe derivata un metodo della classe genitrice che ha lo stesso nome del metodo della classe derivata si può fare tramite la parola chiave super : super.assegnatempo(o, m, s); L overriding non va confuso con il polimorfismo. Nel caso dell overriding i metodi hanno stessa firma. Ma stanno in due classi diverse! Fondamenti di Informatica - D. Talia - UNICAL 13 I dati delle superclassi che vengono usati da metodi delle classi derivate devono essere dichiarate di tipo protected non private. Vedere l esempio della classe tempo nel caso in cui si definisca la classe tempo2 : class tempo protected int ore; protected int minuti; protected int secondi; public char separatore;............ Se i dati della superclasse vengono modificati, il compilatore potrà segnalare quale parti modificare nelle sottoclassi derivate. Fondamenti di Informatica - D. Talia - UNICAL 14