FloorButton - pressed : Boolean = false + resetbutton( ) : void + pressbutton( ) : void

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "FloorButton - pressed : Boolean = false + resetbutton( ) : void + pressbutton( ) : void"

Transcript

1 0. (Caso di studio facoltativo) Pensare a oggetti: incorporare l ereditarietà nel simulatore di ascensore Rivisitiamo ora il nostro progetto di simulatore di ascensore per vedere come può beneficiare dell ereditarietà. Per applicare l ereditarietà, abbiamo bisogno di scoprire le cose in comune tra le classi del simulatore. Iniziamo esaminando le somiglianze tra le classi FloorButton e ElevatorButton. La figura 0.24 mostra gli attributi e le funzionalità di ciascuna classe. Entrambe le classi hanno lo stesso attributo (pressed) e funzionalità (pressbutton e resetbutton). Saremmo tentati di usare l ereditarietà in questa situazione, cioè estrarre le cose in comune tra le classi FloorButton e ElevatorButton, metterle in una superclasse comune Button, e poi derivare le classi FloorButton e ElevatorButton dalla classe Button. Però, se gli oggetti FloorButton e ElevatorButton hanno un comportamento identico, usare l ereditarietà non è giustificato. In realtà, non possiamo neppure giustificare l uso di classi diverse per questi oggetti! L oggetto FloorButton segnala all oggetto Elevator di muoversi al piano richiesto. L oggetto ElevatorButton segnala all oggetto Elevator di muoversi al piano opposto. Come mostrato nel diagramma di attività della figura 5.29, il FloorButton e l ElevatorButton segnalano all oggetto Elevator di muoversi verso un piano. L oggetto Elevator si muove in risposta a un segnale di FloorButton solo se l Elevator si trova sul piano opposto della richiesta ed è fermo. L Elevator si muove in risposta a un segnale da ElevatorButton solo se è fermo. In ogni caso, né FloorButton, né ElevatorButton ordinano a Elevator di muoversi verso l altro piano. Piuttosto, l Elevator risponde al segnale di un bottone in dipendenza dal suo stato corrente. Ogni bottone ha un solo comportamento, cioè segnalare a Elevator di muoversi. Gli oggetti FloorButton e ElevatorButton sono realmente solo oggetti separati della stessa classe; possiamo allora combinare le classi FloorButton e ElevatorButton nella classe Button ed eliminarle dal nostro caso di studio. Ingegneria del software 0.3 Se parecchi oggetti hanno gli stessi attributi ed esibiscono il medesimo comportamento, sono probabilmente oggetti della stessa classe. Prima di usare l ereditarietà nel vostro programma, assicuratevi che ogni classe abbia attributi distinti e/o esibisca comportamenti distinti. Ora cominciamo a cercare delle classi che esibiscano comportamenti simili (ma non identici). Nella sezione 4.4, abbiamo incontrato il problema di rappresentare la posizione di Person: in quale piano è posizionata una persona quando viaggia nell ascensore? Usando l ereditarietà, ora possiamo modellare una soluzione. Sia Elevator che Floor sono posizioni in cui Person si trova nel simulatore. In altre parole, Elevator e Floor sono tipi di posizioni, ma un Elevator certamente non è un Floor. FloorButton ElevatorButton Figura 0.24 Attributi e funzionalità delle classi FloorButton e ElevatorButton

