Mas interrogantes que en un examen de matematicas
-Juan Gabriel
Estructuras y Clases
Programación Orientada a Objetos en Swift: Nivel Avanzado
Estructuras vs Clases en Programación Orientada a Objetos
Estructuras y Enumerados en Swift: Valores por Copia vs Referencia
Clases y Referencias: Comprender la Asignación en Programación
Tipos de Propiedades
Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
Propiedades Lazy en Programación: Uso y Ventajas
Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
Variables de solo lectura en programación y su uso en estructuras y clases
Implementación de Observers en Propiedades de Clases en Swift
Variables estáticas en clases, estructuras y enumerados
Métodos, subíndices y herencia
Métodos en Clases y Estructuras: Creación y Uso Práctico
Métodos Mutantes en Estructuras y Enumerados en Swift
Métodos Estáticos y Herencia en Programación de Videojuegos
Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
Manipulación de Matrices y Subíndices en Programación
Herencia de Clases en Programación Orientada a Objetos
Sobrescritura de Métodos y Propiedades en Clases Derivadas
Inicializadores o constructores
Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
Modificación de Constructores y Parámetros Opcionales en Swift
Constructores Designados y de Conveniencia en Herencia de Clases
Constructores y manejo de inicialización opcional en Swift
Destructores en Programación: Liberación de Recursos Automática
Encadenamiento opcional
Encadenamiento de Valores Opcionales en Programación
Modelado de Clases en Swift: Residencias y Habitaciones
Acceso seguro a propiedades y métodos en programación orientada a objetos
Encadenamiento de Opcionales en Programación Avanzada
Conclusión
Desarrollo de Aplicaciones Móviles con Swift
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En la programación orientada a objetos, es crucial comprender cómo enlazar distintas clases para reflejar correctamente nuestras relaciones de datos en un sistema. En el caso del ejemplo que tenemos aquí, una dirección debe estar vinculada a una residencia, mientras que esta residencia puede estar relacionada con múltiples personas. Así, hemos establecido que la clase de dirección está asociada directamente con la residencia, dejando a las personas y las habitaciones como elementos dependientes.
Es esencial entender que, en programación, ciertas propiedades o relaciones pueden no estar siempre definidas; es por esto que introducimos el concepto de opcionales
. Un opcional nos permite indicar que una relación o propiedad no es necesaria, aportando flexibilidad al diseño del sistema. Usamos el símbolo de interrogante (?
) para definir una propiedad como opcional. Por ejemplo, una residencia puede o no tener una dirección establecida.
Cuando tratamos con opcionales, es crucial evitar errores. Aquí es donde entran en juego técnicas como:
residencia?.direccion
nos permite preguntar si la residencia posee una dirección antes de acceder a ella.if let
o guard let
para asegurar que los valores no son nulos antes de proceder con operaciones que dependan de ellos.Consideremos el escenario de configurar una dirección en una residencia solo si esta existe. Para esto, podemos encapsular nuestra lógica en funciones y usar opcionales para asegurar que operaciones como définer una dirección solo se intentan si los objetos necesarios existen. Ejemplo:
func createAddress() -> Address? {
print("La función ha sido llamada")
let address = Address(buildingNumber: 13, streetName: "Calle de Platzi")
return address
}
if let edgarResidence = edgar.residencia {
edgarResidence.direccion = createAddress()
} else {
print("Seguimos sin saber dónde vive Edgar")
}
Para invocar métodos en elementos opcionales sin causar errores de ejecución, podemos usar el encadenamiento seguro:
edgar.residencia?.printNumberOfRooms()
Al manejar colecciones dentro de opcionales, el encadenamiento seguro también es vital. Permite trabajar con elementos como habitaciones de una residencia sin temor a acceder a algo que no existe:
if let firstRoom = edgar.residencia?[0] {
print("La primera habitación es de: \(firstRoom.name)")
} else {
print("No sabemos de quién es la primera habitación")
}
Una vez que hemos establecido y comprendido el uso correcto de opcionales, la programación segura se transforma en algo intuitivo. Además, permite que nuestros programas sean más robustos y manejables cuando se enfrentan con la variabilidad de datos del mundo real. Es fundamental seguir creando, explorando y utilizando estas técnicas para seguir mejorando nuestras aplicaciones. ¡Sigue adelante y no dejes de aprender!
Aportes 6
Preguntas 0
Mas interrogantes que en un examen de matematicas
-Juan Gabriel
Para mí, todo lo que se hace aquí es de sentido común, es como en la realidad, yo no puedo hacer habitaciones de una casa que no existe.
Ahora Edgar vive mejor que yo
Comprobar con los prints >.<.
Excelente !!
let bathroom = Room(name: "Bathroom")
let livingRoom = Room(name: "Living Room")
let kitchen = Room(name: "Kitchen")
let joseHouse = Residence()
joseHouse.rooms.append(contentsOf: [bathroom, livingRoom, kitchen])
jose.residence = joseHouse
Que bonito es lo bonito!!!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?