際際滷

際際滷Share a Scribd company logo
Pensiero orientato agli oggetti prima parte Lezione del 14 ottobre 2008 per il modulo Programmazione ad Oggetti
Vari livelli di Object-Oriented Object Oriented Analysis  OOA Object Oriented Design  - OOD Object Oriented Programming  OOP Design Patterns Unified Modeling Language  UML OO Data  XML OO Internet Development
OO paradigma di pensiero Come pensiamo in termini di oggetti Imparare i concetti OO senza un metodo di sviluppo ed un insieme di tools (strumenti) Separare metodi e strumenti dal processo di pensiero Object Oriented Comprendere la differenza tra limparare i concetti OO e lusare metodi e strumenti che supportano questo paradigma di pensiero
Sommario dei fondamentali concetti OO Definizione di oggetto Definizione di classe Nascondere i dati (data hiding) Incapsulamento Getters Setters Attributi Metodi Messaggi Interfaccia Implementazione Ereditariet Astrazione Relazione is-a Polimorfismo Composizione Relazione has-a
Differenza tra programmazione procedurale e Orientata agli oggetti Nella programmazione procedurale il codice (istruzioni) 竪 localizzato in funzioni e procedure. Queste funzioni diventano della scatole nere (black box), dove entrano input ed escono output I dati sono posti in strutture separate  I dati sono manipolati dalle funzioni inputs funzione outputs
Che cosa 竪 un oggetto Un oggetto 竪 unentit (cosa) che contiene sia attributi che  comportamenti Ad esempio una persona ha un colore degli occhi, unet, una  certa altezza e questi sono attributi! Una persona ha pure dei comportamenti, come il camminare, il parlare, pensare Pertanto una persona 竪 un oggetto La differenza chiave tra la programmazione OO e le altre programmazioni sta in questo fatto chiave: loggetto contiene entrambi: attributi e comportamenti
Da fare: scopri dieci oggetti Determina dieci oggetti con i loro attributi e con i loro comportamenti Gli oggetti possono essere cose animate e cose inanimate. Possono essere concetti o cose concrete
Come 竪 possibile che oggetti inanimati abbiano un comportamento ? Anche un oggetto inanimato ha un comportamento nel senso che ha un ruolo in un sistema Offre dei servizi Risponde alle nostre richieste Ad esempio una Sedia ! Quale 竪 il comportamento di una Sedia ?
I dati separati dalle funzioni nella programmazione procedurale Talvolta i dati sono globali per cui 竪 facile modificarli dallesterno Nei dati globali pi湛 funzioni hanno accesso  Funzione 1 Funzione 2 Dati globali Funzione 3 Funzione 4
Il contenuto degli oggetti Gli oggetti combinano dati e comportamenti in un unico simpatico pacchetto Sono pi湛 di una struttura dati o di tipi di dati primitivi Contengono entit quali interi e stringhe che sono usate per rappresentare attributi Ma contengono anche i metodi, che rappresentano il comportamento In un oggetto i metodi sono usati per eseguire operazioni sui dati ed altre azioni. La cosa pi湛 importante 竪 che possiamo controllare laccesso ai membri di un oggetto (metodi ed attributi)
Controllo ai membri di un oggetto Alcuni membri di un oggetto, sia attributi che metodi, possono essere nascosti ad altri oggetti Ad esempio un oggetto Math potrebbe contenere due numeri interi mioint1 e mioint2, i metodi per settare e recuperare i valori di mioint1 mioint2. Potrebbe pure contenere un metodo chiamato somma() Math metodo metodo metodo dati
Data hiding e Incapsulamento Il restringere laccesso a certi attributi o metodi 竪 chiamato data hiding Il combinare insieme attributi e metodi nella medesima entit 竪 chiamato incapsulamento
messaggi Cosa succede quando un altro oggetto, ad esempio mioOggetto, vuole accedere alla somma di mioint1 e mioint2 ? Questo oggetto la chiede alloggetto Math mioObject invia un messaggio alloggetto Math I due oggetti comunicano luno con laltro tramite i loro metodi Un messaggio 竪 in realt una chiamata del metodo somma() di Math. Il metodo somma() viene mandato in esecuzione e restituisce il valore della somma a mioObject
Come comunicano i due oggetti mioOggetto Math dati metodo metodo metodo dati metodo metodo metodo
Non ci interessa come la somma 竪 calcolata mioOggetto non ha la necessit di sapere come la somma 竪 stata calcolata Con questa metodologia al lavoro, si pu嘆 cambiare il modo con cui Math calcola la somma senza modificare mioOggetto Tutto quello che mioOggetto vuole 竪 la somma ! E non 竪 interessato a come questa viene calcolata Esempio di una semplice calcolatrice
Semplice calcolatrice Quando determinate la somma con una calcolatrice, tutto quello che usate 竪 uninterfaccia, linterfaccia della calcolatrice, la tastiera ed il display. La calcolatrice ha un metodo per fare la somma che viene invocato (eseguito) quando premete la corretta sequenza di tasti Come risposta ottenete il corretto risultato della somma Comunque non avete nessuna idea di come questo risultato sia stato ottenuto
Responsabilit Il calcolo della somma non 竪 responsabilit di mioOggetto  responsabilit di Math Se mioOggetto ha accesso alloggetto Math, pu嘆 inviargli gli appropriati messaggi ed ottenere lappropriato risultato. In generale gli oggetti non devono manipolare i dati interni di altri oggetti Ad esempio mioOggetto non dovrebbe direttamente cambiare i valori di mioint1 e mioint2
Che cosa esattamente 竪 un oggetto ? Gli oggetti sono i blocchi di costruzione di un programma OO Un programma che usa la tecnologia OO 竪 una collezione di oggetti Ad esempio consideriamo un sistema costituito da una compagnia e i suoi impiegati. Questi sono gli oggetti.  Ciascuno di questi oggetti 竪 costuito da dati e comportamento
I dati di un oggetto I dati memorizzati dentro un oggetto rappresentano lo stato delloggetto Questi dati sono chiamati attributi Per un impiegato potrebbero essere il codice fiscale, la data di nascita, il sesso, il numero di telefono, etc Gli attributi contengono le informazioni che differenziano tra di loro i vari oggetti dello stesso tipo, in questo caso gli impiegati I valori degli attributi
Che cosa 竪 il comportamento degli oggetti Il comportamento di un oggetto 竪 tutto quello che un oggetto pu嘆 fare Nella programmazione procedurale i comportamenti sono contenuti nelle procedure, funzioni, subroutine Nella programmazione OO questi comportamenti sono contenuti nei metodi Un metodo viene invocato (mandato in esecuzione) inviandogli un messaggio
Settare, recuperare i valori degli attributi Uno dei comportamenti richiesti per un oggetto impiegato 竪 quello di settare e restituire i valori dei suoi attributi Pertanto ogni attributo dovrebbe avere dei metodi corrispondenti, come setTelefono(), getTelefono(). In questo caso quando un altro oggetto necessita di questa informazione pu嘆 inviare un messaggio alloggetto impiegato e chiedere quale sia il suo numero di telefono public void setTelefono (String n){telefono=n;} public String getTelefono(){return telefono;}
Il concetto dei metodi getters e setters La natura concettuale dei metodi accessori 竪 quella di supportare il concetto di data hiding nascondere i dati Poich辿 gli oggetti non possono manipolare direttamente i dati dentro un altro oggetto, i metodi getters e setters forniscono un accesso controllato a questi dati I metodi getters sono anche chiamati metodi di accesso I metodi setters sono anche chiamati metodi di mutazione (mutators)
Interfaccia dei metodi Osserva che stiamo solo mostrando linterfaccia dei metodi e non la loro implementazione Per usare i metodi ad un utente serve la seguente informazione: Il nome del metodo I parametri da passare al metodo Il tipo di dato che esso restituisce
Interfaccia dei metodi esempio Sia un oggetto Pagatore che contiene il metodo calcolaPaga() che calcola la busta paga di uno specifico impiegato. Tra le altre informazioni dellimpiegato alloggetto Pagatore serve il suo codice fiscale. Per ottenere questa informazione loggetto pagatore invia un messaggio alloggetto impiegato getCodiceFiscale() Fondamentalmente questo significa che loggetto pagatore chiama ossia manda in esecuzione il metodo getCodiceFiscale() delloggetto impiegato Loggetto impiegato riconosce questo messaggio e restituisce linformazione richiesta
Diagramma di classe Possiamo fare un disegno che rappresenta il sistema impiegato/pagatore e lo chiamiamo diagramma delle classi di questo sistema ad oggetti Impiegato ----------------------------------- dataNascita: Date codiceFiscale: String Nome: String Telefono: String ------------------------------------ getTelefono: String setTelefono: void  . Pagatore ------------------------------- paga: double -------------------------------- calcolaPaga: double
Come 竪 fatto un diagramma delle classi Ogni classe 竪 definita da tre separate sezioni Il nome Gli attributi Il comportamento ( i metodi ) Per modellizzare le classi si usano degli strumenti appositi quali UML
Creazione di un oggetto da una classe Una classe 竪 unastrazione degli oggetti del medesimo tipo Che relazione esiste tra classe e oggetto La classe 竪 uno stampino per mezzo del quale creiamo oggetti dello stesso tipo Quando un oggetto 竪 creato diciamo che 竪 instanziato Pertanto se creiamo tre oggetti ad esempio impiegato, stiamo instanziando tre istanza completamente diverse della classe Impiegato Ciascun oggetto possiede una propria copia in memoria dei suoi attributi e dei suoi metodi Un oggetto Impiegato di nome Maria ha la sua propria copia di attributi e di metodi
Che cosa 竪 una classe Una classe 竪 uno stampino per un oggetto Una classe 竪 linsieme dei tipi di dato che costituiscono gli attributi degli oggetti che essa modellizza  unastrazione dai valori di questi dati In una classe non si tiene conto dei valori degli attributi, si considera loggetto nella sua generalit

