← → para navegar  |  ESC para ir al inicio
FICCT · UAGRM · Programación I · 2026
Programación
Orientada a
Objetos
Conceptos fundamentales
expresados en el lenguaje Rust
struct impl pub trait composición
1 Concepto 1 de 5
struct
La unidad de datos
Un struct agrupa datos relacionados bajo un nombre. Es el molde que define qué características tiene un objeto antes de existir.
Analogía
"El struct es el plano de una casa. Describe cuántas habitaciones tiene, si hay jardín, su dirección. La casa real (la instancia) se construye a partir de ese plano."
¿Qué define un struct?
🏷
Nombre en PascalCase
Por convención en Rust, los structs se nombran con la primera letra de cada palabra en mayúscula: Estudiante, CuentaBancaria.
📦
Campos con nombre y tipo
Cada campo tiene un identificador y un tipo de dato estático. Rust exige conocer el tipo de cada campo en tiempo de compilación.
🔁
Instancia = objeto concreto
Definir el struct es crear el molde. Para tener un objeto con valores reales se debe crear una instancia, asignando un valor a cada campo.
Un struct por sí solo solo almacena datos. El comportamiento se agrega por separado en el bloque impl.
2 Concepto 2 de 5
impl
El comportamiento del objeto
El bloque impl define qué puede hacer el objeto. Agrupa los métodos que pertenecen a un struct: sus acciones, su lógica interna y su constructor.
Analogía
"Si el struct es el plano de la casa, el impl es el manual de uso: encender la calefacción, abrir la puerta, calcular el consumo eléctrico."
Tipos de métodos en impl
Constructor — fn new()
Método asociado que crea y devuelve una instancia del tipo. Rust no tiene la palabra clave constructor, pero la convención new() es universal en todo el ecosistema.
Método de lectura — &self
Accede a los datos del objeto sin modificarlos. El parámetro &self es la referencia al objeto actual, equivalente a this en Java.
Método de escritura — &mut self
Puede modificar los campos del objeto. Requiere que la instancia sea declarada como mutable. La mutabilidad es explícita en Rust.
La presencia de &self es lo que distingue a un método de instancia de una función común. Sin él, el método es "estático" y no pertenece a ninguna instancia.
3 Concepto 3 de 5
pub
Encapsulamiento y visibilidad
Rust es privado por defecto. Todo campo, método y struct es invisible desde fuera del módulo a menos que sea marcado explícitamente con pub.
Analogía
"Un cajero automático. El saldo es privado: nadie lo toca directamente. Solo se puede interactuar a través de los métodos que el banco expone (depositar, retirar). El banco controla las reglas."
Reglas de visibilidad
Modificador Alcance de visibilidad
(sin pub) Privado al módulo actual
pub Público: accesible desde cualquier lugar
pub(crate) Solo dentro del mismo crate (proyecto)
pub(super) Solo en el módulo padre
El struct puede ser público pero sus campos privados. Así se obliga a interactuar solo a través de los métodos.
Esto garantiza que el estado interno siempre sea válido: los métodos validan los datos antes de cambiarlos.
En Java lo privado es la excepción. En Rust, la privacidad es el estado natural y lo público es la decisión deliberada.
4 Concepto 4 de 5
trait
Contratos de comportamiento
Un trait define un contrato: el conjunto de métodos que cualquier tipo que lo implemente debe proveer. Es el mecanismo de Rust para el polimorfismo.
Analogía
"Un contrato laboral. Dice: 'para trabajar aquí debes saber presentarte()'. No importa si eres Estudiante o Docente. Mientras firmes el contrato (implementes el trait), puedes participar."
Capacidades del trait
Define firmas de métodos
Declara qué métodos debe tener el tipo que lo implemente, sin especificar cómo. Cada struct define su propia versión del comportamiento.
Implementación por defecto
Un trait puede incluir métodos con cuerpo que los tipos usan directamente sin necesidad de redefinirlos, a menos que quieran sobreescribirlos.
Polimorfismo con &dyn Trait
Una función puede aceptar cualquier tipo que implemente un trait. En tiempo de ejecución, Rust llama al método correcto según el tipo real del objeto.
Un struct puede implementar múltiples traits al mismo tiempo. Un trait puede ser implementado por cualquier número de structs.
5 Concepto 5 de 5
composición
Objetos dentro de objetos
La composición es la forma en que Rust construye tipos complejos: un struct puede contener otros structs como campos. Es la alternativa a la herencia.
Analogía
"Un automóvil tiene un motor, tiene ruedas, tiene una dirección. No es una subclase de motor. Lo contiene. Si el motor puede usarse en otro vehículo, mejor aún."
Composición vs. Herencia
Aspecto Herencia (Java) Composición (Rust)
Relación "es un" "tiene un"
Disponible en Rust No
Reutilización Hereda código Delega al campo
Visualización
struct Estudiante
nombre, carnet, nota
📍
struct Direccion
ciudad, pais — campo compuesto
Direccion puede reutilizarse en Docente, Empresa, Sucursal…