0
La programmzione a oggetti
e le macchine del caffé
v. 2
Prof. Marcello Missiroli
Di cosa parliamo
Vantaggi della programmazione a oggetti
Terminologia del nuovo paradigma
Tipi di visibilità
Partiamo dalla moka
• Supponiamo di dover scrivere un
programma per fare il caffè.
• Avremo bisogno di memorizzare la
quan...
Il codice in C
• struct moka {
• float  water; float coffee; 
• }
• boolean make_coffee(moka *m, 
int time);
Problemi
• Scalabilità. Dobbiamo ogni volta passare
tutti i dati alla funzione. Se abbiamo 1000
moke?
• Protezione. Le var...
Cambiamo paradigma
Nel linguaggio comune un paradigma è un
modello di riferimento, un termine di
paragone. La parola deriv...
Il paradigma attuale
Il modello di programmazione attuale è
detto modello imperativo, basato su
concetti quali
Procedure
F...
Il paradigma a oggetti
La programmazione orientata agli oggetti
(OOP, Object Oriented Programming) è
un paradigma di progr...
La classe
La classe è lo strumento usato per definire
la struttura degli oggetti e il loro
funzionamento.
(in termini clas...
L'istanziazione
L'istanziazione è il meccanismo tramite il
quale si crea un oggetto. Ricorda una
variabile ma ha diverse c...
Modernizziamoci
Nuove terminologie
Strutture dati → OggettiOggetti
Funzioni → MetodiMetodi
Variabile → OggettoOggetto
Definire una variabi...
Il main
    public static void main(String 
args[]) {
        MacchinaCaffe mc = new 
MacchinaCaffe();
        mc.water=2....
Protezione
Si introduce il concetto di accesibilità
variabile per vari motivi quali:
* Per proteggere il programmatore da ...
Nuova versione
 private float water; private float caffe;
    public float getCaffe() { return caffe; }
    public void se...
Tipi di visibilità
Private:Private: Visibile solo alla classe attuale
Package-privatePackage-private (detta anche defaultd...
In gergo OOP
Il meccanismo di protezione e visibilità (che
si estende anche ai metodi) viene
chiamato
INCAPSULAMENTO
Costruttori
Moltissimi errori banali di programmazione
possono essere evitati assegnando
opportuni valori di default alle ...
Cosa sono
I costruttori sono particolari metodi che
vengono chiamati in modo automatico nel
momento dell'istanziazione di ...
Esempio
    public MacchinaCaffe() {
        this.water = 0f;
        this.caffe = 0f;
    }
Nel momento in cui si istanzi...
Polimorfismo
Al contrario di altri linguaggi, come il C, è
POSSIBILE dichiarare più volte la stessa
variabile con un diver...
Esempio II
    public MacchinaCaffe(float water, 
float caffe) {
        this.water = water;
        this.caffe = caffe; }...
What the helll is thisthis?
    public MacchinaCaffe(float water, 
float caffe) {
        thisthis.water = water;
        ...
Riassumendo
Abbiamo visto alcuni concetti fondamentali della
OOP/OOD:
Separazione interfaccia/implementazione
Incapsulamen...
Licenza
Questo documento è soggetto alla licenza
Creative Common BY-SA (Attribution –
Share Alike)
prof.missiroli@gmail.com
Programmazione a oggetti tramite la macchina del caffé (1/3)
Upcoming SlideShare
Loading in...5
×

Programmazione a oggetti tramite la macchina del caffé (1/3)

1,383

Published on

Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caffé (tipo Nespresso) (1/3)
Versione 2: tolto qualche refuso, aggiunto un paio di slide chairificatori.

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

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

No notes for slide

Transcript of "Programmazione a oggetti tramite la macchina del caffé (1/3)"

  1. 1. La programmzione a oggetti e le macchine del caffé v. 2 Prof. Marcello Missiroli
  2. 2. Di cosa parliamo Vantaggi della programmazione a oggetti Terminologia del nuovo paradigma Tipi di visibilità
  3. 3. Partiamo dalla moka • Supponiamo di dover scrivere un programma per fare il caffè. • Avremo bisogno di memorizzare la quantità d'acqua e di caffè, nonché il tempo di accensione
  4. 4. Il codice in C • struct moka { • float  water; float coffee;  • } • boolean make_coffee(moka *m,  int time);
  5. 5. Problemi • Scalabilità. Dobbiamo ogni volta passare tutti i dati alla funzione. Se abbiamo 1000 moke? • Protezione. Le variabili possono essere modificate esternamente alla procedura senza controllo.
  6. 6. Cambiamo paradigma Nel linguaggio comune un paradigma è un modello di riferimento, un termine di paragone. La parola deriva dal greco antico paràdeigma, che significa esemplare, esempio.
  7. 7. Il paradigma attuale Il modello di programmazione attuale è detto modello imperativo, basato su concetti quali Procedure Funzioni Variabili (possibilmente non globali) Parametri
  8. 8. Il paradigma a oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione, che prevede la definizione di oggetti software che interagiscono gli uni con gli altri attraverso lo scambio di messaggi.
  9. 9. La classe La classe è lo strumento usato per definire la struttura degli oggetti e il loro funzionamento. (in termini classici, ricorda le struct con l'aggiunta di nuove parole chiave e con l'insermento delle procedure)
  10. 10. L'istanziazione L'istanziazione è il meccanismo tramite il quale si crea un oggetto. Ricorda una variabile ma ha diverse caratteristiche in più . (In termini classici, ricorda la creazione di una variabile dinamica tramite malloc, ma notevolemente semplificata)
  11. 11. Modernizziamoci
  12. 12. Nuove terminologie Strutture dati → OggettiOggetti Funzioni → MetodiMetodi Variabile → OggettoOggetto Definire una variabile → Istanziare unIstanziare un oggettooggetto Richiamare una funzione → Inviare unInviare un messaggio a un oggettomessaggio a un oggetto
  13. 13. Il main     public static void main(String  args[]) {         MacchinaCaffe mc = new  MacchinaCaffe();         mc.water=2.0f;   mc.caffe=3.4f;       System.out.println(mc.make_coffee(10));     } istanziazioneistanziazione Accesso agli attributi Invio di un messaggio (make_coffee) all'oggetto mc
  14. 14. Protezione Si introduce il concetto di accesibilità variabile per vari motivi quali: * Per proteggere il programmatore da se stesso * Per separare interfaccia e implementazione
  15. 15. Nuova versione  private float water; private float caffe;     public float getCaffe() { return caffe; }     public void setCaffe(float caffe) { this.caffe =  caffe; }     public float getWater() {return water;}     public void setWater(float water) { this.water =  water; }
  16. 16. Tipi di visibilità Private:Private: Visibile solo alla classe attuale Package-privatePackage-private (detta anche defaultdefault) Visibile solo all'interno del pacchetto Esiste solo in Java – generalmente non è una buona idea Protected:Protected: Visibile solo alle classi derivate Public:Public: Visibile a tutti
  17. 17. In gergo OOP Il meccanismo di protezione e visibilità (che si estende anche ai metodi) viene chiamato INCAPSULAMENTO
  18. 18. Costruttori Moltissimi errori banali di programmazione possono essere evitati assegnando opportuni valori di default alle variabili (cosa che spesso i programmatori dimenticano) Nell'OOP tale concetto viene ampliato e raffinato introducendo i costruttori
  19. 19. Cosa sono I costruttori sono particolari metodi che vengono chiamati in modo automatico nel momento dell'istanziazione di una variabile. Sono metodi speciali che NON hanno valore di ritorno (ma possono avere parametri) e devono essere public.
  20. 20. Esempio     public MacchinaCaffe() {         this.water = 0f;         this.caffe = 0f;     } Nel momento in cui si istanzia una variabile MacchinaCaffe, automaticamente le sue variabili sono inizializzate a 0
  21. 21. Polimorfismo Al contrario di altri linguaggi, come il C, è POSSIBILE dichiarare più volte la stessa variabile con un diverso numero e tipo di parametri. Potremmo quindi dichiarare una seconda variante del costruttore che inizializza a un dato valore i dati privati.
  22. 22. Esempio II     public MacchinaCaffe(float water,  float caffe) {         this.water = water;         this.caffe = caffe; } Si usa in questo modo MacchinaCaffe mc1= new  MacchinaCaffe(30f,10f);
  23. 23. What the helll is thisthis?     public MacchinaCaffe(float water,  float caffe) {         thisthis.water = water;         thisthis.caffe = caffe; } This è un riferimento all'oggetto istanziato. Il più delle volte non è necessario. In questo caso si: altrimenti non si distingue tra water (parametro del metodo) e water (attributo dell'oggetto)
  24. 24. Riassumendo Abbiamo visto alcuni concetti fondamentali della OOP/OOD: Separazione interfaccia/implementazione Incapsulamento Polimorfismo Nelle prossime lezioni parleremo di ereditarietà e interfacce.
  25. 25. Licenza Questo documento è soggetto alla licenza Creative Common BY-SA (Attribution – Share Alike) prof.missiroli@gmail.com
  1. A particular slide catching your eye?

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

×