Estructuras vs Clases en Programación Orientada a Objetos
Clase 2 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é son las estructuras y clases en programación orientada a objetos?
La programación orientada a objetos (POO) es un pilar esencial en el mundo de la programación moderna. Este enfoque organiza el software en unidades llamadas "objetos", los cuales permiten almacenar datos y comportamientos concretos. En este contexto, es fundamental entender las diferencias y similitudes entre dos conceptos: estructuras y clases. Estos se utilizan para definir y organizar datos y funcionalidades en la programación, pero presentan características particulares que debes dominar.
¿Cuáles son las similitudes entre estructuras y clases?
Tanto las estructuras como las clases comparten varios puntos comunes que se deben tener en cuenta:
- Almacenamiento de propiedades: Ambas permiten definir propiedades que pueden ser constantes o variables dentro de su cuerpo.
- Definición de métodos: Los métodos son funciones asociadas a la estructura o clase y sirven para manipular los datos que estas contienen.
- Inicializadores (Constructores): Se utilizan para crear instancias de estructuras o clases, definiendo su estado inicial.
- Extensión de funcionalidades: Puedes extender estructuras y clases con nuevas funcionalidades, permitiendo así su adaptación a futuras necesidades.
- Conformidad con protocolos: Ambos pueden adherirse a protocolos, lo que permite implementar funcionalidades que no se encuentran en la estructura o clase original.
¿En qué se diferencian las estructuras de las clases?
Aunque comparten muchas similitudes, las estructuras y las clases también presentan diferencias críticas:
- Herencia: Solo las clases pueden heredar de otras clases, ofreciendo la posibilidad de extender o especializar su funcionalidad.
- Casting: Las clases permiten reinterpretar valores de un tipo a otro, lo cual es clave para la flexibilidad en la programación.
- Dealizadores (Deinitializers): En las clases, estas funciones son útiles para liberar memoria al dejar de utilizar una instancia, a diferencia de las estructuras que no cuentan con esta característica.
- Reference Counting: Es un mecanismo implementado en las clases para rastrear cuántas referencias existen a un objeto en tiempo de ejecución, crucial para el manejo de memoria.
¿Cómo se crean y utilizan las estructuras y clases en Swift?
La sintaxis para definir una estructura o una clase es bastante similar en Swift. A continuación se presenta cómo se hace:
Definición de una estructura
struct Resolucion {
var ancho: Int = 0
var altura: Int = 0
}
Definición de una clase
class ModoVideo {
var resolucion = Resolucion()
var interlaced = false
var frameRate = 0.0
var nombre: String? = nil
}
La sintaxis es clara y define estructuras como 'struct' y clases como 'class'. La elección entre usar una estructura o una clase dependerá de las necesidades específicas de tu proyecto.
Ejemplo práctico: manipulando estructuras y clases
Supongamos que creamos instancias de estas definiciones. Cuando trabajamos con una estructura, esta se comporta como un tipo de valor:
let resolucionSon = Resolucion()
Modificar sus propiedades no es posible si lo instanciamos con let, ya que lo convierte en una constante inmutable. Esto es así para garantizar que la estructura conserve sus valores una vez asignados.
En cambio, al usar una clase, aunque se declare con let, sus propiedades internas pueden modificar su valor:
let modoVideoSon = ModoVideo()
modoVideoSon.frameRate = 30.0 // Modifiable
En este escenario, modoVideoSon puede cambiar su frameRate porque una clase es un tipo de referencia. Esto significa que trabaja sobre un espacio fijo en la memoria que permite actualizar el estado de la instancia.
Comprender estas diferencias y similitudes ofrece una ventaja significativa al diseñar sistemas más eficientes y organizados. Te animamos a seguir explorando y practicando para dominar el fascinante mundo de la programación orientada a objetos.