Swift: creiamo una nuova classe

      Nessun commento su Swift: creiamo una nuova classe

swift-hero

Come già accennato nelle lezioni precedenti spiegherò solamente la sintassi del codice e no i concetti legati ad essi poiché questi tutorial sono destinati a coloro che sanno già programmare. Come si può intuire dal titolo oggi ho intenzione di mostrarvi come dichiarare una nuova classe e come dichiarare una variabile di istanza. Quindi creiamo una nuova applicazione e scegliamo come template command line tool

Schermata 2014-06-09 alle 22.05.28

Come linguaggio scegliamo swift, ecco un primo esempio

 

import Foundation

class Persona{

    var età : Int

    var nome:String = ""

    var cognome:String = ""

    init(name:String, surname:String, age:Int){

        nome=name

        self.cognome=surname

        self.età=age

    }

    func stampaInfo(){

        println("Mi chiamo "+nome+" "+cognome+" ed ho "+String(età)+" anni")

    }

}

var per=Persona(name: "Mario", surname: "Rossi", age: 22)

per.stampaInfo()

Il metodo init è semplicemente un metodo costruttore, ovviamente è possibile creare più metodi costruttori. Come possiamo notare creare una variabile d’istanza è veramente molto semplice basta fare: var nomeVariabile=Nomeclasse(), mentre per richiamare un metodo si utilizza la dot notation ovvero nomeVariabile.Metodo. Nel prossimo esempio creeremo 2 classi in maniera tale da mostrarvi come una classe eredita da una classe Padre. Le due classi avranno il nome di Poligono e Quadrato, la classe Quadrato come potete immaginare eredità dalla classe Poligono.


import Foundation

//classe poligono

//non fa niente class Poligono{ init(){ } func calcoloArea()->Int{ return 0; } } class Quadrato:Poligono{ var latoQuadrato:Int

    //costruttore

    init(latoQuad:Int){ self.latoQuadrato=latoQuad }

    // funzione per il calcolo del perimetro

    func perimetro ()->Int{ return latoQuadrato * 4 }

    // override della funzione calcolaArea ereditata dalla classe padre Poligono

    override func calcoloArea() -> Int {

        returnlatoQuadrato * latoQuadrato

    } }

// Variabile d'istanza

var mioQUadrato=Quadrato(latoQuad: 5)

println ("il perimetro del quadrato è: "+String(mioQUadrato.perimetro()))

println ("l'area del quadrato è: "+String(mioQUadrato.calcoloArea()))

L’unica cosa interessante è l’override (l’override è l’operazione di riscrittura di un metodo ereditato)