No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
19 Hrs
30 Min
17 Seg

Clases y herencia

17/25
Recursos

¿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: "[email protected]", subjects: [mathSubject], scores: [70])
let student2 = AdvancedStudent(name: "María", age: 19, email: "[email protected]", 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.

Aportes 0

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?