La programación orientada a objetos es uno de los paradigmas más utilizados en el mundo del desarrollo de software y lenguajes como C#, Java, PHP lo han adoptado de manera eficiente permitiendo estructurar codigo de manera más fácil y eficiente.
En este artículo quiero enseñarte:
- ¿Qué es POO y porque es importante?
- Los principales conceptos de programación orientada a objetos
- Ejemplos prácticos en Java.
También puedes revisar Fundamentos de Programación: Lo que necesitas para empezar
¿Qué es la Programación Orientada a Objetos?
La programación orientada a objetos (POO) es un paradigma de programación que se enfoca en la organización del código con una visión de objetos, los mismos que en la vida real representan entidades y contiene propiedades (atributos) y distintos comportamientos (métodos).
La programación orientada a objetos te facilita un enfoque de:
- Modularidad
- Reutilización del código
- Escalabilidad
- Seguridad
Las principales ventajas de usar un lenguaje de programación que tenga un enfoque orientado a objetos es la organización del código, la facilidad de mantenerlo y adaptarlo a cambios. Se puede reutilizar el código brindándote una mayor escalabilidad en proyectos grandes, puedes volver a tu sistema mas seguro por su detección y solución de errores en etapas tempranas.
Principales conceptos de la Programación Orientada a Objetos
Clases y Objetos
- Donde podemos tomar a las clases como una plantilla o modelo a partir del cual se crearán diferentes objetos.
- Los objetos no son más que una instancia de la clase con atributos y métodos específicos.
class Coche {
String marca;
int velocidad;
void acelerar() {
velocidad += 10;
System.out.println("Velocidad actual: " + velocidad);
}
}
public class Main {
public static void main(String[] args) {
Coche miCoche = new Coche(); // Crear un objeto de la clase Coche
miCoche.marca = "Toyota";
miCoche.acelerar(); // Llamar al método acelerar
}
}
Encapsulamiento
Consiste en proteger los datos de un objeto restringiendo el accedo directo a sus atributos y métodos. Mediante los modificadores de acceso puedes definir tu objeto o clase como private
, public
y protected
.
De esta manera evitas la manipulación indebida de los datos y mejoras significativamente la seguridad de tu aplicación.
class Persona {
private String nombre; // No se puede acceder directamente
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
}
Herencia
Tal cual como dice la palabra es dejarle algo a un objeto hijo, es decir la clase hija adquiere las propiedades y métodos de una clase padre. Esto reduce la redundancia y mejora la reutilización del código.
public class Animal {
private String nombre,tipo_alimentacion;
private int edad;
public Animal(String nombre,String tipo_alimentacion,int edad){
this.nombre = nombre;
this.tipo_alimentacion = tipo_alimentacion;
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getTipo_alimentacion() {
return tipo_alimentacion;
}
public void setTipo_alimentacion(String tipo_alimentacion) {
this.tipo_alimentacion = tipo_alimentacion;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
public class Perro extends Animal {
private String raza;
public Perro(String nombre,String tipo_alimentacion,int edad,String raza){
super(nombre,tipo_alimentacion,edad);
this.raza = raza;
}
public String getRaza() {
return raza;
}
public void setRaza(String raza) {
this.raza = raza;
}
public void mostrar(){
System.out.println(getNombre() + "-"+getTipo_alimentacion()+"-"+getEdad()+"-"+getRaza());
}
}
Polimorfismo
El polimorfismo consiste en que un mismo método puede tener varios comportamientos dependiendo del objeto que lo esté usando. De esta forma tu aplicación o programa se vuelve más flexible y escalable.
class Animal {
void hacerSonido() {
System.out.println("Hace un sonido");
}
}
class Gato extends Animal {
void hacerSonido() {
System.out.println("Miau Miau");
}
}
public class Main {
public static void main(String[] args) {
Animal miAnimal = new Gato(); // Polimorfismo
miAnimal.hacerSonido(); // Salida: Miau Miau
}
}
Aplicaciones prácticas de la POO
Puedes utilizar POO en diferentes ambientes de desarrollo de software por ejemplo al momento de desarrollar videojuegos ya que cada elemento del juego podría interpretarse como un objeto, en aplicaciones móviles, desarrollo web, y la más utilizada en las bases de datos que integran ORMs.