sábado, 1 de junio de 2013

Que es un objeto en POO

En otras épocas la programación estructurada reinaba en el mundo de la informática, lenguajes como el C  formaban y forman parte de esta manera de programar.
La programación estructurada consiste en poder escribir un programa respetando un conjunto de reglas y técnicas determinadas.
Un programa en un lenguaje procedimental es un conjunto de sentencias o instrucciones, los lenguajes como C, Pascal, FORTRAN, son procedimentales es decir orientados a procedimientos, cada sentencia indica al compilador que realice una tarea determinada, por ejemplo sumar 4 números, mostrar por pantalla un resultado.
En pequeños programas estos principios de organización llamados "paradigma" resultaban eficientes, pero al crecer en tamaño, manipular los mismos se volvía un problema para los programadores, la solución fue descomponer el programa en fragmentos mas pequeños llamados funciones. Este concepto fue evolucionando con el paso del tiempo y determinadas falencias que presentaba este enfoque de programación fue subsanado con la aparición de la programación orientada a objeto.

El paradigma de orientación a objetos (POO)

En el POO, el programa se organiza como un conjunto finito de objetos que contienen datos y operaciones que llaman a esos datos y que se comunican entre si mediante mensajes.

Entre sus propiedades fundamentales se encuentran:

-Abstraccion de datos y clases
-Polimorfismo
-Herencia
-Encapsulado de datos
-Ocultación de datos

Los lenguajes orientados combinan en una única unidad o módulo, tanto los datos como las funciones que operan sobre esos datos. A esa unidad se la llama OBJETO.
Si se pretende modificar algo de ese objeto deben utilizarse los métodos( funciones) propios de ese objeto.

Pero claro hasta aquí puede no quedar claro que es un objeto realmente, cuando nosotros miramos a nuestro alrededor podemos observar muchos ejemplos de objetos que en el universo del software presentan similitudes, un auto, una persona, una lampara, un perro, representan objetos que se caracterizan por presentar lo siguiente:

-Un estado
-Un Comportamiento

Los estados son almacenados en campos y los comportamientos se muestran mediante métodos.

objetos-java

Vamos a suponer que tenemos un objeto oso, los estados que podemos tener pueden ser:

-Nombre
-Especie (Polar, Panda, Bezudo, Malayo)
-Alimentación (Herbívoro, Carnívoro)
-Edad

Ahora pensemos algunos comportamientos:

-Gruñir
-Dormir
-Comer
-Correr

Un ejemplo simple en java podría ser el siguiente:

package animalesDelBosque;

public class Oso
{ /* Se crea la clase Oso la cual tendra estados y metodos */

private String nombre;
private String especie;
private String alimentacion;
private int edad;

// Se crea el constructor Oso
public Oso(String nombres,String especies,String alimentaciones,int edades)
{
setNombre(nombres);
setEspecie(especies);
setAlimentacion(alimentaciones);
setEdad(edades);
}

// Se crean los getters and setters que me permiten modificar los valores de las variables

public String getNombre()
{
return this.nombre;
}

public String getEspecie()
{
return this.especie;
}

public String getAlimentacion()
{
return this.alimentacion;
}

public int getEdad()
{
return this.edad;
}


public void setNombre(String nombres)
{
this.nombre=nombres;
}

public void setEspecie(String especies)
{
this.especie=especies;
}

public void setAlimentacion(String alimentaciones)
{
this.alimentacion=alimentaciones;
}

public void setEdad(int edades)
{
this.edad=edades;
}

// Se programan los metodos gruñir() y dormir()

public void gruñir()
{
System.out.println("Soy un oso que gruñe GRRRRRRR");
}

public void dormir()
{
System.out.println("Soy un oso que duerme ZZZZZZZZ");
}


// En el main vamos a instanciar los objetos oso necesarios.

public static void main(String[] args)
{

Oso a= new Oso("Jason","Polar","Carnivoro",3);
Oso b= new Oso("Lucas","Panda","Herbivoro",6);
Oso c= new Oso("Tito","Malayo","Herbivoro",1);
System.out.println("Soy un oso llamado:"+a.getNombre()+" "+"y"+" "+"Mi especie es:"+a.getEspecie());
System.out.println("Soy un oso llamado:"+c.getNombre()+" "+"y"+" "+"Mi edad es:"+c.getEdad());
System.out.println("Hola soy:"+b.getNombre());
a.dormir();
a.gruñir();
}

}

Y como salida obtendremos el siguiente resultado:

Soy un oso llamado:Jason y Mi especie es:Polar
Soy un oso llamado:Tito y Mi edad es:1
Hola soy:Lucas
Soy un oso que duerme ZZZZZZZZ
Soy un oso que gruñe GRRRRRRR

Una breve explicación

En el caso del ejemplo creamos una clase Oso, donde definimos sus estados y métodos,  luego en el main vamos a instanciar los objetos que consideremos necesarios

Oso a= new Oso("Jason","Polar","Carnivoro",3);
  
Aquí instanciamos un objeto "a" de clase Oso, y ademas le indicamos los parámetros correspondientes con la definición de estados que realizamos: nombre, especie, alimentación y edad.

Ahora "a" sera un objeto que va a tener asociados determinados métodos, que se podrán invocar de la siguiente manera:

a.dormir();
a.gruñir();
a.getNombre();

Espero que haya quedado un poco mas claro que es un objeto y el potencial que tienen los objetos para resolver problemas.



No hay comentarios:

Publicar un comentario