En aquest tema, explorarem les propietats i els mètodes en Swift, elements fonamentals de la programació orientada a objectes. Les propietats permeten emmagatzemar dades dins d'una classe o estructura, mentre que els mètodes defineixen el comportament d'aquestes entitats.

Propietats

Tipus de Propietats

  1. Propietats Emmagatzemades (Stored Properties):

    • Emmagatzemen constants o variables com a part d'una instància d'una classe o estructura.
    • Poden ser variables (var) o constants (let).
  2. Propietats Calculades (Computed Properties):

    • No emmagatzemen un valor directament, sinó que proporcionen un getter i opcionalment un setter per calcular un valor.
  3. Propietats de Classe (Type Properties):

    • Associades a la classe o estructura en si, no a una instància específica.
    • Es declaren amb la paraula clau static per estructures i class per classes.

Exemple de Propietats Emmagatzemades

struct Rectangle {
    var width: Double
    var height: Double
}

var rect = Rectangle(width: 10.0, height: 5.0)
print("Width: \(rect.width), Height: \(rect.height)")

Exemple de Propietats Calculades

struct Rectangle {
    var width: Double
    var height: Double
    
    var area: Double {
        return width * height
    }
}

let rect = Rectangle(width: 10.0, height: 5.0)
print("Area: \(rect.area)")

Exemple de Propietats de Classe

class SomeClass {
    static var typeProperty: String = "A type property"
}

print(SomeClass.typeProperty)

Mètodes

Tipus de Mètodes

  1. Mètodes d'Instància (Instance Methods):

    • Definits dins d'una classe, estructura o enumeració.
    • Operen sobre instàncies particulars de la classe o estructura.
  2. Mètodes de Classe (Type Methods):

    • Associats a la classe o estructura en si, no a una instància específica.
    • Es declaren amb la paraula clau static per estructures i class per classes.

Exemple de Mètodes d'Instància

class Counter {
    var count = 0
    
    func increment() {
        count += 1
    }
    
    func increment(by amount: Int) {
        count += amount
    }
    
    func reset() {
        count = 0
    }
}

let counter = Counter()
counter.increment()
print(counter.count) // 1
counter.increment(by: 5)
print(counter.count) // 6
counter.reset()
print(counter.count) // 0

Exemple de Mètodes de Classe

class SomeClass {
    class func someTypeMethod() {
        print("This is a type method.")
    }
}

SomeClass.someTypeMethod()

Exercicis Pràctics

Exercici 1: Propietats Emmagatzemades i Calculades

Crea una estructura Circle amb una propietat emmagatzemada radius i una propietat calculada area que calculi l'àrea del cercle.

struct Circle {
    var radius: Double
    
    var area: Double {
        return .pi * radius * radius
    }
}

let circle = Circle(radius: 5.0)
print("Area: \(circle.area)")

Exercici 2: Mètodes d'Instància

Crea una classe BankAccount amb una propietat balance i mètodes deposit(amount:) i withdraw(amount:) per afegir i retirar diners del compte.

class BankAccount {
    var balance: Double = 0.0
    
    func deposit(amount: Double) {
        balance += amount
    }
    
    func withdraw(amount: Double) {
        if amount <= balance {
            balance -= amount
        } else {
            print("Insufficient funds")
        }
    }
}

let account = BankAccount()
account.deposit(amount: 100.0)
print("Balance: \(account.balance)") // 100.0
account.withdraw(amount: 50.0)
print("Balance: \(account.balance)") // 50.0
account.withdraw(amount: 60.0) // Insufficient funds

Resum

En aquesta secció, hem après sobre les propietats i els mètodes en Swift. Les propietats poden ser emmagatzemades, calculades o de classe, mentre que els mètodes poden ser d'instància o de classe. Hem vist exemples pràctics de cada tipus i hem realitzat exercicis per reforçar els conceptes apresos. En el següent tema, explorarem l'herència en Swift.

© Copyright 2024. Tots els drets reservats