In questa lezione inizierò a parlare delle Classi e della Programmazione ad oggetti!
Essendo anche questo un argomento complesso ho suddiviso la loro spiegazione come per le funzioni in più lezioni in modo da focalizzare in ognuna un concetto.
La programmazione ad oggetti in Swift è decisamente semplificata rispetto agli altri linguaggi.
Ma prima di andare nel dettaglio poniamoci 2 domande: Perché è stata chiamata ad oggetti? e soprattutto cos’è un oggetto?
Possiamo dire che ogni cosa è un oggetto. il Computer da cui sto scrivendo, un tavolo, una macchina, una penna e persino Noi stessi siamo degli oggetti.
Ma, cosa rende qualcosa un oggetto?
Un oggetto è un’entità che può essere identificata da delle proprietà specifiche.
Per proprietà intendo sia i suoi attributi che le sue funzionalità.
Facciamo l’esempio della solita macchina, sicuramente ha degli attributi delle funzionalità proprie.
Attributi: Colore, modello, cilindrata.
Funzionalità. Si muove, Si accedere, Si spegne
Cioè un oggetto è qualcosa che puoi categorizzare mediante delle proprietà (inteso come caratteristiche).
Una penna sai che è una penna perché ha quella particolare forma e funzionalità. Un cane sai che è diverso da un gatto perché abbaia e sicuramente non miagola.
Ho detto che anche Noi stessi siamo degli oggetti, caratterizzati da degli attributi: data di nascita, colore della pelle, altezza, QI, colore capelli. Inoltre abbiamo delle funzionalità: possiamo camminare, saltare, studiare ecc ecc.
Lo scopo della programmazione ad oggetti con il linguaggio Swift è quello di permettere, ad uno sviluppatore, di poter raffigurare oggetti e comportamenti informatici con lo stesso sistema che utilizziamo noi essere umani quando descriviamo la realtà che ci circonda.
Due oggetti simili, come per esempio Io e Te siamo entrambe Persone e quindi caratterizzati dagli stessi attributi, ma siamo diversi perché possediamo dei valori non uguali che caratterizzano i nostri attributi. Io sono nato giorno x e Tu il giorno y, io sono alto 1 e Tu 2.
I valori assunti dagli attributi definiscono lo stato dell’oggetto.
La classe, il modello astratto di un oggetto
Se ti chiedessi di dirmi che cosa è rappresentato in questa immagine, ovviamente senza pensarci mi diresti, delle Persone! Perché? Perché tutti gli elementi inseriti nella foto hanno delle caratteristiche comuni, hanno i capelli, 2 occhi, due orecchie… e delle funzionalità comuni come camminare, bere, mangiare… ma nel stesso tempo sono differenti uno dall’altra perché uno è uomo e uno e donna, uno ha i capelli neri e uno biondi…
Quindi possiamo dire che gli oggetti con le stesse proprietà fanno parte della stessa categoria. Queste categorie prendono il nome di Classi.
Possiamo Dire che:
- Una Classe è il modello astratto di un oggetto, uno schema che rappresenta in modo concettuale un oggetto.
- La rappresentazione reale della classe, che chiameremo istanza della classe, prende il nome di oggetto
Torniamo all’esempio della macchina, il progettista crea un modello con ovviamente delle caratteristiche di una macchina, 4 ruote, un motore, una scocca, un volante…. quindi a creato su carta un progetto, che possiamo definire classe.
Successivamente quando saranno prodotte materialmente le macchine a secondo delle richieste dei clienti potremmo trovare nel parco auto lo stesso modello con le stesse caratteristiche (Attributi) ma configurate diversamente una potrebbe essere di colore rosso, una blu, una nera, montare un motore da 100 cavalli, una da 150 cavalli, una con ruote da 15, una con ruote da 17….
In questo caso possiamo dire che abbiamo creato delle istanze della classe macchina quindi un oggetto.
Attenzione! Dire Oggetto e dire Classe non equivale a dire la stessa cosa!
Ricordati, bene perché è importante:
Una Classe è il modello astratto di un oggetto
La rappresentazione reale della classe (Oggetto), tramite un’istanza della classe stessa.
Classe class Persona { //attributi------------ nome data_nascita altezza peso codice_fiscale //funzionalità camminare() bere() studiare() }
Per qualunque dubbio o domanda scrivi un commento in questa lezione.