Proprietà delle Classi e degli Oggetti in Java

Documenti analoghi
Proprietà delle Classi e degli Oggetti in Java

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

Gerarchia di classi Java 1

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

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

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Gerarchia di classi Java 1

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Modello procedurale versus modello O-O

Esempio 2: Subtyping

Polimorfismo. Subtyping-polimorfismo

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

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

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

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Variabili e Metodi di classe Interfacce e Package File in Java

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

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

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Informatica Ereditarietà Java. Ereditarietà

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Paradigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1

La classe java.lang.object

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

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

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

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

Unità A1 Funzioni MODULO Java 2

Programmazione orientata agli oggetti Ereditarietà

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Classi ed Oggetti. Fondamenti di Informatica A-K

Laboratorio di programmazione

Algoritmi di Ricerca. Esempi di programmi Java

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

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Definizione di classi. Walter Didimo

Programmazione a oggetti

14 - Metodi e Costruttori

Algoritmi di Ricerca. Esempi di programmi Java

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

Dichiarazione di una classe. Dichiarazione ereditarietà

Concetto di Funzione e Procedura METODI in Java

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

17 - Ereditarietà, tipi e gerarchie

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

Uguaglianza e copia di oggetti

Programmazione orientata agli oggetti Ereditarietà

Programmazione ad oggetti

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà

Ereditarietà e Polimorfismo

Laboratorio di programmazione

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Esempi in Java di program.ne O-O

Do...While() Break Continue Concetto di Funzione e Procedura METODI in Java

Programmazione Orientata agli Oggetti in Linguaggio Java

ereditarietà e polimorfismo

Oggetti e classi. Cos è un oggetto

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

Oggetti e dati primitivi 1

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

Programmazione orientata agli oggetti Subtyping e polimorfismo. Subtyping-polimorfismo

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

COGNOME NOME MATRICOLA DATA

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Introduzione a Java. Giovanni Pardini. Dipartimento di Informatica Università di Pisa. 2 Java. Sommario. Esercizio: BankAccount

Ereditarietà. Ivan Lanese e Cosimo Laneve

Le basi del linguaggio Java

Ereditarietà. Una classe, detta superclasse, può essere specializzata definendo una sottoclasse che ne contenga casi particolari.

Stringhe ed Array. Fondamenti di Informatica A-K

Array. Definizione e utilizzo di vettori

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Lezione 4. Massimiliano Palese IEEE Student Member

I Metodi. Fondamenti di Informatica A-K

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

IL TEMA DELLA RIUSABILITÀ

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

Lezione 13 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona

Lezione 13 programmazione in Java

Corso sul linguaggio Java

Corso di Progettazione del Software

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

Array mono- e bi-dimensionali Cicli while e do-while

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 r, o, s, m; 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

Proprietà delle classi e degli oggetti Java 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

Proprietà delle classi e degli oggetti Java 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

Proprietà delle classi e degli oggetti Java 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à tutti i metodi e i campi della classe tempo ed in più i campi e i metodi definiti in essa. Fondamenti di Informatica - D. Talia - UNICAL 11

Proprietà delle classi e degli oggetti Java 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

Proprietà delle classi e degli oggetti Java 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

Proprietà delle classi e degli oggetti Java 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