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: 30Estructura: 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: 2020Ejercicio 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.0Resumen
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