2 2 CAPITOLO 0 Modifichiamo le classi Elevator e Floor in modo che ereditino da una nuova superclasse chiamata Location. Il linguaggio UML specifica una relazione chiamata generalizzazione che modella l ereditarietà. La figura 0.25 è il diagramma di classe che modella la generalizzazione della superclasse Location e delle sottoclassi Elevator e Floor. Le frecce con la punta vuota indicano che le classi Elevator e Floor ereditano dalla classe Location. La classe Location contiene l attributo private locationname, che contiene un valore stringa tra firstfloor, secondfloor e elevator. Includiamo il metodo setlocationname in modo che ogni sottoclasse possa impostare il valore appropriato. Notate che il metodo setlocationname ha un modificatore di accesso che non abbiamo ancora visto, il segno di cancelletto (#), che indica che il metodo è protected, in modo che solo le sottoclassi Elevator e Floor possano usare questo metodo per impostare locationname. Inoltre, includiamo il metodo public getlocationname, in modo che ogni oggetto possa ottenere il valore di locationname. Cerchiamo altre similarità tra le classi Elevator e Floor. Secondo il diagramma di classe della figura 6.20, entrambe le classi condividono l attributo intero capacity (che vale ). Ora, la classe Location contiene l attributo private capacity, che rappresenta il massimo numero di oggetti Person che possono occupare quella posizione. Nella nostra simulazione, il valore di questo attributo non cambierà durante l esecuzione, e dunque la classe Location dichiara questo attributo come costante usando il termine {frozen} vicino all attributo capacity. La classe Location contiene anche il metodo public getcapacity, che ritorna il valore di capacity, mentre un metodo setcapacity non è necessario, perché il valore di questo attributo non può essere cambiato. Le sottoclassi Elevator e Floor ereditano dunque l attributo capacity e il metodo getcapacity. Location - locationname : String - capacity : Integer = {frozen} # setlocationname( String ) : void + getlocationname( ) : String + getcapacity( ) : Integer Elevator - moving : Boolean = false - summoned : Boolean = false - currentfloor : Integer - destinationfloor : Integer - traveltime : Integer = 5 + ride( ) : void + requestelevator( ) : void + enterelevator( ) : void + exitelevator( ) : void + departelevator( ) : void Floor Figura 0.25 Diagramma di classe che modella la generalizzazione della superclasse Location e delle sottoclassi Elevator e Floor

3 LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI: POLIMORFISMO 3 Continuiamo a cercare altre similarità. Secondo la figura 3.9, la classe Elevator contiene dei riferimenti al suo bottone e alla sua porta. La classe Floor contiene dei riferimenti al suo bottone e alla sua porta attraverso l associazione di Floor con la classe ElevatorShaft. La classe ElevatorModel aggrega le classi Floor e ElevatorShaft e può passare un riferimento di tipo ElevatorShaft al costruttore della classe Floor. Usando questa associazione, la classe Floor può riferire gli oggetti Button e Door di ElevatorShaft. Quindi, nella nostra simulazione, la classe Location conterrà i metodi public getbutton e getdoor che ritornano rispettivamente dei riferimenti a oggetti Button e Door. La classe Floor sovrascrive questi metodi per ritornare i riferimenti a oggetti Button e Door di quel piano, mentre la classe Elevator sovrascrive questi metodi per ritornare i riferimenti a oggetti Button e Door dell ascensore. Dichiariamo la classe Location come astratta in modo che le sottoclassi Button e Door siano obbligate a implementare i metodi getbutton e getdoor. Il linguaggio UML raccomanda di indicare i nomi delle classi astratte (e dei metodi astratti) in italico, come abbiamo fatto nella figura I metodi getbutton e getdoor non sono invece indicati in italico nelle sottoclassi Elevator e Floor, in quanto in questo caso sono metodi concreti con un implementazione distinta. Notate che le classi Elevator e Floor indicano le funzionalità getbutton e getdoor nel loro terzo scomparto, perché ognuna delle classi ha un implementazione diversa del metodo sovrascritto. In questa simulazione, usare l ereditarietà sembra appropriato per progettare Elevator e Floor. Ogni classe rappresenta una Location che un oggetto Person può occupare, ma la classe Elevator contiene degli attributi e dei comportamenti aggiuntivi che la distinguono dalla classe Floor. Introduciamo un associazione tra la classe Person e la classe Location, che rappresenta il fatto che la persona si trovi sul primo piano, o sul secondo piano, o sull ascensore. Ora rivolgiamo la nostra attenzione alle classi e FloorDoor. Ancora una volta, vediamo se è il caso di usare l ereditarietà con queste classi. La figura 0.26 mostra che gli attributi e le funzionalità di tali classi sono identici: entrambe le classi possiedono l attributo open e le funzionalità opendoor e closedoor. Comunque, in base alla specifica del problema, sappiamo che e FloorDoor hanno comportamenti diversi. Quando si apre, deve aprire FloorDoor per assicurarsi che le porte si aprano insieme. La classe FloorDoor ha gli attributi e le funzionalità di base richieste per tutte le porte, quindi rinominiamo la classe FloorDoor nella classe Door, che rappresenta una generalizzazione delle porte nel nostro caso di studio. La classe rappresenta un caso speciale della più generale classe Door: un oggetto, quando si apre, ha il compito di aprire un altro oggetto Door. Quindi, stabiliamo una relazione di generalizzazione tra la classe e la classe Door. La classe sovrascrive i metodi opendoor e closedoor in modo da implementare il comportamento specifico (figura 0.27). FloorDoor Figura 0.26 Attributi e funzionalità delle classi e FloorDoor

4 4 CAPITOLO 0 Door Figura 0.27 Generalizzazione della superclasse Door e della sottoclasse La figura 0.28 è un diagramma di classe aggiornato del nostro modello che riflette questi cambiamenti, incorpora l ereditarietà, elimina le classi FloorButton, ElevatorButton e FloorDoor e introduce le classi Button, Door e Location. Rimuoviamo le associazioni tra Person e Elevator e tra Person e Floor dal diagramma delle classi, perché il riferimento a Location di Person può essere sia un riferimento a Floor che un riferimento a Elevator. Un oggetto Person imposta il suo riferimento di tipo Location a Elevator quando entra nell ascensore, e a Floor quando cammina su quel piano. Infine, assegniamo alla classe Elevator due riferimenti di tipo Location, che rappresentano il piano corrente dell Elevator e il piano di destinazione (avevamo precedentemente usato degli interi per rappresentare tali informazioni). Permettiamo a un oggetto Person che occupa una posizione di interagire con diversi oggetti (accessibili dall oggetto Location su cui si trova) nel simulatore. Per esempio, un Light 2 Turns on/off ElevatorShaft Resets Floor 2 2 Door Signals arrival Button Presses Person 0..* Opens/Closes Opens Closes Elevator Signals to move Resets Occupies Rings Bell Location - locationname : String 2 - capacity : Integer = {frozen} # setlocationname( String ) : void + getlocationname( ) : String + getcapacity( ) : Integer Figura 0.28 Diagramma di classe del nostro simulatore (con l ereditarietà)

5 LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI: POLIMORFISMO 5 oggetto Person può premere un oggetto Button dalla sua posizione specifica. Un oggetto Person può occupare solo un oggetto Location per volta, quindi dovrebbe poter interagire solo con gli oggetti noti a quell oggetto Location. Usando il suo riferimento a Location, un oggetto Person non può eseguire un azione illegale, come premere il bottone del primo piano mentre viaggia sull ascensore. Questa restrizione vale anche nel mondo reale. Abbiamo presentato gli attributi e le funzionalità con i modificatori di accesso nella figura 8.9. Ora, presentiamo un diagramma di classe modificato che incorpora l ereditarietà nella figura Questo diagramma abbreviato non mostra le relazioni di ereditarietà, ma invece mostra gli attributi e i metodi dopo che abbiamo applicato l ereditarietà al nostro sistema. Questo diagramma non include gli attributi mostrati dalle aggregazioni nella figura 0.28 per le classi ElevatorShaft e Elevator. Come abbiamo fatto nella figura 4.8, abbiamo scelto di risparmiare spazio nella figura 0.29 non mostrando questi attributi aggiuntivi; comunque, li includeremo nell implementazione Java finale. Ingegneria del software 0.4 Un diagramma di classe completo mostra tutte le associazioni tra le classi e tutti gli attributi e funzionalità di ogni classe. Quando il numero di attributi, metodi e associazioni è notevole (come nelle figure 0.28 e 0.29), è pratica comune dividere queste informazioni in due diagrammi: uno focalizzato sulle associazioni, l altro focalizzato sugli attributi e sui metodi. Creare due diagrammi di classe in questo modo favorisce la leggibilità. La classe Person ora contiene un riferimento location a un oggetto Location, che indica se la persona si trova su un piano o sull ascensore. Implementazione: forward engineering (con l ereditarietà) Nella sezione 8.7, abbiamo usato UML per esprimere le classi Java per la nostra simulazione. Continuiamo la nostra implementazione usando l ereditarietà, prendendo la classe Elevator come esempio.. Se una classe B è una generalizzazione della classe A, allora la classe A estende la classe B nella dichiarazione di classe. Per esempio, la superclasse astratta Location è una generalizzazione della classe Elevator; quindi, la dichiarazione di classe dovrebbe essere public class Elevator extends Location { // costruttore public Elevator() {} } 2. Se la classe B è una classe astratta e la classe A è una sottoclasse della classe B, allora la classe A deve implementare i metodi astratti della classe B (se la classe A deve essere una classe concreta). Per esempio, la classe Location contiene i metodi astratti getbutton e getdoor; quindi, la classe Elevator deve implementare questi metodi. La figura 0.30 mostra il codice Java della classe Elevator dalle figure 0.28 e Notate che il metodo get- Button (righe 26-29) ritorna un riferimento all oggetto Button di Elevator, e il metodo getdoor (righe 23-25) ritorna un riferimento all oggetto Door di Elevator: l oggetto Elevator ha delle associazioni con entrambi gli oggetti, come indicato dal diagramma di classe della figura La classe Elevator eredita i campi capacity e locationname, e i metodi non astratti getcapacity, setlocationname e getlocationname dalla

6 6 CAPITOLO 0 Location - locationname : String - capacity : Integer = {frozen} # setlocationname( String ) : void + getlocationname( ) : String + getcapacity( ) : Integer Light - lighton : Boolean = false + turnonlight( ) : void + turnofflight( ) : void ElevatorShaft Person - ID : Integer - moving : Boolean = true - location : Location + dooropened( ) : void Elevator - moving : Boolean = false - summoned : Boolean = false - currentfloor : Location - destinationfloor : Location - traveltime : Integer = 5 + ride( ) : void + requestelevator( ) : void + enterelevator( ) : void + exitelevator( ) : void + departelevator( ) : void + ringbell( ) : void Floor Bell Button Door Figura 0.29 Diagramma di classe con attributi e funzionalità (con l ereditarietà) superclasse Location, quindi non abbiamo bisogno di dichiararli. La figura 0.29 specifica gli attributi summoned, moving, currentfloor, destinationfloor e traveltime e le funzionalità ride, requestelevator, enterelevator, exitelevator e departelevator per la classe Elevator. Le righe 6-0 della figura 0.30 dichiarano i campi per questi attributi, e le righe 9-23 dichiarano i metodi per queste funzionalità. I riferimenti elevatorbutton, elevatorfloor e bell (righe -3) sono campi specificati dalle aggregazioni di Elevator della figura // Elevator.java 2 // Generato usando il diagramma di classe 0.28 e public class Elevator extends Location { 4 5 // attributi Figura 0.30 La classe Elevator generata dalle figure 0.28 e 0.29 (continua)

7 LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI: POLIMORFISMO 7 6 private boolean moving; 7 private boolean summoned; 8 private Location currentfloor; 9 private Location destinationfloor; 0 private int traveltime = 5; private Button elevatorbutton; 2 private Door elevatordoor; 3 private Bell bell; 4 5 // costruttore 6 public Elevator () {} 7 8 // funzionalita 9 public void ride() {} 20 public void requestelevator() {} 2 public void enterelevator() {} 22 public void exitelevator() {} 23 public void departelevator() {} // metodo che sovrascrive getbutton 26 public Button getbutton() 27 { 28 return elevatorbutton; 29 } 30 3 // metodo che sovrascrive getdoor 32 public Door getdoor() 33 { 34 return elevatordoor; 35 } 36 } Figura 0.30 La classe Elevator generata dalle figure 0.28 e 0.29 Collaudo e messa a punto 0. Usare degli strumenti di modellazione UML per generare il codice automaticamente aiuta a ridurre la quantità di errori che i programmatori introducono di solito quando scrivono il codice manualmente. Ingegneria del software 0.5 Parecchi strumenti di modellazione UML convertono i modelli UML in Java. Questi strumenti possono velocizzare considerevolmente il processo di implementazione. Abbiamo fornito una buona base di partenza per implementare dei progetti UML in Java. Nella sezione.9, ritorneremo alle interazioni, e ci concentreremo su come gli oggetti generano e gesticono i messaggi passati nelle collaborazioni, e useremo ancora il forward engineering per generare altro codice Java dai diagrammi di classe.

Thread, classi attive e sequenze di modellazione IL MULTITHREADING 1

Thread, classi attive e sequenze di modellazione IL MULTITHREADING 1 IL MULTITHREADING 5. (Caso di studio facoltativo) Pensare a oggetti: il multithreading Gli oggetti del mondo reale svolgono le loro funzioni indipendentemente uno dall altro e in modo concorrente. Come

Dettagli

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 3.13 (Caso di studio facoltativo) Pensare a oggetti: Modello-Vista-Controllore I design pattern descrivono strategie efficaci per costruire sistemi

Dettagli

Gerarchia di classi Java 1

Gerarchia 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

Dettagli

Gerarchia di classi Java 1

Gerarchia 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

Dettagli

Identificare le classi in un sistema

Identificare le classi in un sistema 3.7 (Caso di studio facoltativo) Pensare a oggetti: identificare le classi nella specifica del problema Cominciamo ad affrontare la progettazione del simulatore di ascensore introdotto nel capitolo. Iniziamo

Dettagli

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

A. 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),

Dettagli

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

Programmazione in Java (I modulo) Lezione 20: Ereditarietà Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi

Dettagli

A. Ferrari Object Oriented Design

A. 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

Dettagli

Esempio 2: Subtyping

Esempio 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

Dettagli

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

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

ereditarietà e polimorfismo

ereditarietà 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

Dettagli

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 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

Dettagli

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 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

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione 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

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

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

Dettagli

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

Laboratorio 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

Dettagli

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0 Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate

Dettagli

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 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

Dettagli

Programmazione ad oggetti

Programmazione 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.

Dettagli

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

Riuso 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

Dettagli

UML UNIFIED MODELING LANGUAGE

UML UNIFIED MODELING LANGUAGE UML UNIFIED MODELING LANGUAGE Cos è UML E un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (C, C++, Java, ) Fornisce una serie di diagrammi per rappresentare ogni tipo

Dettagli

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

Esempi 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

Dettagli

Dichiarazione di una classe. Dichiarazione ereditarietà

Dichiarazione 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

Dettagli

PRINCIPI DELLA OOP. Ereditarietà e polimorfismo

PRINCIPI 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à

Dettagli

SYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il...

SYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il... Anno scolastico: 2014 2015 Classe: 4 Sez.: G Disciplina: INFORMATICA Articolazione: Informatica Docente: prof. Mauro Malatesta (firma) Approvata dal Dipartimento di il Approvata dal Consiglio di classe

Dettagli

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

Paradigmi 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

Dettagli

Fondamenti di Informatica

Fondamenti 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:

Dettagli

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

Interfacce. 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

Dettagli

Diagrammi di classe e sistemi orientati agli oggetti

Diagrammi di classe e sistemi orientati agli oggetti Appendice D Diagrammi di classe e sistemi orientati agli oggetti ANDREA GINI Un effetto della strategia di incapsulamento è quello di spingere il programmatore a esprimere il comportamento di un sistema

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

A. Ferrari Object Oriented Design

A. 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

Dettagli

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

Esempi 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

Dettagli

public class Counter2 extends Counter { public void dec() { val--; }

public class Counter2 extends Counter { public void dec() { val--; } public class Main public class Counter2 extends Counter public void dec() val--; public class Counter public Counter() System.out.println("Counter : costruttore di default!"); val = 1; System.out.println("Counter

Dettagli

La classe java.lang.object

La 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

Dettagli

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

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione

Dettagli

Progettazione Object-Oriented

Progettazione 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

Dettagli

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

Dettagli

Esercizi di autovalutazione Risposte agli esercizi di autovalutazione Esercizi... 64

Esercizi di autovalutazione Risposte agli esercizi di autovalutazione Esercizi... 64 Sommario PREFAZIONE... IX Il nostro approccio didattico... ix Software incluso con questo libro... xii Una panoramica del libro... xiii Ringraziamenti... xv Gli autori... xvii Deitel & Associates, Inc....

Dettagli

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

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo 1 Esempio 1: Costruttori ed ereditarietà Costruttori ed ereditarietà 2 Introduzione Java prevede due automatismi legati

Dettagli

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

INFORMATICA 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

Dettagli

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 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

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione 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

Dettagli

OLTRE LE CLASSI OLTRE LE CLASSI

OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati,

Dettagli

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object

Concetti 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,

Dettagli

Informatica Ereditarietà Java. Ereditarietà

Informatica 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

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione 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

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione 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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA4 B2 Object 1 Prerequisiti Programmazione elementare ad oggetti Ereditarietà Concetto di conversione di tipo (casting) 2 1 Introduzione Lo scopo di questa Unità è quello

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java 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

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO

Dettagli

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30

Paradigma a oggetti. Programmazione orientata agli oggetti. Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Paradigma a oggetti Programmazione orientata agli oggetti Programmazione orientata agli oggetti Paradigma a oggetti 1 / 30 Programmazione ad oggetti. Si estendono i tipi di dati astratti che permettono:

Dettagli

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice

Programmazione ad oggetti. Paradigma a oggetti. Esempio. Esempio L estensione del tipo di dato comporta la ridefinizione del codice Programmazione ad oggetti. Paradigma a oggetti Programmazione orientata agli oggetti Si estendono i tipi di dati astratti che permettono: information hiding e incapsulamento nascondo la rappresentazione

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione 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

Dettagli

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

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

IL TEMA DELLA RIUSABILITÀ

IL TEMA DELLA RIUSABILITÀ IL TEMA DELLA 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

Dettagli

Ereditarietà: concetti di base

Ereditarietà: concetti di base : 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

Dettagli

Metodi statici. Dichiarazione e chiamata di metodi statici

Metodi statici. Dichiarazione e chiamata di metodi statici Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un

Dettagli

Classi astratte Interfacce

Classi 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

Dettagli

OOP Ereditarietà A. FERRARI

OOP 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

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

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

Programmazione 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,

Dettagli

Alcuni diagrammi. OCL (Object Constraint Language)

Alcuni diagrammi. OCL (Object Constraint Language) UML e Java UML Alcune discipline ingegneristiche dispongono di validi mezzi di rappresentazione (schemi, diagrammi di prestazioni e consumi,...) Il software non dispone ancora di tecniche efficaci per

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B1 Il concetto di classe 1 Prerequisiti Programmazione elementare Conoscenza dell uso delle funzioni Utilizzo della UML 2 1 Introduzione Gli oggetti reali sono una infinità

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - 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/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - 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/

Dettagli

Inizializzare oggetti

Inizializzare 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:

Dettagli

OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe

OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati, protetti, o

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java 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

Dettagli

Principi di Progettazione del Software a.a

Principi di Progettazione del Software a.a Principi di Progettazione del Software a.a. 2017-2018 Fondamenti di Java Ing. Obiettivi della lezione Introduzione alla programmazione Object Oriented Ereditarietà Polimorfismo Interfacce Eccezioni 2 1

Dettagli

Ereditarietà (ultima)

Ereditarietà (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...

Dettagli

Ereditarietà (ultima)

Ereditarietà (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

Dettagli

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Liste doppie Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica semplice: doppia: Gli

Dettagli

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

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati Oggetti Le classi in Java Corso di laurea in Un oggetto è definito dal suo stato - descrive le sue caratteristiche comportamento - quello che può fare Ad esempio: il modello di una moneta Una moneta può

Dettagli

SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni

SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni SOMMARIO Introduzione Proprietà e Operazioni DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica,

Dettagli

Esempio: Costruttori ed ereditarietà

Esempio: Costruttori ed ereditarietà Esempio: 1 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il costruttore di default (quello senza parametri) Se in un costruttore

Dettagli

Richiami su oggetti e OOP

Richiami su oggetti e OOP Richiami su oggetti e OOP Un oggetto (object) è una entità caratterizzata da una struttura dati alla quale si associa l insieme delle operazioni che è possibile compiere su di essa. Un oggetto può essere

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà 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

Dettagli

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione

Dettagli

Ingegneria del Software

Ingegneria del Software Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi

Dettagli

Corso 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) 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

Dettagli

unità di compilazione

unità di compilazione Il linguaggio Java Il controllo degli accessi alle classi ed ai membri di una classe Controllo degli accessi Accesso alle classi Accesso alle classi package miopackage; public class A { B b = new B();

Dettagli

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring TITLE Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Introduzione alla notazione UML I diagrammi

Dettagli

Programmazione orientata agli oggetti Ereditarietà

Programmazione orientata agli oggetti Ereditarietà Programmazione orientata agli oggetti 1 Dalla programmazione basata su oggetti all OOP La programmazione basata su oggetti (object-based) poggia su due concetti fondamentali: Astrazione: separazione fra

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Analisi e Progettazione OO Origini Le metodologie ad oggetti nascono negli anni 70 ma si affermano solo negli anni 80 grazie alla nascita dei linguaggi di programmazione ad oggetti

Dettagli

Sul pattern Strategy

Sul pattern Strategy Sul pattern Strategy 1 Introduzione Si vuole costruire un sistema per la simulazione di uno studio professionale. Il sistema deve consentire di rappresentare differenti tipi di professionisti, che possono

Dettagli

Oggetto software. stati o proprietà (variabili) comportamenti o metodi (funzioni)

Oggetto software. stati o proprietà (variabili) comportamenti o metodi (funzioni) Le classi Oggetto software stati o proprietà (variabili) comportamenti o metodi (funzioni) Bicicletta cambia rapporto 24 kmh rallenta accelera 90 ped/min quinto rapporto istanze e membri di classe Nel

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Obiettivi. 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

Dettagli

Classi 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 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

Dettagli

Capitolo 6. Linguaggi di Programmazione. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Capitolo 6. Linguaggi di Programmazione. Mauro Giacomini Pearson Addison-Wesley. All rights reserved Capitolo 6 Linguaggi di Programmazione Mauro Giacomini 2007 Pearson Addison-Wesley. All rights reserved Capitolo 6: Linguaggi di programmazione 6.1 Prospettiva storica 6.2 Concetti della programmazione

Dettagli