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
staticper estructures iclassper 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
staticper estructures iclassper 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) // 0Exemple 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 fundsResum
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
