Clases y Referencias: Comprender la Asignación en Programación
Clase 4 de 27 • Curso de Programación Orientada a Objetos en Swift
Resumen
¿Qué diferencia a las clases de otros tipos de datos?
La programación orientada a objetos cambia la forma en que trabajamos con datos al utilizar clases, que difieren de las estructuras y enumerados. En lugar de copiar sus valores, las clases utilizan referencias. Esto significa que al duplicar un objeto, no creamos dos instancias independientes, sino que tendremos dos referencias al mismo objeto. Al modificar una referencia, ambas se ven afectadas, ya que apuntan al mismo espacio en la memoria.
Esta característica, aunque desafiante al principio, es crucial para el manejo eficiente de objetos, evitando errores comunes en el desarrollo de software.
¿Cómo ajustar las propiedades de un objeto?
Regresemos al ejemplo práctico con la clase VídeoMouth
. Imaginemos que definimos distintas propiedades de resolución de video:
let tenEighty = VídeoMouth()
tenEighty.resolution = Resolution(width: 1920, height: 1080)
tenEighty.interlaced = false
tenEighty.frameRate = 25.0
En este caso, se ajustan las propiedades sin mayores complicaciones. Al tratarse de referencias a objetos y no de una copia, podemos alterar sus propiedades sin crear nuevas instancias. Sin embargo, ¡ten cuidado! Este código solo crea una referencia, y cualquier alteración afecta el objeto original por completo.
¿Qué sucede al copiar objetos?
Si creamos dos constantes:
let alsoTenEighty = tenEighty
Ambas referencias, tenEighty
y alsoTenEighty
, apuntan al mismo objeto. Si cambiamos la propiedad frameRate
de alsoTenEighty
a 30.0, este cambio también se reflejará en tenEighty
porque ambos son referencias al mismo objeto.
La clave es entender que ajustar la copia influye en la referencia original:
alsoTenEighty.frameRate = 30.0
print(tenEighty.frameRate) // Imprime 30.0
¿Cómo se comparan los objetos en Swift?
La comparación en Swift para verificar si dos referencias apuntan al mismo objeto es diferente a comparar valores primitivos. Una forma simplificada es utilizar el operador triple igual (===):
if tenEighty === alsoTenEighty {
print("Son el mismo objeto")
} else {
print("Son objetos diferentes")
}
Por otro lado, para comparar desigualdad se utiliza !==
:
if tenEighty !== anotherVídeoMouth {
print("Son objetos diferentes")
}
¿Qué recordar sobre la programación orientada a objetos?
Es vital recordar que, al utilizar clases, trabajamos con referencias, no copias. Esto es fundamental para evitar modificaciones accidentales y errores en el código. Los objetos en Swift no requieren punteros explícitos como en C++ o Objective-C, lo que simplifica la gestión de memoria.
Para crecer como desarrollador, este entendimiento es esencial. Así que mantente atento y disfruta explorando las clases y objetos en tus proyectos de programación. ¡Aprender a utilizarlos eficientemente te llevará a un nuevo nivel!