¿Que es la programación orientada a objetos?: Las respuesta rápida y sencilla (eliminando todos los tecnicismos que habrás leido por ahi) sería: Un estilo de programación (un paradigma de programación), ni más, ni menos, donde, obviamente, se maneja la implementación del concepto 'objetos'.
¿Y que es un objeto?: Pues prácticamente es un término/concepto (esto es algo que está muy bien explicado por la Wikipedia), un objeto es un espacio en la memoria (Si, la memoria RAM del PC, para no dejar dudas) al que se le asigna un valor respectívamente de un identificador. Dicho espacio puede contener una variable o una función entera. Y en la programación orientada a objetos, el término objeto se usa para referirse a aquellos 'objetos' instanciados por una Class, en fin, variables que instancian una Class que se usará en tiempo de ejecución.
Básicamente la programación orientada a objetos te permite infinidad de mejoras/optimizaciones en tiempo de ejecución, aparte de los ya conocidos objetos, por ejemplo, el uso de enlaces dinámicos:
http://es.wikipedia.org/wiki/Enlace_din%C3%A1mico_%28programaci%C3%B3n_orientada_a_objetos%29Y en fin ...todo lo demás que puedes ver en un lenguaje orientado a objetos.
Te muestro un ejemplo del uso de un objeto, en VB.NET:
Public Class Form1
' Declaro una variable (un objeto) donde hay instanciado un Form (Es una Class)
' Fíjate en el operador 'New', esto llama al método "New" (El constructor) dentro de la Class, para instanciarla.
Dim MiObjeto As Form = New Form
Private Shadows Sub Load() Handles MyBase.Load
' Establezco algunas propiedades del objeto (es decir, del Form).
With MiObjeto
.Text = "Form2" ' El título del Form.
.WindowState = FormWindowState.Maximized ' El estado de la ventana (Maximizada).
.ShowDialog() ' Y por último, llamo al método 'ShowDialog' para mostrar el Form instanciado.
End With
Application.Exit()
End Sub
End Class
no consigo ver cuáles son las ventajas,
ya que no sé cómo se programaba antes Pues no tienes que irte muy lejos ni retroceder muchos años atrás!!!, basta con que hallas usado uno de los lenguajes nativos en Windows o Linux ...Batch o Bash, entonces te puedes hacer una inmensa idea sobre la cantidad de diferencias que tienen estos lenguajes de programación, en especial la morralla de Batch en comparación con cualquier otro lenguaje, Batch es un tipo de programación, si es que se le puede llamar así al 'procesamiento por lotes'.
Otros estilos de programación (paradigmas de programación) que están por debajo de la escala evolutiva de la programación orientada a objetos (seguro que por este comentario vendrá el típico listo a decir que si X lenguaje de programación es peor que otro y blablabla... que cada uno se lo tome como quiera) serían la programación estructurada ('structured programming paradigm') o 'procedural programming' o 'imperative programming', como por ejemplo C y C++ (no C#) (Aunque por otro lado C++ soporta el estilo de programación orientada a objetos pero básicamente se basa en C, así que se queda como procedural), Pascal, Basic y otros derivados de Basic como QBasic PureBasic o VisualBasic (VB6, no VB.NET), Perl, etc...
Y también el estilo de programación 'expression oriented language', donde como su nombre indica tódas las órdenes o la mayoría de ellas (excepto las declaraciones) son expresiones y se tratan como tal por el compilador (me imagino), un ejemplo de este paradigma de programación sería el lenguaje 'LISP' de los años 50 (me he tenido que informar sobre esto en la wikipedia, no me tomes por un erudito que lo sabe todo).
Y bueno, después de toda esta parrafada, solo te puedo dar una mi más sincera opinión:
No importa que ahora mismo no seas capaz de darte cuenta de las diferencias de programación o de las ventajas de los objetos, y que segúramente oigas comentar a la gente que C++ es el mejor lenguaje ...pero lo será para ellos, la verdad es que no es un lenguaje orientado a objetos (de forma completa) y bueno, solo lo comento porque me ciño a tu duda, no odio a C++, lo respeto como el gran lenguaje que es, pero la elección debe ser tuya y no de los que desde los años 80 no saben ver más hallá de C/C++, en fín yo te aseguro que una vez que hayas usado un lenguaje complétamente orientado a objetos (VB.NET, C#, Java, etc...)... no querrás probar otra cosa y verás lo ridículamente inferiores que son todos los demás lenguajes que llegues a probar o que ya hayas probado
.
Saludos!