Clases y Referencias: Comprender la Asignación en Programación
Clase 4 de 27 • Curso de Programación Orientada a Objetos en Swift
Contenido del curso
- 5

Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
04:49 - 6

Propiedades Lazy en Programación: Uso y Ventajas
07:17 - 7

Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
10:31 - 8

Variables de solo lectura en programación y su uso en estructuras y clases
05:14 - 9

Implementación de Observers en Propiedades de Clases en Swift
07:18 - 10

Variables estáticas en clases, estructuras y enumerados
09:19
- 11

Métodos en Clases y Estructuras: Creación y Uso Práctico
07:35 - 12

Métodos Mutantes en Estructuras y Enumerados en Swift
09:05 - 13

Métodos Estáticos y Herencia en Programación de Videojuegos
10:50 - 14

Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
09:02 - 15

Manipulación de Matrices y Subíndices en Programación
12:41 - 16

Herencia de Clases en Programación Orientada a Objetos
10:14 - 17

Sobrescritura de Métodos y Propiedades en Clases Derivadas
12:12
- 18

Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
06:51 - 19

Modificación de Constructores y Parámetros Opcionales en Swift
00:10 - 20

Constructores Designados y de Conveniencia en Herencia de Clases
09:38 - 21

Constructores y manejo de inicialización opcional en Swift
08:42 - 22

Destructores en Programación: Liberación de Recursos Automática
07:13
¿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!