Home Testo Corso Swift Classi – classi come tipo di dato

Classi – classi come tipo di dato

394
0
Classi Swift

In questa lezione continuiamo a parlare delle Classi nello specifico classi come tipo di dato!

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 e abbiamo visto i metodi di una classe.

Abbiamo visto all’inizio del corso che possiamo assegnare alle nostre variabili e constati il tipo di dato che essere devono contenere.

Abbiamo visto alcuni tipi di dato: String, Bool, Int…. ora vediamo come passare una classe come tipo di dato, ma facciamo subito un esempio:

// Classe Contatto

class Contatto{

    // Proprietà
    var nome: String
    var numero: String
    
    // Construttore
    init(nome: String, numero: String){
    
        self.nome = nome
        self.numero = numero
    }
}

// Classe Rubrica
class Rubrica{

    var contatti: [Contatto] // Come Tipo di dato la classe Contatto

    init(){
    
        self.contatti = [Contatto]()
    }
        
    // Aggiungi Contatto
    func aggiungiContatto (new: Contatto){
        
        self.contatti.append(new)   
    }
       
    // Chiama Contatto
    
    func chiama(nome: String) -> Bool{
        
        guard self.contatti.count > 0 else{
            
            print("La Rubrica è Vuota")
            return false
        }
                
        for x in self.contatti{
            
            if x.nome == nome {
                
                print("Sto Chiamando \(x.nome)")
                return true
            }
            
        }
        
        print("Non Ho trovato il Contatto \(nome) nella Rubrica")
        return false
    }
        
    //  Visualizza Contatti
    
    func visualizzaRubrica(){
        
        guard self.contatti.count > 0 else{
            
            print("La Rubrica è Vuota")
            return
        }
        
        for x in self.contatti{      
            print("(x.nome) Tel: \(x.numero)")       
        }
    }  
}

Nell’esempio ho creato 2 classi una chiamata Contatto e una chiamata Rubrica, la classe Contatto ha 2 proprietà nome e numero. Nella classe Rubrica invece ho creato come proprietà una array che conterrà come tipo di dato la classe contatto in più ho aggiunto dei metodi che mi permetteranno di aggiungere un contatto, chiamare un contatto e visualizza l’intera rubrica.

Ora vediamo con creare le istanze delle classi e interagire con loro tramite i metodi:

// Istanze della Classe Contatto
var  francesco = Contatto(nome: "Francesco", numero: "11111")
var  carlo = Contatto(nome: "Carlo", numero: "22222")
var  maria = Contatto(nome: "Maria", numero: "33333")

// Istanze della Classe Rubrica
var rubrica = Rubrica()

// Utilizzo del metodo aggiungi della classe Rubrica
rubrica.aggiungiContatto(new: francesco)
rubrica.aggiungiContatto(new: carlo)
rubrica.aggiungiContatto(new: maria)

// Utilizzo del metodo chiama del classe Rubrica
rubrica.chiama(nome: "Francesco")

// Utilizzo del metodo visualizzaRubrica della classe Rubrica
rubrica.visualizzaRubrica()

Nell’esempio ho assegnato a tre variabili l’istanza della classe Contatto, ho creato una istanza della classe Rubrica e tramite i suoi metodi ho prima aggiunto all’array le tre istanze contatto passandole come parametro in ingresso al metodo aggiungiContatto poi tramite il metodo chiama ho simulato la chiamata a un contatto se presente nella array e poi tramite il metodo visualizzaRubrica ho visualizza a video l’intera rubrica.

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