Pensiero orientato agli oggetti prima parte Lezione del 14 ottobre 2008 per il modulo “Programmazione ad Oggetti
Vari livelli di Object-Oriented <ul><li>Object Oriented Analysis – OOA </li></ul><ul><li>Object Oriented Design  - OOD </l...
OO paradigma di pensiero <ul><li>Come pensiamo in termini di oggetti </li></ul><ul><li>Imparare i concetti OO senza un met...
Sommario dei fondamentali concetti OO <ul><li>Definizione di oggetto </li></ul><ul><li>Definizione di classe </li></ul><ul...
Differenza tra programmazione procedurale e Orientata agli oggetti <ul><li>Nella programmazione procedurale il codice (ist...
Che cosa è un oggetto <ul><li>Un oggetto è un’entità (cosa) che contiene sia attributi che  comportamenti </li></ul><ul><l...
Da fare: scopri dieci oggetti <ul><li>Determina dieci oggetti con i loro attributi e con i loro comportamenti </li></ul><u...
Come è possibile che oggetti inanimati abbiano un comportamento ? <ul><li>Anche un oggetto inanimato ha un comportamento n...
I dati separati dalle funzioni nella programmazione procedurale <ul><li>Talvolta i dati sono globali per cui è facile modi...
Il contenuto degli oggetti <ul><li>Gli oggetti combinano dati e comportamenti in un unico simpatico pacchetto </li></ul><u...
Controllo ai membri di un oggetto <ul><li>Alcuni membri di un oggetto, sia attributi che metodi, possono essere nascosti a...
Data hiding e Incapsulamento <ul><li>Il restringere l’accesso a certi attributi o metodi è chiamato “data hiding” </li></u...
messaggi <ul><li>Cosa succede quando un altro oggetto, ad esempio mioOggetto, vuole accedere alla somma di mioint1 e mioin...
Come comunicano i due oggetti <ul><li>mioOggetto </li></ul><ul><li>Math </li></ul>dati metodo metodo metodo dati metodo me...
Non ci interessa come la somma è calcolata <ul><li>mioOggetto non ha la necessità di sapere come la somma è stata calcolat...
Semplice calcolatrice <ul><li>Quando determinate la somma con una calcolatrice, tutto quello che usate è un’interfaccia, l...
Responsabilità <ul><li>Il calcolo della somma non è responsabilità di mioOggetto </li></ul><ul><li>È responsabilità di Mat...
Che cosa esattamente è un oggetto ? <ul><li>Gli oggetti sono i blocchi di costruzione di un programma OO </li></ul><ul><li...
I dati di un oggetto <ul><li>I dati memorizzati dentro un oggetto rappresentano lo stato dell’oggetto </li></ul><ul><li>Qu...
Che cosa è il comportamento degli oggetti <ul><li>Il comportamento di un oggetto è tutto quello che un oggetto può fare </...
Settare, recuperare i valori degli attributi <ul><li>Uno dei comportamenti richiesti per un oggetto impiegato è quello di ...
Il concetto dei metodi getters e setters <ul><li>La natura concettuale dei metodi accessori è quella di supportare il conc...
Interfaccia dei metodi <ul><li>Osserva che stiamo solo mostrando l’interfaccia dei metodi e non la loro implementazione </...
Interfaccia dei metodi esempio <ul><li>Sia un oggetto Pagatore che contiene il metodo calcolaPaga() che calcola la busta p...
Diagramma di classe <ul><li>Possiamo fare un disegno che rappresenta il sistema impiegato/pagatore e lo chiamiamo diagramm...
Come è fatto un diagramma delle classi <ul><li>Ogni classe è definita da tre separate sezioni </li></ul><ul><li>Il nome </...
Creazione di un oggetto da una classe <ul><li>Una classe è un’astrazione degli oggetti del medesimo tipo </li></ul><ul><li...
Che cosa è una classe <ul><li>Una classe è uno stampino per un oggetto </li></ul><ul><li>Una classe è l’insieme dei tipi d...
Upcoming SlideShare
Loading in...5
×

Pensiero Orientato Agli Oggetti

1,957

Published on

introduzione alla programmazione orientata agli oggetti

Published in: Education, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,957
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
80
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pensiero Orientato Agli Oggetti

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

    Clipping is a handy way to collect important slides you want to go back to later.

×