En Swift, las clases y las estructuras son bloques de construcción fundamentales que permiten organizar y estructurar el código. Aunque comparten muchas características, también tienen diferencias clave que determinan cuándo usar una u otra.
Conceptos Clave
Clases
- Definición: Las clases son tipos de referencia, lo que significa que se pasan por referencia y no por valor.
- Herencia: Las clases pueden heredar de otras clases, permitiendo la reutilización de código y la creación de jerarquías.
- Deinitializers: Las clases pueden tener deinitializers, que son métodos especiales llamados cuando una instancia de clase se está a punto de liberar.
Estructuras
- Definición: Las estructuras son tipos de valor, lo que significa que se copian cuando se pasan por el código.
- Inmutabilidad: Las estructuras son inmutables por defecto, lo que significa que sus propiedades no pueden cambiarse a menos que se declaren como
var
. - Sin Herencia: Las estructuras no pueden heredar de otras estructuras.
Sintaxis Básica
Definición de una Clase
class Persona { var nombre: String var edad: Int init(nombre: String, edad: Int) { self.nombre = nombre self.edad = edad } func describir() -> String { return "Nombre: \(nombre), Edad: \(edad)" } }
Definición de una Estructura
struct Punto { var x: Int var y: Int func describir() -> String { return "Punto en (\(x), \(y))" } }
Ejemplo Práctico
Clase: Persona
class Persona { var nombre: String var edad: Int init(nombre: String, edad: Int) { self.nombre = nombre self.edad = edad } func describir() -> String { return "Nombre: \(nombre), Edad: \(edad)" } } let persona1 = Persona(nombre: "Juan", edad: 30) print(persona1.describir()) // Salida: Nombre: Juan, Edad: 30
Estructura: Punto
struct Punto { var x: Int var y: Int func describir() -> String { return "Punto en (\(x), \(y))" } } var punto1 = Punto(x: 10, y: 20) print(punto1.describir()) // Salida: Punto en (10, 20)
Comparación: Clases vs Estructuras
Característica | Clases | Estructuras |
---|---|---|
Tipo | Referencia | Valor |
Herencia | Sí | No |
Deinitializers | Sí | No |
Copia | Por referencia | Por valor |
Inmutabilidad | Mutable | Inmutable por defecto |
Ejercicios Prácticos
Ejercicio 1: Crear una Clase
Instrucciones: Crea una clase Coche
con las propiedades marca
, modelo
y año
. Incluye un método describir
que devuelva una cadena con la descripción del coche.
class Coche { var marca: String var modelo: String var año: Int init(marca: String, modelo: String, año: Int) { self.marca = marca self.modelo = modelo self.año = año } func describir() -> String { return "Marca: \(marca), Modelo: \(modelo), Año: \(año)" } } let coche1 = Coche(marca: "Toyota", modelo: "Corolla", año: 2020) print(coche1.describir()) // Salida: Marca: Toyota, Modelo: Corolla, Año: 2020
Ejercicio 2: Crear una Estructura
Instrucciones: Crea una estructura Rectangulo
con las propiedades ancho
y alto
. Incluye un método area
que calcule y devuelva el área del rectángulo.
struct Rectangulo { var ancho: Double var alto: Double func area() -> Double { return ancho * alto } } let rectangulo1 = Rectangulo(ancho: 5.0, alto: 10.0) print("Área del rectángulo: \(rectangulo1.area())") // Salida: Área del rectángulo: 50.0
Resumen
En esta sección, hemos aprendido sobre las clases y las estructuras en Swift, sus diferencias y cuándo usar cada una. Las clases son tipos de referencia y permiten la herencia, mientras que las estructuras son tipos de valor y son inmutables por defecto. Hemos visto ejemplos prácticos y realizado ejercicios para reforzar estos conceptos. En la siguiente sección, exploraremos las propiedades y métodos en más detalle.
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