Ereditarietà: concetti di base
|
|
- Rosina Nicolosi
- 5 anni fa
- Visualizzazioni
Transcript
1 : concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una nuova L ereditarietà è una tecnica tale per cui è possibile definire: una classe estremamente generale successivamente classi più specializzate semplicemente aggiungendo nuovi dettagli alla classe di partenza 2 1
2 : definizione più formale È una relazione fra classi in cui una classe (superclasse o classe base) raccoglie a fattor comune le caratteristiche comuni di una o più altre classi (sottoclassi o specializzazioni) Le sottoclassi ereditano tutte le caratteristiche della superclasse In UML si indica graficamente con una freccia dalla sottoclasse alla superclasse superclasse o classe base VeicoloMotorizzato sottoclassi o specializzazioni Auto Moto Pulman 3 Astrazione Superclassi Generalizzazione Specializzazione Classi Classificazione Istanziazione Oggetti Rappresentazione 4 Mondo reale 2
3 Perché l Economia tutti gli attributi, operazioni e associazioni comuni a un certo insieme di classi vengono scritte una sola volta Consistenza se un attributo, operazione o associazione della superclasse viene cambiato, la modifica si ripercuote automaticamente su tutte le sottoclassi Riuso la superclasse può essere riusata in contesti diversi Estendibilità è sempre possibile, anche in un secondo momento, aggiungere nuove sottoclassi senza dover riscrivere la parte comune contenuta nella superclasse ogni sottoclasse può ridefinire a piacimento attributi e operazioni (overriding) 5 Fino a dove posso arrivare? Non ho limiti sulla gerarchia che posso costruire Veicolo VeicoloMotorizzato VeicoloNonMotorizzato Auto Moto Pulman Bicicletta Carrozza Taxi 6 3
4 Il tipo di relazione L ereditarietà realizza una relazione is-a Quindi è corretto affermare che un oggetto creato a partire da una sottoclasse sia di tipo della superclasse! Esempi: un oggetto istanziato a partire dalla classe Bicicletta, oltre che essere una Bicicletta, è anche un VeicoloNonMotorizzato e un Veicolo un oggetto istanziato a partire dalla classe Taxi, oltre che ad essere un Taxi, è anche un Automobile, un VeicoloMotorizzato e un Veicolo... 7 multipla Una classe può ereditare da più superclassi (ereditarietà multipla) Esempio: lo studente lavoratore... Studente - nome: String - cognome: String - matricola: int Lavoratore - nome: String - cognome: String - numeroprevidenza: int StudenteLav oratore 8 4
5 multipla: problemi L ereditarietà multipla è semplice concettualmente, ma porta a una serie di problemi tecnici: Cosa succede se una classe eredita due volte dalla stessa superclasse? Cosa succede se due superclassi diverse hanno un attributo con lo stesso nome? Fortunatamente Java non supporta l ereditarietà multipla Studente - matricola: int Persona - nome: String - cognome: String StudenteLav oratore Lav oratore - numeroprevidenza: int 9 L in Java La sintassi utilizzata in Java per esplicitare che una classe deriva da un altra è la seguente: public class ClassePadre {... public class ClasseFiglia extends ClassePadre {
6 Esempio Proviamo ad implementare il seguente diagramma di classi nessun costruttore e metodo tostring() Persona - nome: String - cognome: String Creiamo un altra classe con main in cui: creiamo una persona con nome Mario, cognome Rossi creiamo uno studente con nome Marco, cognome Verdi e matricola stampiamo lo stato degli oggetti + setnome(nome :String) : void + setcognome(cognome :String) : void + getnome() : String + getcognome() : String Studente - matricola: int + setmatricola(matricola :int) : void + getmatricola() : int Sorgente La classe Object In Java qualsiasi classe specializza la classe Object Fino ad ora, non sapendolo, abbiamo scritto classi che sono specializzazione della classe Object quindi qualsiasi metodo ed attributo definito nella classe Object è ereditato dalle sottoclassi Alcuni metodi importanti della classe Object: public boolean equals(object o) public String tostring() Object + equals(object :Object) : boolean + tostring() : String Persona - nome: String - cognome: String + setnome(nome :String) : void + setcognome(cognome :String) : void + getnome() : String + getcognome() : String Studente - matricola: int + setmatricola(matricola :int) : void + getmatricola() : int 12 6
7 Esempio Se modifichiamo il main dell esercizio della slide 12 nel modo seguente: public class Test { public static void main(string a[]) { Persona p = new Persona(); p.setnome("mario"); p.setcognome("rossi");... Non avremo errori di compilazione: su oggetti di tipo Persona è possibile invocare il metodo tostring() poiché ereditato dalla classe Object Output del tipo: NomeClasse@hashCode Studente s = new Studente(); s.setnome("marco"); s.setcognome("verdi"); s.setmatricola(123456); System.out.println("Persona "+ p.getnome() + " " + p.getcognome()); System.out.println("Studente "+ s.getnome() + " " + s.getcognome() + " " + s.getmatricola()); System.out.println(p.toString()); 13 Visibilità Quando una classe ne specializza un altra, eredita tutto a prescidere dalla visibità! Però: se un attributo è definito private nella superclasse non sarà accessibile tramite nome! occorrerà passare attraverso metodi (ovviamente non privati!) se un metodo è definito private nella superclasse, non ci sarà alcun modo per permettere alle sottoclassi di invocarlo Se le sottoclassi hanno la necessità di accedere in modo diretto ad attributi e/o metodi definiti nella superclasse devo utilizzare un altro tipo di visibilità: protected Esempio: Auto + Taxi 14 7
8 Esempio package a Accede direttamente a: x, y, w, z Accede direttamente a: y, w, z A - x: int # y: int ~ z: int + w: int Accede direttamente a: y, w B C Su istanze di tipo B, accede direttamente a: y, w, z 1 1 Su istanze di tipo C, accede direttamente a: w Esempio: D E Esempio: B b;... b.y; b.w; b.z; package b C c;... c.w; 15 Riepilogo sulle visibilità Il modificatore di visibilità si applica ad attributi e metodi con lo stesso significato: Visibilità public protected private Chi può accedere la classe in cui è definito tutte le classi (sottoclassi, le classi in associazione, classi nello stesso package, classi in package diversi) la classe in cui è definito le sottoclassi le classi appartenenti allo stesso package la classe in cui è definito le classi appartenenti allo stesso package 16 8
9 Costruttori Cosa succede per i costruttori che accettano in ingresso parametri? Regola da rispettare: ogni classe inizializza i propri attributi! ritornando all esempio della Persona e della classe Studente il/i costruttori della classe Persona inizializzeranno gli attributi nome e cognome il/i costruttori della classe Studente inizializzeranno l attributo matricola ma uno studente è caratterizzato anche dal possedere un nome e un cognome dal momento che è una specializzazione della classe Persona quindi, quando si crea uno studente, occorre inizializzare anche nome e cognome Come si fa? 17 Costruttori Esistono 2 modi: Meno elegante: nel/nei costruttori della sottoclasse si inizializzno i valori per tutti gli attributi Più elegante: si invoca il costruttore della superclasse passando come argomenti i valori per gli attributi li definiti per fare ciò si utilizza la keyword super L invocazione al costruttore della superclasse deve essere la prima istruzione ad essere eseguita quindi non ci possono essere contemporaneamente super e this 18 9
10 Regole Sono sempre obbligato ad invocare esplicitamente il costruttore della superclasse? No: se la superclasse esporta il costruttore di default Si: se la superclasse esporta esclusivamente costruttori con parametri Anche se io non invoco esplicitamente il costruttore della superclasse, Java inserisce all interno dei costruttori definiti nella sottoclasse l invocazione al costruttore di default della superclasse ciò comporta che il primo costruttore ad essere eseguito è sempre quello della classe Object ciò è valido se il costruttore non ha l invocazione this! 19 Implementazione relazione is-a Ricordandoci che l ereditarietà realizza una relazione is-a, è lecito scrivere: SuperClasse ref = new SottoClasse(); Ma non è lecito scrivere: SottoClasse ref = new SuperClasse(); 20 10
11 Esempi Ok Persona s1 = new Studente(); Studente s3 = new Persona(); Ok Object s2 = new Studente(); Ok Object p1 = new Persona(); Ok s1.setnome( Paperone ); s2.setcognome( De Paperoni ); Ok p1.tostring(); 21 Ancora un esempio Realizziamo il seguente diagramma di classi: Animale - String nome + Animale() + void dormi() + void mangia() Gatto + Gatto() + void failefusa() + void parla() Papera + Papera() + void parla() Cane + Cane() + void ringhia() + void parla() Creiamo una classe in cui definiamo un array di 3 animali ed inseriamo un gatto, un cane ed una papera Per ciascuno di essi invochiamo rispettivamente: dormi, parla e mangia 22 11
12 Il cast Permette di convertire un reference ad un tipo inferiore in gerarchia di parentela Sintassi: Esempio: Meglio se si effettua il controllo prima: 23 NomeClasseFiglia ref2 = (NomeClasseFiglia)ref1; Animale a = new Gatto( Miguel );... Gatto g = (Gatto)a; g.failefusa(); if (a instanceof Gatto) { Gatto g = (Gatto)a; g.failefusa(); Concetti avanzati: classi astratte Una classe può essere astratta questo significa che non corrisponde a un concetto concreto del dominio applicativo, ma che è fatta apposta per funzionare da superclasse esempio: non esiste un veicolo, esiste un auto, una moto,... Un classe astratta: non può essere instanziata ha senso solo in quanto ne vengono create delle sottoclassi Una classe deve essere dichiarata astratta se definisce almeno un metodo astratto Una classe può essere dichiarata astratta anche se non definisce metodi astratti 24 12
13 Sintassi Classe astratta public abstract class NomeClasse {... Metodo astratto: [mod. visibilità] abstract void nomemetodo([parametri]); 25 L abstract si propaga Sono costretta a definire astratte anche le sottoclassi che non definiscono il comportamento di metodi astratti ereditati Esempio: Animale - String nome + Animale() + void dormi() + void mangia() + void parla() Felino + Felino() Papera + Papera() Cane + Cane() + void ringhia() Leone + Leone() Gatto + Gatto() + void failefusa() 26 13
14 L ereditarietà multipla? Effettivamente in java la si realizza grazie all utilizzo delle interface L interface realizza quasi un associazione del tipo is-a al test instanceof restituisce true o false Le interface contengono solo intestazioni di metodi e al più definizioni di costanti Sintassi: public interface NomeInterface { // definizione nomi metodi 27 public class Classe implements NomeInterface { // definizione del corpo dei metodi ereditati Esempi di ereditarietà: Slide successiva: equals 28 14
15 Confrontare lo stato di 2 oggetti L operatore == applicato a 2 reference permette di testare se essi referenziano lo stesso oggetto Ma se volessi sapere se due oggetti si trovano nello stesso stato, come faccio? effettuo una comparazione fra i valori degli attributi Modalità classica: overridare il metodo equals della classe Object intestazione: public boolean equals(nomeclasse obj) 29 15
Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
DettagliProgrammazione 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 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
DettagliEreditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando
DettagliCorso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
di Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona su Sommario di su di di di su Astrazione sugli oggetti di su Il concetto di classe Classe: realizza l astrazione
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliParadigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1
Incapsulamento Paradigmi della PO Ereditarietà Polimorfismo Software per TLC - AA 2008/2009 1 Incapsulamento Una classe contiene dati e metodi Filosofia Ai dati si accede solo attraverso i metodi I metodi
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 25 Ereditarietà A. Miola Maggio 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ereditarietà 1 Contenuti q Livelli di astrazione
DettagliEreditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
DettagliInformatica Ereditarietà Java. Ereditarietà
Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi
Dettagliereditarietà e polimorfismo
ereditarietà e polimorfismo Java ereditarietà o l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza o la nuova classe viene definita esprimendo solamente le differenze
DettagliRiuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili
Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne
DettagliPRINCIPI DELLA OOP. Ereditarietà e polimorfismo
PRINCIPI DELLA OOP Ereditarietà e polimorfismo Ereditarietà e specializzazione Una delle caratteristiche distintive del paradigma di programmazione orientato agli oggetti è l'ereditarietà L'ereditarietà
DettagliLaboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.
Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction
DettagliInterfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
DettagliObiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.
Obiettivi Unità B2 Gli oggetti: concetti avanzati Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione Ereditarietà L ereditarietà permette
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo
Dettagli17 - Ereditarietà, tipi e gerarchie
17 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliEreditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e Polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
DettagliGerarchia di classi Java 1
Costruttori della sottoclasse Gerarchia di classi Java Parte 2 Corso di laurea in Comunicazione digitale I costruttori non vengono ereditati, non essendo membri di classe Vengono definiti esplicitamente
DettagliOOP Ereditarietà A. FERRARI
OOP Ereditarietà A. FERRARI ereditarietà l ereditarietà permette di definire nuove classi partendo da classi sviluppate in precedenza la nuova classe viene definita esprimendo solamente le differenze che
DettagliEreditarietà. Una classe, detta superclasse, può essere specializzata definendo una sottoclasse che ne contenga casi particolari.
Ereditarietà Per definire stato e comportamento di nuovi oggetti, è utile avere una base da cui partire In particolare, un nuovo oggetto potrebbe essere un caso particolare di una tipologia di oggetti
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliI costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard
I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei
DettagliRIUSABILITÀ L OBIETTIVO
RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice già funzionante e corretto il cui sviluppo ha richiesto tempo (anni-uomo)
DettagliProgrammazione I - Preparazione A.A. 2010/2011
Programmazione I - Preparazione A.A. 2010/2011 3 febbraio 2011 Matricola:........................................................................ Cognome:........................................................................
DettagliProgettazione Object-Oriented
Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia
DettagliClassi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura
Classi astratte Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Rettangolo getarea() Quadrato getarea() getarea() Cerchio
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli17 - Classi parzialmente definite: Classi Astratte e Interfacce
17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi
DettagliINFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
DettagliConcetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object
Ereditarietà Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso protected e package La classe Object metodi tostring,
DettagliCapitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125
Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia
DettagliEreditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
DettagliEsempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
DettagliInizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
DettagliProgrammazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliCorso di Progettazione del Software
T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso
DettagliIngegneria del Software
Ingegneria del Software Java Classi Dichiarazione di Classi [Doc comment] [Modifiers] class ClassName [ extends SuperClassName] [ implements InterfaceName [, InterfaceName]...] {ClassBody Doc comment commento
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi
DettagliProgrammazione a oggetti
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
DettagliModello procedurale versus modello O-O
Modello procedurale versus modello O-O Quando si scrive un programma si crea dentro il calcolatore un modello di una porzione del mondo reale. I linguaggi di programmazione procedurali consentono di costruire
DettagliProgrammazione a Oggetti. Ereditarieta
Programmazione a Oggetti Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare una gerarchia
DettagliClassi astratte Interfacce
Classi astratte Interfacce Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni 1 Ereditarietà Abbiamo visto come L ereditarietà permette di costruire nuove classi utilizzando
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
DettagliBank account. private double balance; 11/2/2011
Il Linguaggio Java Ereditarietà Bank account class BankAccount { public BankAccount() { balance = 0; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { balance
DettagliJava. Ereditarieta RIUSO DEL CODICE
Java Ereditarieta RIUSO DEL CODICE Durante lo sviluppo di codice frequentemente i programmatori sviluppano codice molto simile a codice gia esistente Questo, spesso, viene fatto manipolando il codice esistente
DettagliGerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
DettagliProgrammazione II. Lezione 18. Daniele Sgandurra 11/1/2011.
Programmazione II Lezione 18 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 11/1/2011 1/26 Programmazione II Lezione 18 11/1/2011 Sommario 1 2/26 Programmazione II Lezione 18 11/1/2011 Parte I 3/26 Programmazione
DettagliEreditarietà e polimorfismo
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Ereditarietà e polimorfismo Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
DettagliProgrammazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):
Programmazione I 11 gennaio 2012 Matricola:........................................................................ Cognome:........................................................................ Nome:...........................................................................
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Sommario 2 2» Struttura
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliFondamenti di Informatica
Relazioni tra classi Fondamenti di Informatica 27. Standard UML 2. parte Generalizzazione: (ereditarietà) relazione in cui una classe (sottoclasse) eredita gli attributi e le operazioni di una superclasse:
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliInformatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)
Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una classe Modulo
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliE18 Esercizi su ereditarietà e polimorfismo
E18 Esercizi su ereditarietà e polimorfismo Esercizio 1 (esercizio 10.1 del libro di testo). Si scriva una classe Persona dotata dei campi CodiceFiscale, Nome, Cognome e dei metodi per impostare e leggere
DettagliFondamenti di Informatica T-1. Ereditarietà & Polimorfismo
Ereditarietà & Polimorfismo Ereditarietà Meccanismo per definire una nuova classe (classe derivata) come specializzazione di un altra (classe base) La classe base modella un concetto generico La classe
DettagliUguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi
DettagliIn questa lezione. Polimorfismo
In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo
Dettaglie il loro uso: Oggetti composti IL TEMA DELLA RIUSABILITÀ APPROCCI PER IL RIUTILIZZO:
APPROCCI PER IL RIUTILIZZO: ricopiare manualmente il codice della classe esistente e cambiare quel che va cambiato creare un oggetto composto che incapsuli il componente esistente... gli inoltri le operazioni
DettagliRETI DI CALCOLATORI Linguaggio Java: Ereditarietà
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Ereditarietà Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliA. Ferrari Object Oriented Design
Object Oriented Design UML class diagram cos è UML o è un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (Python, C, C++, Java, ) o fornisce una serie di diagrammi per
DettagliRiassunto. La programmazione OO. Oggi. Esempio
Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 17 29 novembre
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliE7 Esercizi sul Capitolo 7 Realizzazione di Classi
E7 Esercizi sul Capitolo 7 Realizzazione di Classi Esercizio 1 (esercizio 7.1 del libro di testo). Nella classe Studente definita di seguito indicare le variabili d istanza, le variabili di classe e le
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,
DettagliPROGRAMMAZIONE 2 4. Java: un modello operazionale
PROGRAMMAZIONE 2 4. Java: un modello operazionale PR2 2018-2019 1 Abstract Stack Machine Abstract Stack Machine: modello computazionale per Java che permette di descrivere la nozione di stato modificabile
DettagliEccezioni predefinite
Eccezioni predefinite Java mette a disposizione molte eccezioni già confezionate, che descrivono la maggioranza dei problemi che possono verificarsi a run-time. Ognuna di queste è una classe. Tutte queste
DettagliGerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ereditarietà e Polimorfismo: Polimorfismo - d Regole Sintattiche e Semantiche versione 1.2 Questo lavoro è concesso in uso secondo i termini di
DettagliInformatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1
Informatica 3 Informatica 3 LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Modulo 1: Ereditarietà Modulo 2: Polimorfismo e classi astratte Modulo 3: Visibilità delle proprietà di una
DettagliEsercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
Dettagli