Logo FPCode

Introducción a la Orientación a Objetos

Conceptos fundamentales de la programación orientada a objetos: clases, objetos, encapsulado, relaciones y principios básicos.

La orientación a objetos es un paradigma de programación que organiza el software en unidades llamadas objetos, los cuales contienen datos y comportamiento relacionados. Este enfoque facilita la modelización del mundo real, promoviendo la reutilización, el mantenimiento y la escalabilidad del código. En este tutorial aprenderás los conceptos fundamentales de la orientación a objetos, como las clases, objetos, encapsulado, relaciones entre clases y los principios básicos que sustentan este paradigma.

  1. Clases: Atributos, Métodos y Visibilidad
  2. Objetos: Estado, Comportamiento e Identidad. Mensajes
  3. Encapsulado y Visibilidad
  4. Relaciones entre Clases
  5. Principios Básicos de la Orientación a Objetos

Una clase es una plantilla o molde que define las características comunes (atributos) y comportamientos (métodos) que los objetos creados a partir de ella tendrán.

  • Atributos: Son las propiedades o datos que describen el estado de una instancia de la clase. Por ejemplo, en una clase Coche, los atributos podrían ser color, marca o velocidad.
  • Métodos: Son funciones o procedimientos definidos dentro de una clase que representan el comportamiento o las acciones que los objetos pueden realizar. Por ejemplo, acelerar(), frenar().
  • Visibilidad: Determina el nivel de acceso a los atributos y métodos. Los modificadores comunes son:
    • public: accesible desde cualquier lugar.
    • private: accesible solo dentro de la propia clase.
    • protected: accesible dentro de la clase y sus subclases.

Esta encapsulación de datos y comportamientos facilita el control sobre cómo se manipulan los datos y protege la integridad del objeto.


Objetos: Estado, Comportamiento e Identidad. Mensajes

Sección titulada «Objetos: Estado, Comportamiento e Identidad. Mensajes»

Un objeto es una instancia concreta de una clase, con un estado particular definido por los valores actuales de sus atributos.

  • Estado: Es la información almacenada en los atributos del objeto en un momento dado.
  • Comportamiento: Se refiere a los métodos que el objeto puede ejecutar.
  • Identidad: Cada objeto tiene una identidad única, que lo diferencia de otros objetos, incluso si su estado es igual.

Los objetos se comunican entre sí enviándose mensajes, que usualmente corresponden a la llamada de métodos para solicitar acciones o intercambiar información. Esta comunicación permite la colaboración entre objetos para lograr comportamientos complejos.


El encapsulado es un principio fundamental que consiste en ocultar los detalles internos de un objeto, mostrando solo lo necesario a través de una interfaz pública.

  • Protege los datos restringiendo el acceso directo y evitando modificaciones no controladas.
  • Mejora la modularidad y facilita el mantenimiento y evolución del sistema.

La visibilidad controla qué partes de la clase son accesibles externamente. El uso adecuado de los modificadores de acceso (public, private, protected) permite definir claramente qué información es pública y cuál está protegida.


Las clases pueden relacionarse entre sí de distintas maneras, que reflejan cómo los objetos interactúan o se estructuran:

  • Asociación: Relación estructural donde un objeto usa o está conectado con otro. Puede ser unidireccional o bidireccional.
  • Agregación: Es una forma especial de asociación que representa una relación “todo-parte”, donde el ciclo de vida de las partes es independiente del todo.
  • Composición: Similar a la agregación, pero las partes dependen del todo para existir, y su ciclo de vida está ligado al objeto contenedor.
  • Herencia: Permite que una clase (subclase) herede atributos y métodos de otra clase (superclase), promoviendo la reutilización y extensión de código.
  • Polimorfismo: Aunque más un principio, se relaciona con la capacidad de usar objetos de distintas clases a través de una interfaz común.

Principios Básicos de la Orientación a Objetos

Sección titulada «Principios Básicos de la Orientación a Objetos»

Para diseñar sistemas orientados a objetos robustos y mantenibles, se deben tener en cuenta los siguientes principios:

  • Abstracción: Permite representar conceptos esenciales de un objeto sin incluir detalles innecesarios.
  • Encapsulamiento: Protección de datos e implementación interna.
  • Herencia: Reutilización de código y jerarquía de clases.
  • Polimorfismo: Capacidad de utilizar objetos de diferentes tipos a través de una interfaz común.

Además, conceptos como el principio de responsabilidad única (SRP), abierto/cerrado, sustitución de Liskov, segregación de interfaces y la inversión de dependencias (los principios SOLID) ayudan a mejorar el diseño orientado a objetos.


Este tutorial establece las bases necesarias para comprender y aplicar la programación orientada a objetos en cualquier lenguaje moderno, desde Java, C++, Python hasta C# o JavaScript.