POO Programación Orientada a Objetos

¿Que es?

La programación orientada a objetos (POO) es un paradigma de programación, es decir una forma o cierta peculiaridad de proceder, en este caso se fundamenta en el concepto de objetos, los cuales son entidades que tienen atributos (datos) y comportamientos (métodos).

Los objetos pueden clasificarse en clases, que son modelos que definen las características y funcionalidades comunes de un conjunto de objetos. Una clase se puede entender como una guía o esqueleto para crear objetos. Funciona como una plantilla o ideal que establece los atributos característicos de un determinado tipo de objeto y los métodos que se pueden utilizar para interactuar con esos objetos. Al nosotros definir una clase, se especifican las propiedades y comportamientos que estarán presentes en los objetos creados a partir de esa clase. Esta abstracción permite encapsular la lógica y los datos relacionados en un solo lugar, lo que promueve la reutilización de código y facilita el mantenimiento del programa. Al utilizar clases, se fomenta una estructura organizada y modular, lo que contribuye a una programación más eficiente y estructurada.

 Además, la utilización de clases en la programación orientada a objetos facilita la comprensión y colaboración en equipos de desarrollo, ya que se proporciona una forma clara y coherente de definir y trabajar con objetos en un especifico sistema. Las clases pueden relacionarse entre por medio de la herencia (cuando una clase comparte las propiedades de otra clase) o la composición (cuando una clase comparte propiedades de otra clase como parte de sus atributos). 

    //Clase llamada Persona
    public class Persona {
    // Atributos
    private String nombre;
    private int edad;
    
    // Constructor
    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }
    
    // Métodos
    public void saludar() {
        System.out.println("Hola, mi nombre es " + nombre);
    }
    
    public void cumplirAnios() {
        edad++;
    }
    
    // Getter y Setter
    public String getNombre() {
        return nombre;
    }
    
    public int getEdad() {
        return edad;
    }
    
    public void setEdad(int edad) {
        this.edad = edad;
    }
}

La programación orientada a objetos tiene varias ventajas, como:

– Facilita la creación de módulos de código reutilizables, ya que se pueden crear objetos a partir de clases creadas y utilizarlos en diferentes partes del programa.
– Se promueve la abstracción y el encapsulamiento, permitiendo ocultar la implementación interna de los objetos y exponiendo únicamente las interfaces públicas que definen su comportamiento.
– Admite el polimorfismo y el ligado dinámico, ya que se puede tratar a los objetos de diferentes clases como si fueran del mismo tipo y ejecutar el método adecuado según el objeto real en tiempo de ejecución.
– Favorece y simplifica el diseño e implementación de sistemas complejos, ya que se puede modelar el problema en términos de objetos que interactúan entre sí.

Ejemplo de nuestra clase padre

   // Clase base: Empleado
    public class Empleado {
    protected String nombre;
    protected double salario;

    public Empleado(String nombre, double salario) {
        this.nombre = nombre;
        this.salario = salario;
    }
    public abstract void trabajar();

    public String getNombre() {
        return nombre;
    }

    public double getSalario() {
        return salario;
    }
}

En este ejemplo podemos evidenciar que  tenemos una clase padre llamada Empleado  la cual define los atributos comunes como el nombre y el salario, y un método abstracto trabajar() el cual que debe ser implementado por las clases derivadas.

Ejemplo de nuestra clase hijo

  public class Desarrollador extends Empleado {
    private String lenguaje;

    public Desarrollador(String nombre, double salario, String lenguaje) {
        super(nombre, salario);
        this.lenguaje = lenguaje;
    }

    @Override
    public void trabajar() {
        System.out.println(nombre + " está programando en " + lenguaje);
    }
}

La programación orientada a objetos se puede aplicar en diversos lenguajes de programación, como Java, C++, Python, Ruby, entre otros.