Clases y objetos – referencias, encapsulamiento y herencia

InformáticaAlgoritmos y resolución de problemasEdades 17–18

Usar con mi clase ✨ Personalizar con IA Informar de un problema

Ejecuta paso a paso pequeños programas en Python o Java que definen clases, crean objetos y llaman a métodos, y observa la memoria: las variables de la pila guardan flechas (referencias) hacia los objetos del montón, junto a un diagrama de clases UML. Seis ejemplos tratan constructores y estado, alias y null, objetos como parámetros y valores de retorno, encapsulamiento con getters y setters, herencia con sobrescritura y polimorfismo, y miembros estáticos. El modo Experimentar te deja crear objetos y copiar referencias tú mismo, y una Tarea de diseño te pide construir un diagrama de clases a partir de una especificación escrita.

Lección: Programación orientada a objetos: clases, objetos, referencias, encapsulamiento, herencia y polimorfismo

Qué muestra

Una clase es un plano que define atributos (datos) y métodos (comportamiento); cada objeto creado a partir de ella es una instancia con su propia copia de los atributos. Una variable de tipo clase no contiene el objeto, sino una referencia a él: asignar una variable a otra crea un alias, y una referencia puede ser null (None en Python). El encapsulamiento mantiene privados los atributos y los expone mediante métodos que pueden comprobar los valores. Una subclase hereda los miembros de su superclase y puede sobrescribir métodos; en ejecución, la clase real del objeto decide qué versión se ejecuta: eso es el polimorfismo.

Cómo usarla

Elige Ejecutar paso a paso, un Lenguaje y un Ejemplo; pulsa Paso o Ejecutar y sigue la línea resaltada, las flechas de la memoria y el método resaltado en el diagrama de clases. En Experimentar, crea objetos Account o SavingsAccount, copia referencias con Asignar y usa Llamar para ver alias, basura y sobrescritura. En Tarea de diseño, lee la especificación, haz clic en los miembros para colocarlos en las clases y pulsa Comprobar.

Parámetros que puedes cambiar

  • Modo Ejecutar paso a paso, Experimentar, Tarea de diseño
  • Ejemplo Clases, objetos y métodos, Referencias, alias y null, Objetos como parámetros y valores de retorno, Encapsulamiento: getters y setters, Herencia y polimorfismo, Miembros estáticos (de clase)
  • Lenguaje Python, Java
  • Velocidad de ejecución 0,5–5 pasos/s
  • Tarea de diseño Libro de biblioteca, Figuras (herencia), Estudiantes (miembros estáticos)

Preguntas para explorar

  1. ¿Por qué, después de c2 = c1 y c2.increment(), también cambia c1.count?
  2. ¿Por qué reset(p) no cambia la variable de quien llama, mientras que move_right(p, dx) sí cambia su objeto?
  3. En el bucle sobre pets, ¿por qué p.describe() da un sonido distinto para Dog y para Cat?