More Related Content

Viewers also liked (20)

(E book pdf) thinking in patterns with java
(E book   pdf) thinking in patterns with java(E book   pdf) thinking in patterns with java
(E book pdf) thinking in patterns with java
Raffaella D'angelo
Linguaggio di programmazione java - Scheda corso LEN
Linguaggio di programmazione java - Scheda corso LENLinguaggio di programmazione java - Scheda corso LEN
Linguaggio di programmazione java - Scheda corso LEN
LEN Learning Education Network
(Ebook pdf) java programming language basics
(Ebook pdf)   java programming language basics(Ebook pdf)   java programming language basics
(Ebook pdf) java programming language basics
Raffaella D'angelo
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific Languages
Tiziano Lattisi
Informatica di base
Informatica di baseInformatica di base
Informatica di base
Bruno Montalto
OOP Java
OOP JavaOOP Java
OOP Java
Saif Kassim
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming Language
Pasquale Paola
Java e il paradigma a oggetti
Java e il paradigma a oggettiJava e il paradigma a oggetti
Java e il paradigma a oggetti
cinziabb
Java e il paradigma a oggetti v2
Java e il paradigma a oggetti v2Java e il paradigma a oggetti v2
Java e il paradigma a oggetti v2
cinziabb
Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Programmazione a oggetti tramite la macchina del caff辿 (1/3)Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Marcello Missiroli
Python nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiorePython nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiore
guestc11532
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
K-Tech Formazione
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
Anna_1969
Sviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java scriptSviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java script
Fabio Franzini
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
mariacaporale
Tesina Maturit 2012-2013
Tesina Maturit 2012-2013 Tesina Maturit 2012-2013
Tesina Maturit 2012-2013
Michele Loda
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
Raffaella D'angelo
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
Anna_1969
Domotica con Arduino - Tesina maturit
Domotica con Arduino - Tesina maturitDomotica con Arduino - Tesina maturit
Domotica con Arduino - Tesina maturit
Bhuwan Sharma
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
backdoor
(E book pdf) thinking in patterns with java
(E book   pdf) thinking in patterns with java(E book   pdf) thinking in patterns with java
(E book pdf) thinking in patterns with java
Raffaella D'angelo
Linguaggio di programmazione java - Scheda corso LEN
Linguaggio di programmazione java - Scheda corso LENLinguaggio di programmazione java - Scheda corso LEN
Linguaggio di programmazione java - Scheda corso LEN
LEN Learning Education Network
(Ebook pdf) java programming language basics
(Ebook pdf)   java programming language basics(Ebook pdf)   java programming language basics
(Ebook pdf) java programming language basics
Raffaella D'angelo
Groovy e Domain Specific Languages
Groovy e Domain Specific LanguagesGroovy e Domain Specific Languages
Groovy e Domain Specific Languages
Tiziano Lattisi
Informatica di base
Informatica di baseInformatica di base
Informatica di base
Bruno Montalto
Java Programming Language
Java Programming LanguageJava Programming Language
Java Programming Language
Pasquale Paola
Java e il paradigma a oggetti
Java e il paradigma a oggettiJava e il paradigma a oggetti
Java e il paradigma a oggetti
cinziabb
Java e il paradigma a oggetti v2
Java e il paradigma a oggetti v2Java e il paradigma a oggetti v2
Java e il paradigma a oggetti v2
cinziabb
Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Programmazione a oggetti tramite la macchina del caff辿 (1/3)Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Programmazione a oggetti tramite la macchina del caff辿 (1/3)
Marcello Missiroli
Python nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiorePython nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiore
guestc11532
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
K-Tech Formazione
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
Anna_1969
Sviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java scriptSviluppare applicazioni mobile native in html e java script
Sviluppare applicazioni mobile native in html e java script
Fabio Franzini
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
mariacaporale
Tesina Maturit 2012-2013
Tesina Maturit 2012-2013 Tesina Maturit 2012-2013
Tesina Maturit 2012-2013
Michele Loda
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
Raffaella D'angelo
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
Anna_1969
Domotica con Arduino - Tesina maturit
Domotica con Arduino - Tesina maturitDomotica con Arduino - Tesina maturit
Domotica con Arduino - Tesina maturit
Bhuwan Sharma
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
backdoor

