# data[].attributes.body
La plantilla o molde a partir del cual se crean los objetos.

# data[].attributes.body
Una entidad concreta creada a partir de una clase. Es la materialización de una clase.

# data[].attributes.body
Las características o datos que definen al objeto. Son como sus adjetivos (se añaden en la clase).

# data[].attributes.body
Las acciones o comportamientos que puede realizar el objeto. Son como sus verbos.

# data[].attributes.body
Es un paradigma de programación que organiza el diseño de software en base a objetos, los cuales contienen tanto datos (atributos) como comportamientos (métodos). Se basa en el concepto de modelar elementos del mundo real.

# data[].attributes.body
Simplificar un elemento complejo del mundo real, extrayendo solo las características y comportamientos relevantes para nuestro programa.

# data[].attributes.body
Consiste en ocultar los detalles internos de una clase y restringir el acceso a los datos (atributos). Se accede a ellos a través de métodos públicos y protege la integridad del objeto.

# data[].attributes.body
Permite que una clase herede atributos y métodos de otra clase. La clase que hereda se llama clase hija (o subclase) y la clase de la que hereda es la clase padre (o superclase). Permite reutilizar código y crear jerarquías.

# data[].attributes.body
Significa "muchas formas". Permite que un mismo método se comporte de manera diferente dependiendo del objeto que lo ejecute.

# data[].attributes.body
La POO permite modelar software de una manera que refleja el mundo real, utilizando objetos que combinan datos (atributos) y acciones (métodos). Esto hace que los sistemas complejos sean más fáciles de entender, diseñar y mantener.

# data[].attributes.body
Al basarse en clases (planos) y objetos (instancias), la POO introduce un alto nivel de organización en el código, facilitando la colaboración entre desarrolladores y la escalabilidad de los proyectos.

# data[].attributes.body
Gracias a la herencia, se puede reutilizar código existente, evitando la duplicación y ahorrando tiempo en el desarrollo. Los pilares de la encapsulación y el polimorfismo aseguran que este código reutilizado sea seguro y flexible.

# data[].attributes.body
La encapsulación protege la integridad de los datos al ocultar los detalles internos de una clase. Esto previene errores y modificaciones accidentales, creando un código más robusto y confiable.

# data[].attributes.body
La POO es el paradigma fundamental detrás de la mayoría de los lenguajes de programación modernos como Java, C++, Python, C#. Comprender sus principios es esencial para cualquier desarrollador y para entender cómo se construyen las aplicaciones actuales.

# data[].attributes.body
Las clases se pueden usar como moldes para crear múltiples objetos, y se pueden heredar para extender su funcionalidad sin modificar el código original.

Las clases se pueden usar como moldes para crear múltiples objetos, y se pueden heredar para extender su funcionalidad sin modificar el código original.

Al estar el código bien estructurado y encapsulado, es más fácil encontrar y corregir errores, y hacer actualizaciones.

Permite añadir nuevas funcionalidades con menos esfuerzo, ya que se basa en la creación de nuevas clases que interactúan con las existentes.

# data[].attributes.body
Analizamos el problema para encontrar las entidades o "cosas" relevantes en un sistema de biblioteca

Por cada objeto, creamos una clase que actúe como su molde.