¿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.