En Swift, las clases y estructuras pueden tener propiedades y métodos. Las propiedades son valores asociados a una clase o estructura, mientras que los métodos son funciones que pertenecen a estas entidades. En esta sección, aprenderemos cómo definir y utilizar propiedades y métodos en Swift.

Propiedades

Las propiedades en Swift se dividen en dos categorías principales:

  1. Propiedades almacenadas: Almacenan valores constantes o variables como parte de una instancia.
  2. Propiedades calculadas: Proporcionan un valor calculado en lugar de almacenar un valor.

Propiedades Almacenadas

Las propiedades almacenadas pueden ser variables (var) o constantes (let). Aquí hay un ejemplo de una clase con propiedades almacenadas:

class Persona {
    var nombre: String
    var edad: Int
    let nacionalidad: String

    init(nombre: String, edad: Int, nacionalidad: String) {
        self.nombre = nombre
        self.edad = edad
        self.nacionalidad = nacionalidad
    }
}

let persona = Persona(nombre: "Juan", edad: 30, nacionalidad: "Mexicana")
print(persona.nombre)  // Imprime "Juan"
print(persona.edad)    // Imprime 30
print(persona.nacionalidad)  // Imprime "Mexicana"

Propiedades Calculadas

Las propiedades calculadas no almacenan un valor, sino que proporcionan un getter y opcionalmente un setter para calcular el valor. Aquí hay un ejemplo:

class Rectangulo {
    var ancho: Double
    var alto: Double

    var area: Double {
        return ancho * alto
    }

    init(ancho: Double, alto: Double) {
        self.ancho = ancho
        self.alto = alto
    }
}

let rectangulo = Rectangulo(ancho: 5.0, alto: 10.0)
print(rectangulo.area)  // Imprime 50.0

Propiedades de Clase

Las propiedades de clase (o propiedades estáticas) son propiedades cuyo valor es compartido por todas las instancias de la clase. Se definen usando la palabra clave static:

class Contador {
    static var total: Int = 0

    init() {
        Contador.total += 1
    }
}

let contador1 = Contador()
let contador2 = Contador()
print(Contador.total)  // Imprime 2

Métodos

Los métodos son funciones que pertenecen a una clase, estructura o enumeración. Se definen de manera similar a las funciones normales, pero se escriben dentro del cuerpo de la clase, estructura o enumeración.

Métodos de Instancia

Los métodos de instancia son funciones que operan sobre una instancia específica de una clase o estructura. Aquí hay un ejemplo:

class Coche {
    var velocidad: Double = 0.0

    func acelerar() {
        velocidad += 10.0
    }

    func frenar() {
        velocidad -= 10.0
    }
}

let coche = Coche()
coche.acelerar()
print(coche.velocidad)  // Imprime 10.0
coche.frenar()
print(coche.velocidad)  // Imprime 0.0

Métodos de Clase

Los métodos de clase (o métodos estáticos) son funciones que se pueden llamar en la clase en sí, no en una instancia de la clase. Se definen usando la palabra clave static:

class Matematica {
    static func sumar(a: Int, b: Int) -> Int {
        return a + b
    }
}

let resultado = Matematica.sumar(a: 5, b: 3)
print(resultado)  // Imprime 8

Ejercicio Práctico

Ejercicio 1: Definir una Clase con Propiedades y Métodos

Define una clase Libro con las siguientes propiedades y métodos:

  • Propiedades:

    • titulo (String)
    • autor (String)
    • numeroDePaginas (Int)
    • paginasLeidas (Int)
  • Métodos:

    • leer(paginas: Int): Incrementa paginasLeidas en el número de páginas especificado.
    • progreso() -> Double: Devuelve el porcentaje de páginas leídas.
class Libro {
    var titulo: String
    var autor: String
    var numeroDePaginas: Int
    var paginasLeidas: Int

    init(titulo: String, autor: String, numeroDePaginas: Int, paginasLeidas: Int = 0) {
        self.titulo = titulo
        self.autor = autor
        self.numeroDePaginas = numeroDePaginas
        self.paginasLeidas = paginasLeidas
    }

    func leer(paginas: Int) {
        paginasLeidas += paginas
    }

    func progreso() -> Double {
        return (Double(paginasLeidas) / Double(numeroDePaginas)) * 100
    }
}

let libro = Libro(titulo: "1984", autor: "George Orwell", numeroDePaginas: 328)
libro.leer(paginas: 50)
print(libro.progreso())  // Imprime 15.24390243902439

Solución del Ejercicio

La clase Libro se define con las propiedades titulo, autor, numeroDePaginas y paginasLeidas. El método leer(paginas:) incrementa paginasLeidas en el número de páginas especificado, y el método progreso() calcula el porcentaje de páginas leídas.

Conclusión

En esta sección, hemos aprendido sobre las propiedades y métodos en Swift. Las propiedades pueden ser almacenadas o calculadas, y pueden pertenecer a instancias o a la clase en sí. Los métodos son funciones que operan sobre instancias o clases. Con estos conceptos, ahora puedes definir clases y estructuras más complejas y funcionales en Swift. En la próxima sección, exploraremos la herencia y cómo las clases pueden derivar de otras clases para reutilizar y extender la funcionalidad.

© Copyright 2024. Todos los derechos reservados