¿Qué significa programación orientada a objetos?

Ya sé que hay sesudos artículos en sitios como NetTuts, incluso en Wikipedia.
Pero la verdad es que a mí por lo menos me aclaran muy poco: dado que soy novato en programación, no puedo aprehender las ventajas de este al parecer novedoso procedimiento, ni siquiera reconocerlas. Sería como explicar las ventajas de la fotografía digital a un adolescente que ignora que antaño en vez de sensor las cámaras tenían una cosa llamada carrete.

Así que agradecería a los expertos una explicación breve y diáfana sobre lo que significa la POO, dirigida a alguien que no tiene muy claros los métodos de programación [:)]
Hola!

Difícil pregunta...

Las ventajas son los conceptos básicos de POO:

* Clases, donde el problema que se intenta resolver se puede representar como un objeto (o entidad), lo que ayuda a mantener el código separado y lo más pequeño posible (se aplica la fórmula "divide y vencerás").
* Objetos, que permiten encapsular todas las funciones de una clase en una sola variable (en lugar de un archivo).
* Encapsulamiento, permite ocultar lo esencial de la clase al resto del mundo y solo muestras lo que quieres a los usuarios de tu clase (private, public, protected/friend, abstract, etc.).
* Herencia. Una de las mayores ventajas, en mi opinión. La herencia te permite extender (class X extends N) las funciones de una clase sin tener que volver a definir lo que ya existe.
* Polimorfismo, se refiere a la posibilidad de adoptar muchas formas en una sola clase utilizando una interfaz en común. Por ejemplo, si tuvieras la clase Hombre y Mujer. Ya sea que somos hombres o mujeres, ambos podemos caminar, por ende, una interfaz se podría implementar así:

<?php
  interface Acciones {
    public function caminar();
    public function correr();
  }

  public Hombre implements Acciones {
    public function caminar() {
      echo "Caminando...";
    }

    public function correr() {
      echo "Corriendo...";
    }
  }

  class Mujer implements Acciones {
    public function caminar() {
      echo "Caminar...";
    }

    public function correr() {
      echo "Correr...";
    }
  }

Esto sería útil, por ejemplo, en caso de que necesitaras crear una animación distinta para distintos tipos (una mujer, generalmente, camina moviendo las caderas, lo que se podría traducir en distintas animaciones).

OOP es muy útil cuando necesitas implementar soluciones que utilizarán otras personas, pues podrás crear una solución donde el usuario no podrá saber cómo realiza las acciones, porque lo importante es el resultado. Por ejemplo, si yo necesito sumar 1 + 1, a mi no me importa cómo lo hará tu clase, me importa que el resultado sea 2, por ende, en tu clase podrías crear 10 (o las que sean) funciones de acceso privado (private) que calcularán el resultado, y una sola con acceso público (public) que me devolverá el resultado.

Intenta hacer algo así con lenguajes estructurados (como C - C++ es un lenguaje orientado a objetos también, aunque la sintaxis es algo "fea") y verás que el código queda feo (difícil de entender) y desordenado.
skaparate si se le ocurre entrar a un novato aqui y leerte creo que conseguirias que corriera hasta el fin de sus dias jajaja.
Explicalo con un poco mas de tacto sin asustar a la gente hombre :-P
Bueno para los novatos muy novatos lo primero que teneis que entender es lo que es un objeto y que es una clase.
*Imaginaros que denominamos "objeto" a la palabra "caballo":

Un caballo puede tener una edad, un peso, una raza, un tamaño y un nombre.

*Ahora denominamos la palabra "clase" a cada tipo de caballo que hay en un rancho por ejemplo:

En nuestro rancho existen 3 caballos: saltarin, grandullon, rapidin.

Cada uno de estos caballos es una clase. el caballo que se llama saltarin tiene un nombre diferente a grandullon y a rapidin y esta clase de caballo "saltarin" tendra una edad diferente a el resto, un peso diferente, un tamaño igual y una raza igual.

Entonces llegados a este punto entendemos que el objeto es "caballo" y que las clases son "saltarin, grandullon y rapidin" y esto quiere decir que todas estas clases comparten unos atributos comunes englobados en el objeto "caballo" que en este caso son el tamaño, y la raza y unos atributos propios de su clase que en este caso son la edad y el peso y el nombre.

Espero que no salgais corriendo porque tampoco es mi intencion jajaja.