Bueno amigos ya esto lo han preguntado muchas veces y aqui les respondo a todos de una vez, esta es una humilde explicacion con mis propias palabras.
Me imagino que si estas leyendo este post ya usted sabe programar o le interesa programar en algun lenguaje de programacion, bien, estos se clasifican segun la forma en que trabajan, es decir como deben ser usados, es decir a que estan orientados xD.
Una de las formas de la programacion mas conocidas es la programacion estructurada, la cual consiste en una logica simple secuencial, en la cual la unidad de la programacion son las funciones, y una funcion puede llamar a otra funcion y asi sucesivamente, bien en vista de que esto aveces podia volverse un ocho, surgio un nuevo tipo de programacion, la orientada a objetos.
La POO (programacion orientada a objetos) es un estilo de programacion, una de forma de pensar, un paradigma de la programacion.
Esta consiste es que la unidad de la programacion ya no seran las funciones, sino los objetos. Hasta aqui no ha entendido nada ? Veamos.
Objeto: Instancia de una clase.
Clase: Conjunto de Datos y los metodos que los modifican.
Bien, ahora hablemos español, espero que sepas que es una funcion, es digamos una seccion de programa que recibe parametros y devuelve valores (pudiendo no devolver nada), bien entonces ya sabemos que es una funcion, en la POO no se llaman funciones sino metodos, que facil no ?, repito un metodo no es mas que una funcion, pero en la POO se les llama metodos, bien ahora que es una dato, no es mas que una variable o constante, pero en la POO se le llama Dato, asi de sencillo.
Ahh, ya estan hablando nuestro idioma, bueno, una clase es como una estructura de datos que no solo tiene datos (variables) sino que tambien tiene los metodos (funciones) que los modifican. Aqui les planteo un ejemplo generico de lo que es una clase:
clase Suma
{
!comentario: aqui tenemos nuestros datos o atributos (variables)
enteros: x,y,r.
!comentario: y aqui tenemos nuestros metodos (funciones)
metodo sumar(recibe un entero x, recibe un entero y)
{
r = x + y.
}
metodo mostrar_resultado(recibe nada)
{
mostrar--> r.
}
}
Bien esta es una sintaxis que no es de ningun lenguaje en especifico, parecida a la de C++, ok, fijense dentro de nuestra clase tenemos datos y metodos, ahora que ya entendimos que es una clase que rayos es un objeto ?
Bien imaginense esto, int X; donde int es el tipo de dato, y X es la variable, entonces X es una instancia de int. xD esto comienza a tomar forma, fijense las clases son definiciones, y los objetos son variables de esas clases, el objeto es realmente lo que vamos a usar, y la clase es solo la deficion de como sera el objeto, "el objeto se crea a imagen y semejanza de la clase" asi que de una misma clase podemos crear varios objetos, y estos objetos seran cada uno independiente del otro, sus metodos obvio seran iguales, ya que estos no pueden cambiar, pero sus datos podrian tener valores dintintos, y esto es lo que los diferencia.
Ahora creemos dos objetos de la clase Suma:
Suma objeto1;
Suma objeto2;
ahora tenemos dos objetos de la clase Suma, ya estamos programando orientado a objetos xD.
ok ahora realicemos dos sumas, una con cada objeto:
objeto1.sumar(2,1);
objeto2.sumar(2,2);
Si bien los dos objetos fueron creados de la misma clase estos son distintos, y se los demuestro al decir que objeto1.r es igual a 3 y objeto2.r es igual a 4.
Este es un tema muchisimo mas extenso, pero esto es lo muy muy basico de lo que es la Programacion Orientada a objetos, espero les sirva de ayuda, y porsupuesto que en su momento me ayuden ustedes a mi, jeje. Gracias.