To OOP or not to OOP

Estado
Cerrado para nuevas respuestas.
12 May 2003
5,797
Bueno, vengo de toda una semana en un curso de Java asi que vengo otra vez con los sentimientos anti OOP alborotados.

Creen que la programacion orientada a objetos si sirve o solo es un paradigma que se ve bonito en el papel y en la teoria pero que en realidad no da sino dolores de cabeza?

El problema con este punto es que la mayoria de las opiniones no son objetivas. Hay varios tipos de respuesta de acuerdo a la persona:

- El que no sabe programar orientado a objectos asi que por miedo a lo desconocido dice que es una porqueria.

- El que definitivamente no es capaz de pensar orientado a objetos.

- El que aprendio a programar directamente en un lenguaje orientado a objetos y cree que es la UNICA forma de hacer cualquier cosa en todos los casos.

- El que sabe programar orientado a objetos pero le ha dado tantos dolores de cabeza que ya lo odia y no quiere ver un lenguaje OOP ni en pintura.

- El predicador de OOP que conoce toda la teoria al derecho y al reves y hasta es profesor o investigador al respecto y que ha escritos cientos de programas prototipos marcianos pero que nunca ha programado una aplicacion seria en el mundo real.


Que opinan? se puede programar 100% orientado a objetos? porque si? porque no? es bueno? malo? porque? cuando si? cuando no?

Compartamos experiencias.
 
Pues hermano, yo crecí y aprendí la mayor parte de mi vida a programar a lo vieja guardia, o sea programación estructurada, chorrera de código. Y como vos decís, inicialmente no quería ni ver la POO ni en pintura, le sacaba siempre el cuerpo, en resumidas cuentas, la detestaba. Pero en la carrera y especialización, fui conociendo un poquito más de la POO y me parece que antes de darme dolores de cabeza, me los quita. Para la POO toca un poquito más de planeación y análisis, y el código se torna más organizado, lógico y reutilizable. Tal vez en aplicaciones sencillas sea indiferente usar uno y otro, pero en aplicaciones gigantes si se nota muchísimo la diferencia. Claro que igual, hay gurús que te pueden hacer lo que uno quiera en programación lineal y estructurada. Aunque me tiro por la POO, eso depende del problema a resolver y de las personas involucradas. No hay una herramienta única para cualquier solución, el uso de la apropiada depende del buen juicio del desarrollador.
 
Lo que mejor me ha dado resultados es mezclar.

Es estúpido escoger solo POO. Y algunas cosas son más dificiles de hacer sin POO.

Cuando veo natural la solución de un problema con objetos, los uso. Cuando no es natural, no los uso.
 
POO -> Programacion Orientada a Objetos
OOP -> Object-Oriented Programming
 
lo que dice el viejo migposada es muy cierto , hay muchos problemas que no es nesesario recurrir a la POO, asi que todo depende de que tipo de problema deseas solucionar.
 
un ejemplo de un problema que sea mas complicado de solucionar mediante la POO?
 
Pues yo e usado mas la OOP, y si uno maneja bien los conceptos, son menos los dolores de cabeza y el codigo que se copia.
 
Pues.. no sabria que decir aqui, yo, al igual que muchos, empeze con C , y por algun extrano motivo.. salte directamente a Java.. despues conoci php y perl y esas cosas.. pero mi fuerte, sigue siendo Java..

Y pues. comparando la programacion estructural con la OO, me quedo con la OO, de pronto ya me acostumbre a pensar de esa manera y por tanto me resulta mas facil generar soluciones (codigo) bajo este paradigma.

Anque es muy pertinente decir que MigPosada tiene un buen punto.. unb resuelve las cosas como mas facil le quede a uno.

Por otro lado, me gustaria aprender a programar con otros lenguajes que no son "tipicos" lenguajes funcionales o logicos, como Lisp.. alguien ha probado esto?
 
Texto Originalmente Escrito por VictorV
un ejemplo de un problema que sea mas complicado de solucionar mediante la POO?

Mmm, no se me ocurre ninguno ahora :p

La POO es muy poderosa, pero si se me ocurren situaciones en donde escribir clases es engorroso y/o innecesario.

Para no ir a buscar ningun ejemplo complicado: cuando simplemente necesitas un grupo de funciones utilitarias. Puede verse bonito agruparlas en una clase y luego crear un objeto para llamarlas, pero no bastaría con definirlas como funciones normales y corrientes?

Existen otros casos, en cambio, donde la abstracción puede generar código más fácil de entender, pero un poco más ineficiente. Por ejemplo, al usar clases para hacer operaciones matemáticas de Vectores, Matrices y Quaterniones, frente a hacer funciones (preferiblemente inline o macros) que trabajen directamente con las estructuras de los vectores, matrices y quaterniones.

