Clases y Herencia en Swift: Diferencias entre Class y Struct
Clase 17 de 25 • Curso de Swift para Apps iOS
Contenido del curso
- 3

Variables, Constantes y Tipos de Datos en Swift para iOS
18:55 - 4

Condicionales en Swift: Uso y Ejemplos Prácticos
16:58 - 5

Funciones en SWIFT: Creación y Uso Eficiente en Código
10:37 - 6

Manejo de Datos Opcionales en Swift: Declaración y Uso Práctico
09:29 - 7

Manipulación de Arrays en Swift: Declaración, Acceso e Inserción
10:28 - 8

Manipulación de Elementos en Arreglos con Swift
05:42 - 9

Uso de Conjuntos (Sets) en Xcode: Declaración y Manipulación
07:14 - 10

Operaciones Básicas con Conjuntos en Programación
05:22 - 11

Diccionarios en Swift: Creación, Modificación y Eliminación de Datos
10:54 - 12

Ciclos While en Swift: Ejecución Condicional Repetitiva
06:48 - 13

Ciclo For en Swift: Ejemplos y Aplicaciones Prácticas
09:38 - 14

Simulación de Batalla Pokémon en Swift
10:45 quiz de Fundamentos de programación iOS
- 15

Programación Orientada a Objetos con SWIFT: Clases y Objetos
06:56 - 16

Creación de Structs en Swift para Gestión de Materias
11:16 - 17

Clases y Herencia en Swift: Diferencias entre Class y Struct
13:27 - 18

Uso de Enumerables (Enums) en Swift para Datos Limitados
09:27 - 19

Protocolos en Swift: Creación e Implementación Práctica
15:12 - 20

Funciones avanzadas para manipulación de arreglos en programación
10:54 - 21

Gestión de Estudiantes con Programación Orientada a Objetos en SWIFT
05:41 quiz de POO en iOS
¿Cómo definir una clase en Swift?
El lenguaje Swift ofrece características únicas para la programación orientada a objetos. Uno de los elementos fundamentales es la definición de clases, que se distingue por una estructura específica. Vamos a crear una clase Student en Swift y examinar sus diferencias clave con un struct.
import Foundation
public class Student {
var name: String
let age: Int
var email: String
var subjects: [Subject]
var scores: [Double]
public init(name: String, age: Int, email: String, subjects: [Subject], scores: [Double]) {
self.name = name
self.age = age
self.email = email
self.subjects = subjects
self.scores = scores
}
public func studentDescription() -> String {
// Implementación de la descripción del estudiante
return ""
}
}
¿Qué hace especial a las clases en Swift?
Las clases en Swift son esenciales debido a su capacidad para soportar la herencia, lo que significa que una clase puede heredar las propiedades y métodos de otra. Esto permite una estructura jerárquica y reutilización del código. Por ejemplo, una clase AdvancedStudent puede heredar de Student:
public class AdvancedStudent: Student {
var extraPoints: Double
public init(name: String, age: Int, email: String, subjects: [Subject], scores: [Double], extraPoints: Double) {
self.extraPoints = extraPoints
super.init(name: name, age: age, email: email, subjects: subjects, scores: scores)
}
override public func studentDescription() -> String {
// Implementación especializada del estudiante avanzado
return "Estudiante avanzado"
}
}
¿Cómo iniciar una instancia de clase en Swift?
Crear instancias de una clase en Swift es directo. Aquí mostramos cómo iniciar un Student y un AdvancedStudent, utilizando sus propiedades únicas y métodos para generar descripciones personalizadas.
let student1 = Student(name: "Thiago", age: 18, email: "thiago@g.com", subjects: [mathSubject], scores: [70])
let student2 = AdvancedStudent(name: "María", age: 19, email: "m@g.com", subjects: [mathSubject], scores: [80], extraPoints: 10)
print(student1.studentDescription())
print(student2.studentDescription())
¿Por qué utilizar clases en lugar de structs?
La diferencia crucial entre class y struct en Swift radica en la capacidad de herencia de las clases. En la programación orientada a objetos, esto es fundamental para extender el comportamiento de las clases y reutilizar el código de manera eficiente. Mientras que las clases permiten crear jerarquías complejas y personalizadas, los structs son más eficientes para estructuras de datos que no necesitan heredar propiedades o métodos.
Ejemplo práctico de uso de clases avanzadas
Las clases permiten implementar comportamientos personalizados, lo cual es esencial para casos como estudiantes avanzados con características adicionales. Imaginemos que queremos añadir un sistema de calificaciones extra para trabajos realizados, algo que es posible gracias a la herencia y sobreescritura en Swift.
override public func studentDescription() -> String {
var description = super.studentDescription()
description += " - Puntos extra: \(extraPoints)"
return description
}
Este uso de la herencia y la sobreescritura en Swift permite generar sistemas complejos de una manera comprensible y eficiente.
¡Sigamos adelante!
El aprendizaje de Swift y la programación orientada a objetos te abre un mundo de posibilidades para crear aplicaciones poderosas y eficientes. Practica definiendo más clases y experimentando con la herencia en tus propios proyectos.