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:
- Propiedades almacenadas: Almacenan valores constantes o variables como parte de una instancia.
- 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)
: IncrementapaginasLeidas
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.
Curso de Programación en Swift
Módulo 1: Introducción a Swift
- Introducción a Swift
- Configuración del Entorno de Desarrollo
- Tu Primer Programa en Swift
- Sintaxis y Estructura Básica
- Variables y Constantes
- Tipos de Datos
Módulo 2: Control de Flujo
Módulo 3: Funciones y Closures
- Definición y Llamada de Funciones
- Parámetros de Función y Valores de Retorno
- Closures
- Funciones de Orden Superior
Módulo 4: Programación Orientada a Objetos
Módulo 5: Swift Avanzado
Módulo 6: Swift y Desarrollo de iOS
- Introducción al Desarrollo de iOS
- Fundamentos de UIKit
- Storyboards y Interface Builder
- Redes en Swift
- Core Data
- Fundamentos de SwiftUI