Similar to Pensiero Orientato Agli Oggetti (20)

programmazione ad oggetti
programmazione ad oggettiprogrammazione ad oggetti
programmazione ad oggetti
mariacaporale
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NET
Marco Zamana
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniLezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Rice Cipriani
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis n
imartini
3.4 Comprendere i dati: raffinare
3.4 Comprendere i dati: raffinare3.4 Comprendere i dati: raffinare
3.4 Comprendere i dati: raffinare
A Scuola di OpenCoesione
Data profiling
Data profilingData profiling
Data profiling
dodo_91
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
Wsmo Restricted
Wsmo RestrictedWsmo Restricted
Wsmo Restricted
Sebastiano Merlino (eTr)
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture DatiAlgoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Pier Luca Lanzi
Progettazione n
Progettazione nProgettazione n
Progettazione n
imartini
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegateSviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Paolo Sereno
Algoritmi di clustering
Algoritmi di clusteringAlgoritmi di clustering
Algoritmi di clustering
Rosario Turco
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
Felice Pescatore
Terza lezioneandroid
Terza lezioneandroidTerza lezioneandroid
Terza lezioneandroid
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Seminario Di Data Mining
Seminario Di Data MiningSeminario Di Data Mining
Seminario Di Data Mining
valuccia84
Repository pattern
Repository patternRepository pattern
Repository pattern
Christian Nastasi
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
Lorena Rojas
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
Matteo Valoriani
programmazione ad oggetti
programmazione ad oggettiprogrammazione ad oggetti
programmazione ad oggetti
mariacaporale
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NET
Marco Zamana
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniLezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Rice Cipriani
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis n
imartini
Data profiling
Data profilingData profiling
Data profiling
dodo_91
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture DatiAlgoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati
Pier Luca Lanzi
Progettazione n
Progettazione nProgettazione n
Progettazione n
imartini
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegateSviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Paolo Sereno
Algoritmi di clustering
Algoritmi di clusteringAlgoritmi di clustering
Algoritmi di clustering
Rosario Turco
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
Felice Pescatore
Seminario Di Data Mining
Seminario Di Data MiningSeminario Di Data Mining
Seminario Di Data Mining
valuccia84
Programmazione ad oggetti
Programmazione ad oggettiProgrammazione ad oggetti
Programmazione ad oggetti
Lorena Rojas
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
Matteo Valoriani

