Ir al contenido principal

Introducción a la Programación Orientada a Objetos


La Programación Orientada a Objetos (POO) corresponde a un paradigma de programación en el cual los programas o software están conformados por Clases, las cuales se encuentran relacionadas y pueden crearse instancias llamados Objetos que se comunican pasándose mensajes. 

El paradigma de la POO nos lleva a una forma o estilo especial de programar aplicaciones software. Se basa en principios y patrones fundamentales que garantizan un software de calidad. Las características que definen a un software de calidad están basadas principalmente en la facilidad de cambio o mantenimiento y la fiabilidad. Estas son características que se pueden logran con la Programación Orientada a Objetos. 

Para entender el concepto, se plantea un caso en el cual se desea desarrollar un programa que permita ingresar el lado de un cuadrado y mostrar el cálculo del área. Primero se muestra el desarrollo del programa sin aplicar POO. El código muestra la implementación de una sola clase llamada Figura y un solo método principal que resuelve el caso. 

package com.sistemajava;

import java.util.Scanner;

public class Figura {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);        
        System.out.println("Figura Cuadrado");
        System.out.print("Ingrese el lado: ");
        int lado = entrada.nextInt();
        int area = lado * lado;
        System.out.println("El área es: " + area);
    }
    
}


Por último se muestra el desarrollo del programa aplicando POO. El código muestra la implementación de dos clases. Una clase llamada GestionarFigura con tres métodos, un método principal que llama a un método para ingresar datos y a otro método para mostrar datos. A parte, existe la clase Cuadrado, que representa a la figura geométrica que se desea utilizar. La clase Cuadrado tiene como atributo el lado y como método a calcularArea. El valor del atributo lado del objeto cuadrado se asigna mediante un método set y se puede recuperar mediante un método get. 

package com.sistemajava;

import java.util.Scanner;

public class GestionarFigura {

    public static void main(String[] args) {
        GestionarFigura gestionarFigura = new GestionarFigura();
        Cuadrado cuadrado = gestionarFigura.ingresarCuadrado();
        gestionarFigura.consultarCuadrado(cuadrado);
    }
    
    private Cuadrado ingresarCuadrado(){
        Scanner entrada = new Scanner(System.in);                
        System.out.println("Figura Cuadrado");
        System.out.print("Ingrese el lado: ");        
        int lado = entrada.nextInt();
        Cuadrado cuadrado = new Cuadrado();
        cuadrado.setLado(lado);
        return cuadrado;
    }
    
    private void consultarCuadrado(Cuadrado cuadrado){
        int area = cuadrado.calcularArea();
        System.out.println("El área es: " + area);
    }
}


La clase Cuadrado.

package com.sistemajava;

public class Cuadrado {
    private int lado;

    public int getLado() {
        return lado;
    }

    public void setLado(int lado) {
        this.lado = lado;
    }
    
    public int calcularArea(){
        return lado * lado;
    }
}


Haciendo la comparación entre las dos implementaciones, nos damos cuenta que con POO el programa se extiende a más clases, lo cual puede dar la impresión de hacer más complejo el desarrollo. Esto puede resultar cierto siempre y cuando estemos desarrollando aplicaciones de muy baja complejidad, pero en la mayoría de los casos el software que desarrollemos tendrá complejidad media o alta, sobre todo si nos orientamos al desarrollo de aplicaciones empresariales. En tal sentido, la POO es muy útil cuando desarrollamos aplicaciones con cierta complejidad, porque va a permitir organizar mejor la aplicación, lo cual facilita los cambios o las extensiones que pueda sufrir el software a lo largo de su ciclo de vida. Por ejemplo, para el caso planteado anteriormente, a la larga sería más complicado modificar o ampliar el primer programa si se desea agregar nueva funcionalidad como calcular y mostrar la diagonal y el perímetro del cuadrado. Esto porque hay que hacer los cambios en un mismo método, lo cual puede afectar lo que ya está implementado e incluso hace más difícil las pruebas porque el método aumenta su complejidad. En cambio, para el segundo programa, resultaría más simple porque se agregaría un par de métodos a la clase Cuadrado, uno para calcular la diagonal y otro para calcular el perímetro. Esto también favorece la reutilización debido a que los métodos están claramente diferenciados en su función y no mesclando diversos cálculos en un mismo método como sucede en el primer programa. 

Bueno, como conclusión  final se puede decir que en la POO se garantiza un código más legible y evita el código “espagueti” como sucede en el primer ejemplo desarrollado en donde en el mismo método se está capturando datos de entrada, se está calculando y se está mostrando datos.

Comentarios

Publicar un comentario

Gracias por tus comentarios

Entradas populares de este blog

Manejo de fechas en Java 8 con LocalDate

En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java 8: la clase  java.time.Period  que sirve para determinar rangos como el total de años entre dos fechas, la clase  java.time.format.DateTimeFormatter  que sirve para dar diversos formatos a la fecha, y principalmente la clase  java.time. LocalDate   que es un objeto de fecha y hora inmutable que representa una fecha, a menudo visto como año-mes-día, además permite realizar de forma simple diversas operaciones de fecha.

Calendario en Java con GregorianCalendar

En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, la clase  java.text.DateFormat  que sirve para dar formato a la fecha, y principalmente la clase  java.util. GregorianCalendar   que sirve para manipular fechas.

Formato de fechas en Java con SimpleDateFormat

En el programa desarrollado y mostrado en esta oportunidad, se han usado dos clases de la biblioteca de Java: la clase  java.util.Date  que sirve para crear una fecha actual del sistema, y la clase  java.text.SimpleDateFormat  que sirve para dar diversos formatos de impresión a la fecha.