Y lo de las estructuras me trae a otro punto. A veces, sólo a veces, te basta una estructura y un grupo de funciones para hacer lo que podrías hacer con una clase, al fin de cuentas vienen a ser prácticamente lo mismo (si no hay herencia).
 
YES, TO OOP

Ah, pues en la UV he tenido la oportunidad de trabajar con varios paradigmas de programación
Imperativo -> C
Funcional -> Scheme, que es un dialecto de Lisp
Orientado a Objetos -> Java
y como dice Mig, la solucion depende del problema.
Para crear aplicaciones gráficas muy pesadas, como juegos en ·d y cosas asi se usa C++. Para crear juegos sencillos y trabajar con la red, o aplicaciones sencillas que tengan una GUI con botones y ventanitas se usa Java y para trabajar calculos matemáticos como solucionar problemas de matemáticas discretas se usa Scheme.
Cada lenguaje tiene su ventaja, por ejemplo en scheme es muy útil la recursión y trabjar con listas, además que el cálculo lambda te permite pasar como parámetro a una función otra función.
En Java podes crear ventanas, botones, iconos y cosas asi por ejemplo para un triqui ciente-servidor con menos de 100 lineas de código (además es multiplataforma).
C es más rápido y trabaja mejor con gráficos y con archivos pesados.
 
En cuanto a la programación orientada a objetos, a mi me ha parecido la más cómoda y fácil de entender, no se... es como más natural. Además casi todo el código es reutilizable y se puede aplicar mucho la modularidad. Si guardas los trabajos que has hecho en java, crear algo nuevo es solo aplicar herencia, usar unas cuantas clases que ya has definido, Ctrl+c, Ctrl+v, modificar 10 lineas de código, compilar y listo. POO RULZ.
un ejemplo de un problema que sea mas complicado de solucionar mediante la POO?
la mayoria de los que se me ocurren son funciones simples, como las ya conocidas Torres de Hanoi, o una función que pase cualquier numero en base 10 a otra base, o funciones para trabajar con sucesiones y series.
 
aca nos tiraron programacion en java de una, empezaron con esto es un metodo aquello una clase, para esto sirve el for, while, if , etcx etcx............y vamos bien, algunos de semestres avanzados (apenas estoy en 1) dicen que nos enseñan sin base, otros que somos el experimento del director de sistemas, en fin aprende el que le gusta! o el que quiere,,..
 
Pues según mi opinion, la programación estructurada es muy buena para soluciones concretas y rapidas, en lo cual la programación orientada a objetos es un poco tediosa, la solución de problemas sencillos casi siempre se verá "realizable" más facil en una construcción estructurada.

Ahora bien, para los que estan pensando que (Fireman no programa orientado a Objetos), los objetos son la solución perfecta a problemas rutinarios que semejan el comportamiento natural de un actor.

En proyectos que pasen de caracter sencillo a complejo o muy complejo, la combinación de la programación orientada a objetos como base de la solución es la respuesta indicada, pero siempre aparecen en este tipo de proyectos, problemas que es necesario o más rapido solucionarlo de manera estructurada.

Por eso bienvenida sea la programación orientada a objetos con enfasis en la programación estructurada a soluciónes simples.

Y el ejemplo es tratar de solucionar la suma de dos elementos X & Y.

Es mucho más complejo resolverlo para un lenguaje orientado a objetos que para uno estructurado.

Fireman
:llamas2::llamas:
 
Please call it OOP, POO has a distasteful implication.

classes can be reused later, perperutalising any good work, with little duplication.
 
Hola amigos esta es mi primera intervencion en el foro la verdad me parece que tienen unos participantes muy serios, los felicito, despues del sepillaso quiero preguntarles algo, apenas estoy incursionando en la programacion, nesecito saber cual lenguaje es el mas recomendado para principiantes y donde puedo encotrar buenas herreramientas para iniciar un programa que requiero, por su colaboracion muchas gracias
 
Para principiantes les recomiendo que empiezen primero aprendiendo logica, luego aprendan a programar en pseudocidigo y por ultimo cogan el pseudocodigo y lo implementan en el lenguaje que quieran, para que aprendan a programar, y no a usar un lenguaje
 
yo lo primero que medio aprendí a programar fue html, es fácil y da buenas bases para otros lenguajes
 
Para mi el mejor lenguaje de programacion es:


¡¡¡¡---___ MICROSOFT WINDOWS LOGO 6.4H ___---!!!!

es por objetos (pues hace objetos como cuadros, triangulos, circulos y tiene una tortuja que hace los objetos!)
y por codigo (AV 10, LF 90, solo codigo)..
el mejor!!!!
 
Estado
Cerrado para nuevas respuestas.

Los últimos temas