More from Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA (20)

Interferenza dueonde
Interferenza dueondeInterferenza dueonde
Interferenza dueonde
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Procedimentodisoluzione fisicaparticelle
Procedimentodisoluzione fisicaparticelleProcedimentodisoluzione fisicaparticelle
Procedimentodisoluzione fisicaparticelle
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Proc solescercaparabolastaccasegmentosuassex
Proc solescercaparabolastaccasegmentosuassexProc solescercaparabolastaccasegmentosuassex
Proc solescercaparabolastaccasegmentosuassex
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Problema fisica compito in classe
Problema fisica compito in classeProblema fisica compito in classe
Problema fisica compito in classe
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Esercizi sulla energia meccanica
Esercizi sulla energia meccanicaEsercizi sulla energia meccanica
Esercizi sulla energia meccanica
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Problemi di trigonometria
Problemi di trigonometriaProblemi di trigonometria
Problemi di trigonometria
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione Blog Didattici 27 4 2010
Lezione Blog Didattici 27 4 2010Lezione Blog Didattici 27 4 2010
Lezione Blog Didattici 27 4 2010
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Portale libreria online
Portale libreria onlinePortale libreria online
Portale libreria online
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione android esercizi
Lezione android esercizi Lezione android esercizi
Lezione android esercizi
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione programmazione database con java Servlet - quarta parte
Lezione programmazione database con java Servlet - quarta parteLezione programmazione database con java Servlet - quarta parte
Lezione programmazione database con java Servlet - quarta parte
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione jsp su come gestire una tabella relazionale con chiave esterna
Lezione jsp su come gestire una tabella relazionale con chiave esternaLezione jsp su come gestire una tabella relazionale con chiave esterna
Lezione jsp su come gestire una tabella relazionale con chiave esterna
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Sesta lezione android
Sesta lezione androidSesta lezione android
Sesta lezione android
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Quinta lezione android
Quinta lezione androidQuinta lezione android
Quinta lezione android
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Quarta lezioneandroid
Quarta lezioneandroidQuarta lezioneandroid
Quarta lezioneandroid
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Lezione jsp pdatabase crud quintaparte
Lezione jsp pdatabase crud quintaparteLezione jsp pdatabase crud quintaparte
Lezione jsp pdatabase crud quintaparte
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA

