¿Programación orientada a objetos (POO)?

La programación orientada a objetos (POO) es un paradigma de programación que se basa en dos conceptos principalmente clase y objeto. Comúnmente la POO se utiliza para poder separar un programa en segmentos simples y reutilizables de código (clases) estas son la base para crear instancias individuales llamadas objetos.

Principios de POO

La programación orientada a objetos se basa en los siguientes principios:

  • Encapsulamiento: La implementación y el estado de cada objeto se mantienen de forma privada dentro de un límite definido o clase. Otros objetos no tienen acceso a esta clase o la autoridad para realizar cambios, pero solo pueden llamar a una lista de funciones o métodos públicos. Esta característica de ocultación de datos proporciona una mayor seguridad al programa y evita la corrupción de datos no intencionada.

  • Abstracción: Los objetos solo revelan mecanismos internos que son relevantes para el uso de otros objetos, ocultando cualquier código de implementación innecesario. Este concepto ayuda a los desarrolladores a realizar cambios y adiciones más fácilmente a lo largo del tiempo.

  • Herencia: Se pueden asignar relaciones y subclases entre objetos, lo que permite a los desarrolladores reutilizar una lógica común sin dejar de mantener una jerarquía única. Esta propiedad de POO obliga a un análisis de datos más completo, reduce el tiempo de desarrollo y asegura un mayor nivel de precisión.

  • Polimorfismo: Los objetos pueden adoptar más de una forma según el contexto. El programa determinará qué significado o uso es necesario para cada ejecución de ese objeto, reduciendo la necesidad de duplicar código.

    Cabe resaltar que en el polimorfismo por lo general hay 3 y tipos los mencionaré, pero escribiré de ellos más a fondo en otro post.

    • Sobrecarga: El más conocido y se aplica cuando existen funciones con el mismo nombre en clases que son completamente independientes una de la otra.
    • Paramétrico: Existen funciones con el mismo nombre, pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se envíe.
    • Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.

¿Que ventajas tiene la POO?

La POO no es el único paradigma que existe ni se plantea que sea el mejor, recuerda siempre es bueno considerar ventajas y desventajas antes de usar cualquier herramienta, en este caso sus ventajas son las siguientes:

  • POO modela cosas complejas como estructuras simples y reproducibles

  • Los objetos POO reutilizables se pueden usar en todos los programas.

  • Permite un comportamiento específico de clase a través del polimorfismo.

  • Más fáciles de depurar, las clases a menudo contienen toda la información aplicable.

  • Seguro, protege la información mediante encapsulación

Algunos lenguajes de programación orientada a objetos

  • C++
  • C#
  • Fortran
  • JavaScript
  • Objetive-C
  • Java
  • R
  • Perl
  • PHP
  • Python
  • Ruby
  • Swift
  • Visual Basic
  • Scala
  • Dart

Manos a la obra

Muy bien ya vimos algo de teoría ahora vamos al código con un ejemplo simple, como ya se mencionó POO modela cosas. En este caso haremos una clase Persona, como se puede ver tiene las propiedades nombre, edad y ocupación (El ejemplo lo haremos con java).

class Persona {
  private String nombre;
  private int edad;
  private String ocupacion; 

  public Persona(String nombre, int edad, String ocupacion) {
    this.nombre = nombre;
    this.edad = edad;
    this.ocupacion = ocupacion;
  }

  public void saludo() {
    System.out.print(
      "Hola mi nombre es " + nombre 
      + " tengo " + edad 
      + "años y soy " + ocupacion
    );
  }
}

Haremos un objeto de esta clase el cual será individual quiere decir que tendrá propiedades de la clase pero sus propios valores.

Persona programador = new Persona("Hugo", 24, "programador");
programador.saludo();

Al ejecutar el método saludo obtendremos como salida lo siguiente.

Hola mi nombre es Hugo tengo 24 años y soy programador

Podemos tener n número de objetos cada uno con sus propios valores, por ejemplo.

Persona dentista = new Persona("Karla", 25, "dentista");
Persona arquitecto = new Persona("Pedro", 30, "arquitecto");
Persona barbero = new Persona("Juan", 22, "barbero");

Conclusión

La programación orientada a objetos requiere pensar en la estructura de cada entidad y planificar al comienzo de la codificación. Mirando cómo dividir los requisitos en clases simples y reutilizables que se pueden usar para diseñar instancias de objetos. En general, la implementación de POO permite mejores estructuras de datos y capacidad de reutilización, lo que ahorra tiempo a largo plazo.