¿Qué es la programación orientada a objetos?

Iniciado por Linton, 4 Febrero 2014, 08:25 AM

0 Miembros y 1 Visitante están viendo este tema.

Linton

Por más que busco en Google, sólo me entero de que es la nueva forma de programar, que aventaja a las anteriores, como leemos en este artículo de Asensio López: http://toodaim.blogspot.com.es/2013/01/articulo-los-pilares-de-la-programacion.html

Y como soy novicio en programación, no consigo ver cuáles son las ventajas, ya que no sé cómo se programaba antes  :huh:

¿Alguien me explica de manera clara y sencilla qué ha cambiado con la POO? Gracias, un saludo  :)

Eleкtro

#1
¿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%29
Y 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:

Código (vbnet) [Seleccionar]
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


Cita de: Linton en  4 Febrero 2014, 08:25 AMno consigo ver cuáles son las ventajas, ya que no sé cómo se programaba antes  :huh:

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!








Linton

¡Caramba, muchas gracias por tu extensa y esclarecedora respuesta!  ;-) Tomo buena nota de todo, un saludote.

0xDani

@Elektro, no creo que sea desmesurado decir que te has resbalado un poco en lo que has dicho sobre C++.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

El Benjo

Esperando que ataque una horda de programadores de C/C++ en tres... dos... uno...

XD
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Eleкtro

#5
xD

Vale, lo reconozco, me pasé (@0xDani aunque no se si eso es lo que quieres decir con resbalarse), y tampoco soy el más indicado para hablar mal de C++ por lo muy poco que lo he tocado, mil perdones chavales, pero es que me saca de quizio que en estos temas donde se mencionan o se debaten distintos lenguajes de programación siempre acabe apareciendo alguien al que le gusta criticar un comentario ajeno sobre "X" lenguaje para poner verde al lenguaje opuesto y favorecer al lenguaje criticado, y he visto que eso siempre suele pasar con las críticas de C++. (@0xDani no lo digo por tu comentario, ni por nadie en especial).

Saludos!








x64core

#6
Bueno, que puedo decir... empezando mi día bien temprano y ya un epic fail...
Como siempre el tipico haxor con sus epic fails...
-



Eleкtro

#7
Ahí está, salió de su guarida el típico Troll de turno al que yo me refería (x64core tenia que ser, como yo me imaginaba), imagino que tu ilustrativo, interesante, e informativo comentario va dirigido hacia mi persona ya que soy el único que ha comentado algo relevante en este post. siempre disfruto con tu patética forma de intentar Trollear mencionando en esta ocasión a ¿Hackers y Batch?, tu sabrás lo que quieres decir con todo eso (pero porfavor, no vengas a contarmelo, no me interesa).

Bueno,
Saludos!








0xDani

@Elektro a mí tampoco me gustan las discusiones sobre lenguajes de programación... cada uno que use y aconseje el que le venga mejor.

Y sí, @x64Core podría ser un poco menos troll. Si supones que alguien ha incurrido en lo que tú das en llamar un epic fail, puedes comentar para explicarle por qué lo ha hecho en vez de soltar el comentario sarcástico y punto.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

El Benjo

¿Este post se va convertir en una pelea de gatas? Si es así les aconsejo que hagan lo que yo y se pongan unas medias que no les importe romper, un rimel que no se corra y se echen uno o dos ladrillos en el bolso. XD

Posdata: x64core, que bien jodes. Saludos
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.