Recently uploaded (18)

Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni

Pensiero Orientato Agli Oggetti

  • 1. Pensiero orientato agli oggetti prima parte Lezione del 14 ottobre 2008 per il modulo Programmazione ad Oggetti
  • 2. Vari livelli di Object-Oriented Object Oriented Analysis OOA Object Oriented Design - OOD Object Oriented Programming OOP Design Patterns Unified Modeling Language UML OO Data XML OO Internet Development
  • 3. OO paradigma di pensiero Come pensiamo in termini di oggetti Imparare i concetti OO senza un metodo di sviluppo ed un insieme di tools (strumenti) Separare metodi e strumenti dal processo di pensiero Object Oriented Comprendere la differenza tra limparare i concetti OO e lusare metodi e strumenti che supportano questo paradigma di pensiero
  • 4. Sommario dei fondamentali concetti OO Definizione di oggetto Definizione di classe Nascondere i dati (data hiding) Incapsulamento Getters Setters Attributi Metodi Messaggi Interfaccia Implementazione Ereditariet Astrazione Relazione is-a Polimorfismo Composizione Relazione has-a
  • 5. Differenza tra programmazione procedurale e Orientata agli oggetti Nella programmazione procedurale il codice (istruzioni) 竪 localizzato in funzioni e procedure. Queste funzioni diventano della scatole nere (black box), dove entrano input ed escono output I dati sono posti in strutture separate I dati sono manipolati dalle funzioni inputs funzione outputs
  • 6. Che cosa 竪 un oggetto Un oggetto 竪 unentit (cosa) che contiene sia attributi che comportamenti Ad esempio una persona ha un colore degli occhi, unet, una certa altezza e questi sono attributi! Una persona ha pure dei comportamenti, come il camminare, il parlare, pensare Pertanto una persona 竪 un oggetto La differenza chiave tra la programmazione OO e le altre programmazioni sta in questo fatto chiave: loggetto contiene entrambi: attributi e comportamenti
  • 7. Da fare: scopri dieci oggetti Determina dieci oggetti con i loro attributi e con i loro comportamenti Gli oggetti possono essere cose animate e cose inanimate. Possono essere concetti o cose concrete
  • 8. Come 竪 possibile che oggetti inanimati abbiano un comportamento ? Anche un oggetto inanimato ha un comportamento nel senso che ha un ruolo in un sistema Offre dei servizi Risponde alle nostre richieste Ad esempio una Sedia ! Quale 竪 il comportamento di una Sedia ?
  • 9. I dati separati dalle funzioni nella programmazione procedurale Talvolta i dati sono globali per cui 竪 facile modificarli dallesterno Nei dati globali pi湛 funzioni hanno accesso Funzione 1 Funzione 2 Dati globali Funzione 3 Funzione 4
  • 10. Il contenuto degli oggetti Gli oggetti combinano dati e comportamenti in un unico simpatico pacchetto Sono pi湛 di una struttura dati o di tipi di dati primitivi Contengono entit quali interi e stringhe che sono usate per rappresentare attributi Ma contengono anche i metodi, che rappresentano il comportamento In un oggetto i metodi sono usati per eseguire operazioni sui dati ed altre azioni. La cosa pi湛 importante 竪 che possiamo controllare laccesso ai membri di un oggetto (metodi ed attributi)
  • 11. Controllo ai membri di un oggetto Alcuni membri di un oggetto, sia attributi che metodi, possono essere nascosti ad altri oggetti Ad esempio un oggetto Math potrebbe contenere due numeri interi mioint1 e mioint2, i metodi per settare e recuperare i valori di mioint1 mioint2. Potrebbe pure contenere un metodo chiamato somma() Math metodo metodo metodo dati
  • 12. Data hiding e Incapsulamento Il restringere laccesso a certi attributi o metodi 竪 chiamato data hiding Il combinare insieme attributi e metodi nella medesima entit 竪 chiamato incapsulamento
  • 13. messaggi Cosa succede quando un altro oggetto, ad esempio mioOggetto, vuole accedere alla somma di mioint1 e mioint2 ? Questo oggetto la chiede alloggetto Math mioObject invia un messaggio alloggetto Math I due oggetti comunicano luno con laltro tramite i loro metodi Un messaggio 竪 in realt una chiamata del metodo somma() di Math. Il metodo somma() viene mandato in esecuzione e restituisce il valore della somma a mioObject
  • 14. Come comunicano i due oggetti mioOggetto Math dati metodo metodo metodo dati metodo metodo metodo
  • 15. Non ci interessa come la somma 竪 calcolata mioOggetto non ha la necessit di sapere come la somma 竪 stata calcolata Con questa metodologia al lavoro, si pu嘆 cambiare il modo con cui Math calcola la somma senza modificare mioOggetto Tutto quello che mioOggetto vuole 竪 la somma ! E non 竪 interessato a come questa viene calcolata Esempio di una semplice calcolatrice
  • 16. Semplice calcolatrice Quando determinate la somma con una calcolatrice, tutto quello che usate 竪 uninterfaccia, linterfaccia della calcolatrice, la tastiera ed il display. La calcolatrice ha un metodo per fare la somma che viene invocato (eseguito) quando premete la corretta sequenza di tasti Come risposta ottenete il corretto risultato della somma Comunque non avete nessuna idea di come questo risultato sia stato ottenuto
  • 17. Responsabilit Il calcolo della somma non 竪 responsabilit di mioOggetto responsabilit di Math Se mioOggetto ha accesso alloggetto Math, pu嘆 inviargli gli appropriati messaggi ed ottenere lappropriato risultato. In generale gli oggetti non devono manipolare i dati interni di altri oggetti Ad esempio mioOggetto non dovrebbe direttamente cambiare i valori di mioint1 e mioint2
  • 18. Che cosa esattamente 竪 un oggetto ? Gli oggetti sono i blocchi di costruzione di un programma OO Un programma che usa la tecnologia OO 竪 una collezione di oggetti Ad esempio consideriamo un sistema costituito da una compagnia e i suoi impiegati. Questi sono gli oggetti. Ciascuno di questi oggetti 竪 costuito da dati e comportamento
  • 19. I dati di un oggetto I dati memorizzati dentro un oggetto rappresentano lo stato delloggetto Questi dati sono chiamati attributi Per un impiegato potrebbero essere il codice fiscale, la data di nascita, il sesso, il numero di telefono, etc Gli attributi contengono le informazioni che differenziano tra di loro i vari oggetti dello stesso tipo, in questo caso gli impiegati I valori degli attributi
  • 20. Che cosa 竪 il comportamento degli oggetti Il comportamento di un oggetto 竪 tutto quello che un oggetto pu嘆 fare Nella programmazione procedurale i comportamenti sono contenuti nelle procedure, funzioni, subroutine Nella programmazione OO questi comportamenti sono contenuti nei metodi Un metodo viene invocato (mandato in esecuzione) inviandogli un messaggio
  • 21. Settare, recuperare i valori degli attributi Uno dei comportamenti richiesti per un oggetto impiegato 竪 quello di settare e restituire i valori dei suoi attributi Pertanto ogni attributo dovrebbe avere dei metodi corrispondenti, come setTelefono(), getTelefono(). In questo caso quando un altro oggetto necessita di questa informazione pu嘆 inviare un messaggio alloggetto impiegato e chiedere quale sia il suo numero di telefono public void setTelefono (String n){telefono=n;} public String getTelefono(){return telefono;}
  • 22. Il concetto dei metodi getters e setters La natura concettuale dei metodi accessori 竪 quella di supportare il concetto di data hiding nascondere i dati Poich辿 gli oggetti non possono manipolare direttamente i dati dentro un altro oggetto, i metodi getters e setters forniscono un accesso controllato a questi dati I metodi getters sono anche chiamati metodi di accesso I metodi setters sono anche chiamati metodi di mutazione (mutators)
  • 23. Interfaccia dei metodi Osserva che stiamo solo mostrando linterfaccia dei metodi e non la loro implementazione Per usare i metodi ad un utente serve la seguente informazione: Il nome del metodo I parametri da passare al metodo Il tipo di dato che esso restituisce
  • 24. Interfaccia dei metodi esempio Sia un oggetto Pagatore che contiene il metodo calcolaPaga() che calcola la busta paga di uno specifico impiegato. Tra le altre informazioni dellimpiegato alloggetto Pagatore serve il suo codice fiscale. Per ottenere questa informazione loggetto pagatore invia un messaggio alloggetto impiegato getCodiceFiscale() Fondamentalmente questo significa che loggetto pagatore chiama ossia manda in esecuzione il metodo getCodiceFiscale() delloggetto impiegato Loggetto impiegato riconosce questo messaggio e restituisce linformazione richiesta
  • 25. Diagramma di classe Possiamo fare un disegno che rappresenta il sistema impiegato/pagatore e lo chiamiamo diagramma delle classi di questo sistema ad oggetti Impiegato ----------------------------------- dataNascita: Date codiceFiscale: String Nome: String Telefono: String ------------------------------------ getTelefono: String setTelefono: void . Pagatore ------------------------------- paga: double -------------------------------- calcolaPaga: double
  • 26. Come 竪 fatto un diagramma delle classi Ogni classe 竪 definita da tre separate sezioni Il nome Gli attributi Il comportamento ( i metodi ) Per modellizzare le classi si usano degli strumenti appositi quali UML
  • 27. Creazione di un oggetto da una classe Una classe 竪 unastrazione degli oggetti del medesimo tipo Che relazione esiste tra classe e oggetto La classe 竪 uno stampino per mezzo del quale creiamo oggetti dello stesso tipo Quando un oggetto 竪 creato diciamo che 竪 instanziato Pertanto se creiamo tre oggetti ad esempio impiegato, stiamo instanziando tre istanza completamente diverse della classe Impiegato Ciascun oggetto possiede una propria copia in memoria dei suoi attributi e dei suoi metodi Un oggetto Impiegato di nome Maria ha la sua propria copia di attributi e di metodi
  • 28. Che cosa 竪 una classe Una classe 竪 uno stampino per un oggetto Una classe 竪 linsieme dei tipi di dato che costituiscono gli attributi degli oggetti che essa modellizza unastrazione dai valori di questi dati In una classe non si tiene conto dei valori degli attributi, si considera loggetto nella sua generalit