← Lumbre

Programación Orientada a Objetos · 2.º Encapsulamiento y propiedades

← Volver a todos los contenidos
Portada de Encapsulamiento y propiedades

Encapsulamiento y propiedades

✦ Encapsular no es esconder por capricho: es proteger la coherencia del objeto y permitirle cambiar por dentro sin romper a quien lo usa · Programación Orientada a Objetos · Programación · 4 minutos que valen la pena

Roadwise Consulting

Firmado y verificado · Fernando Castro

Objetivo: Aplicar el encapsulamiento para proteger el estado interno de un objeto y usar propiedades para validar o computar atributos con interfaz limpia.

4 min 18–30 años
Autoevaluación
Más
Encapsulamiento y propiedades

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Objetos Cursos Explorar Mi cuenta Salir del modo estudio

Encapsulamiento y propiedades

Ilustracion de programacion orientada a objetos: jerarquia de clases con herencia y encapsulamiento.
Principios de la programacion orientada a objetos: clases, herencia y polimorfismo.

Mapa conceptual

  • Estructuras de Datos
    • Lineales
      • Arrays
      • Listas enlazadas
      • Pilas y Colas
    • No lineales
      • Arboles BST
      • Heaps
      • Grafos
    • Hash
      • Funcion hash
      • Colisiones
      • Rehashing
    • Algoritmos
      • Ordenamiento
      • Busqueda binaria
      • BFS DFS
    • Optimizacion
      • Big-O
      • Dinamica
      • Voracidad

¿Qué es encapsular?

Encapsular es ocultar el estado interno de un objeto y exponer solo una interfaz controlada (métodos). Quien usa el objeto no manipula sus entrañas, sino que pide operaciones. Así el objeto puede cambiar su implementación sin romper a nadie.

El problema de exponer todo

Si un atributo público se escribe desde cualquier parte, la coherencia se pierde: alguien asigna una edad negativa o un saldo imposible. La validación se dispersa por todo el código y siempre hay un sitio que se olvida de comprobar.

Getters y setters

La solución clásica es leer con un getter y escribir con un setter que valide. Python lo ofrece sin ceremonia mediante property: defines un método y lo expones como si fuera un atributo normal, pero por detrás se ejecuta tu código de control.

Propiedades computadas

Una property puede además calcular un valor al vuelo, sin almacenarlo: «edad» derivada de la fecha de nacimiento, «área» derivada del radio. El usuario accede como atributo; tú decides si lee, calcula o valida.

Empieza por atributos simples; envuelve en property solo cuando aparezca una regla.
MecanismoPara quéVentaja
Atributo públicodatos triviales sin reglassimpleza
property getterleer con lógica o cálculointerfaz de atributo
property settervalidar al escribirinvariante concentrada
atributo _privadoseñal de internoconvención de uso

¿Cuál es el objetivo principal del encapsulamiento?

Privado en Python

Python no tiene privados estrictos: un nombre con guion bajo inicial (_x) avisa «esto es interno» por convención; con doble guion bajo (__x) se renombra para evitar choques. La filosofía es de confianza con señal clara, no de muros impenetrables.

La ley de Demeter y el diseño

Un objeto debe exponer lo que necesita el mundo, no cómo lo resuelve internamente. Cuanto menos dependa el cliente del detalle interno, más libre eres para refactorizar. El encapsulamiento bien entendido es baja coupling.

En Python, convertir un atributo público en una property puede hacerse sin cambiar el código de quien lo usa.

Cuándo NO encapsular en exceso

No todo merece un getter/setter. Un simple punto con coordenadas puede ir público. Encapsular en exceso añade ruido. La regla práctica: encapsula cuando hay una invariante que proteger o un cálculo que ocultar.

Errores frecuentes

  • Validar en el setter y olvidar que el atributo pudo inicializarse por otra vía.
  • Hacer una property tan lenta que leer el atributo por error costísimo.
  • Exponer un objeto mutable interno que el cliente luego modifica a sus anchas.

Clasifica cada decisión de diseño:

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Toma una clase Cuenta con un atributo saldo. Diseña una property que impida saldos negativos y explica qué ventaja le da al resto del programa frente a dejar saldo público.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.

Autoevaluación

Comprueba lo que aprendiste

2 preguntas · ves cada respuesta al momento · el resultado queda guardado en tu historial

Iniciar autoevaluación
Más sobre esta lección

Rutas vivas

¿Y ahora qué? Elige el camino por lo que necesitas

No es un listado al azar: cada camino responde una pregunta distinta y te dice por qué.

Otra forma de comprenderlo

✦ Explorar el universo completo
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.