Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Linton en 4 Febrero 2014, 08:25 am



Título: ¿Qué es la programación orientada a objetos?
Publicado por: Linton en 4 Febrero 2014, 08:25 am
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  :)


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Eleкtro en 4 Febrero 2014, 10:46 am
¿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
  1. Public Class Form1
  2.  
  3.    ' Declaro una variable (un objeto) donde hay instanciado un Form (Es una Class)
  4.    ' Fíjate en el operador 'New', esto llama al método "New" (El constructor) dentro de la Class, para instanciarla.
  5.    Dim MiObjeto As Form = New Form
  6.  
  7.    Private Shadows Sub Load() Handles MyBase.Load
  8.  
  9.        ' Establezco algunas propiedades del objeto (es decir, del Form).
  10.        With MiObjeto
  11.            .Text = "Form2" ' El título del Form.
  12.            .WindowState = FormWindowState.Maximized ' El estado de la ventana (Maximizada).
  13.            .ShowDialog() ' Y por último, llamo al método 'ShowDialog' para mostrar el Form instanciado.
  14.        End With
  15.  
  16.        Application.Exit()
  17.  
  18.    End Sub
  19.  
  20. End Class

no 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!


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Linton en 4 Febrero 2014, 13:58 pm
¡Caramba, muchas gracias por tu extensa y esclarecedora respuesta!  ;-) Tomo buena nota de todo, un saludote.


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: 0xDani en 4 Febrero 2014, 16:39 pm
@Elektro, no creo que sea desmesurado decir que te has resbalado un poco en lo que has dicho sobre C++.

Saludos.


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: El Benjo en 4 Febrero 2014, 17:22 pm
Esperando que ataque una horda de programadores de C/C++ en tres... dos... uno...

XD


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Eleкtro en 4 Febrero 2014, 19:28 pm
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!


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: x64core en 5 Febrero 2014, 00:26 am
Bueno, que puedo decir... empezando mi día bien temprano y ya un epic fail...
Como siempre el tipico haxor con sus epic fails...
-
(http://cdn.memegenerator.net/instances/500x/45652869.jpg)



Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Eleкtro en 5 Febrero 2014, 11:41 am
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!


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: 0xDani en 5 Febrero 2014, 16:25 pm
@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.


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: El Benjo en 5 Febrero 2014, 16:42 pm
¿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


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: x64core en 5 Febrero 2014, 17:52 pm
Bueno yo solo respondí el sarcasmo de Elektro con el mio.
Lo de las imagen la encontre en la red nada que ver, incluso esta mal escrita si no lo notaron.
-
Y que tiene que ver batch aquí? Bueno preguntenle a Elektro, el es el que lo menciono. EL además programa en paint y
tiene el código fuente de stuxnet en version .NET. tengan cuidado...


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Eleкtro en 5 Febrero 2014, 18:38 pm
x64Core, ¿tu eres tonto sin razón, o solo disimulas tener un derrame cerebral?

Ya se que me tienes mucho amor, pero si vas a decir algo ...hazlo con argumentos, deja de decir estúpideces con sarcasmo.

Ale,
Saludos!


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: Linton en 6 Febrero 2014, 07:18 am
Agradezco de nuevo al amigo Elektro su amable y extensa respuesta  :) :) Quienes estén en desacuerdo con sus opiniones pueden aportar las suyas, los debates son muy fructíferos. "Debatir", por supuesto, no consiste en soltar exabruptos y descalificaciones, aunque la telebasura quiera convencernos de lo contrario.

Saludos.


Título: Re: ¿Qué es la programación orientada a objetos?
Publicado por: El Benjo en 6 Febrero 2014, 08:14 am
Doy un "me gusta" al comentario de Linton... Pero igual de vez en vez es bueno agarrarnos a "tecladazos" o "disquettazos", al cabo esos ya casi nadie los usa.

XD

Linton, volviendo al tema original, la mejor manera de que conozcas las ventajas y desventajas de la programación orientada a objetos es que hagas una aplicación en la que trabajes con objetos. No hay mejor manera de conocer las cosas que de "primera mano". Al final la opinión de los demás sale sobrando.

Saludos a todos.