Home Testo Corso Swift Classi – Extension

Classi – Extension

376
0
Classi Swift

In questa lezione continuiamo a parlare delle Classi nello specifico vedremo L’extension di una classe.

Nelle lezioni precedenti abbiamo visto a livello teorico cosa è una classe, un oggetto e l’istanza della classe. Abbiamo visto poi come creare una classe in Swift, i relativi attributi, come gestirli tramite l’Opzionalità e i costruttori, abbiamo visto i metodi di una classe e come utilizzare una classe come tipo di dato, il get e set di una proprietà e l’ereditarietà di una classe.

Extension: Come la stessa parola suggerisce, ci permette di estendere le funzionalità di una classe già esistente. Capirai meglio il perché tra poco.

Estendere, per quanto riguarda la programmazione con il linguaggio Swift, significa aumentare le capacità di una classe creata da Noi o già esistenti.

Una extension in Swift è definita a partire dalla parola chiave extension seguita dal nome della classe a cui si vuole estendere il comportamento.

// Extension di una classe
 
 extension NomeClasse {
 // comportamento da aggiungere
 }

Prima di passare a vedere l’implementazione del codice è necessario fare una considerazione di carattere empirico. 

La domanda che dovrebbe sorgervi spontanea è: perché dovrei utilizzare una extension quando posso modificare il corpo di una classe?

La domanda è più che lecita.

La risposta è sempre la stessa ovvero cercare di scrivere il codice di una classe quanto più generico possibile!

La bravura di un programmatore, è quella di scrivere classi che possono essere riutilizzate in altri progetti.

Ora immagina di aver creato la solita classe Utente e di volere un nuovo attributo, chiamato codiceFiscale, rappresentato da una String.

In alcuni progetti vogliamo che il codice fiscale venga calcolato a partire da delle proprietà già esistenti ed in altri progetti non vogliamo che ci sia il codice fiscale.

Cosa fai? Modifichi ogni volta la struttura della classe o utilizzi una extension?

Vedrai nel corso di sviluppo applicazioni che molte delle classi che utilizzerai sono state già scritte da Apple o da altri sviluppatori per aumentare la velocità di scrittura di un’applicazione e diminuire la complessità di un progetto.

Spesso però capiterà che le classi che ti hanno fornito non soddisfano le esigenze del tuo progetto e, di conseguenza, vorrai poter modificarle.

Con le Extension in Swift riuscirai a farlo senza intaccare il codice originale che, molte volte, è bloccato in delle sorte contenitori che ti permettono solo di leggerne il contenuto.

class Persona {
    
    var nome: String
    var cognome: String
    var eta: String
    
    init(nome: String, cognome:String,  eta: String) {
        
        self.nome = nome
        self.cognome = cognome
        self.eta = eta
    }
    
    func stampaDati(){
        
        print("Nome: \(self.nome)")
        print("Cognome: \(self.cognome)")
        print("eta: \(self.eta)")
    }
}

// Extension Classe Persona
extension Persona {
    
    var codiceFiscale: String{
    
        get{
            return (self.nome + "" + self.eta + "" + self.cognome)
        }
    
    }
}

var  francesco = Persona(nome: "Francesco", cognome: "Rossi", eta: "39")
francesco.stampaDati()
print("Codice Fiscale: (francesco.codiceFiscale)")

Nell’esempio ho una classe Persona che gestisce alcune proprietà e un metodo per la stampa dei dati inseriti, ora se ho la necessità di integrare la classe con un nuovo dato invece di riscrivere la classe ho creato un extension della classe persona è aggiunto in questo caso tramite il get una proprietà codiceFiscale composto dalla somma delle tre proprietà della classe Persona.

Per qualunque dubbio o domanda scrivi un commento in questa lezione.