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
-
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
).
-
Propietats Calculades (Computed Properties):
- No emmagatzemen un valor directament, sinó que proporcionen un getter i opcionalment un setter per calcular un valor.
-
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 iclass
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
-
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.
-
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 iclass
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.
Curs de Programació en Swift
Mòdul 1: Introducció a Swift
- Introducció a Swift
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Swift
- Sintaxi i Estructura Bàsica
- Variables i Constants
- Tipus de Dades
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Closures
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Closures
- Funcions d'Ordre Superior
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Swift Avançat
Mòdul 6: Swift i Desenvolupament iOS
- Introducció al Desenvolupament iOS
- Conceptes Bàsics de UIKit
- Storyboards i Interface Builder
- Xarxes en Swift
- Core Data
- Conceptes Bàsics de SwiftUI