Yo aprendería Java. El problema que tiene Python, por ejemplo, es que permite al usuario elegir entre programar orientado a objetos o no, o incluso mezclar. Con Java no te queda otra :)
Y respecto a documentación, tampoco merece la pena machacarse mucho. Con entender claramente los conceptos de clase, objeto, encapsulamiento, herencia, polimorfismo y alguno más que se me esté olvidando, ya lo tienes.
Re:Java
de tenerife
(Puntos:1)
Lunes, 31 Julio de 2006, 18:55h
Re:Java
de pezezin
(Puntos:1)
Lunes, 31 Julio de 2006, 22:54h
Re:Java
de Rarok
(Puntos:1)
Martes, 01 Agosto de 2006, 10:01h
por
pobrecito hablador
el Lunes, 31 Julio de 2006, 19:16h
(#787620)
Sin desmerecer la opinión de los que apoyan Java o C#, creo que hay un error no menor en decir que con entender, herencia y polimorfismo ya sabes POO. La POO va mucho más allá del lenguaje: trata de objetos "hablando" entre si y esto requiere una forma de pensar muy diferente a la programación estructurada; luego no vas a aprender POO solo aprendiendo a programar en Java, sino que con Java o C# puedes aplicar varios (no todos) los conceptos de la POO. Por lo tanto, yo te recomendaría que buscaras información sobre POO en si misma (los conceptos que abarca son bastantes más que herencia y polimorfismo) y trates de practicar con el lenguaje que te sea de preferencia lo aprendido. Como dato, los puristas de la POO suelen ser adeptos de Smalltalk y con buenas razones.
Otra cosa que puedes aprender y es MUY útil a la hora de programar con objetos es el uso de Diagrama de Secuencia [wikipedia.org].
Saludos y espero haber ayudado.
Acabo de "descubrir" (creo que la primera edición es de mediados de los 90) el tocho de Bertrand Meyer, Construcción de software orientado a objetos, que se basa, aunque no lo dice hasta casi el final del libro, en Eiffel. ¿Algún otro más ameno (uséase, menos de 1200 páginas)? La verdad es que éste tiene muy buena pinta, pero creo que para un nivel introductorio te sobran unas cuantas páginas ;)
1 respuesta por debajo de tu umbral de lectura actual.
por
pobrecito hablador
el Lunes, 31 Julio de 2006, 20:54h
(#787693)
Yo aprendí primero a programar en C, y luego aprendí C++, pero bajo la aproximacion de 'C con clases', o 'struct con funciones'. Vi en frío lo que es la herencia, lo que es el polimorfismo, etc., pero es dificil asimilarlo y entender que esta detrás, de que se trata, y para que se puede usar...
Mucho tiempo despues me tope con el libro "Design Patterns Explained: A New Perspective on Object Oriented Design" (Addison Wesley) [amazon.com], lamentablemente solo lo conozco en inglés; al leer los primeros 3 o 4 capitulos (donde se 'introduce' la programación orientada a objectos)... me hizo zapatear las neuronas. Ahi entendí lo que es la filosofia de la OO, al aplicarla a patrones de diseño (que además son en extremo interesantes por si mismos... y realmente sirven para utilizar las caracteristicas de OO).
Si quieren un rato de amena lectura, que les puede mostrar un enfoque que a lo mejor nunca han visto aunque lleven años trabajando con OO, yo se los recomiendo.
Y luego, esos principios pueden ser aplicables, supongo al lenguaje de su preferencia.
Mi lenguaje orientado a objetos favorito del momento es Ruby. Pero lo importante es tener bien asegurados los conceptos de POO, genéricos, no ceñirse a un lenguaje únicamente.
No me gusta el término "programación estructurada", en parte porque de hecho es menos estructurada que la POO y en parte que es muy vago.
Prefiero, como algunos autores, sugieren "programación secuencial" que de una idea más exacta de la programación tipo receta de cocina que es la primera y sabrosa fase que todo programdor debe pasar.
No conozco a nadie que sea un buen programador POO sin haber pasado sus buenos cinco o seis años como programador secuencial, es cuando te das cuenta (al paso del tiempo) que todo tu código termina en código espaghetti que empiezas a pensar en objetos.
Java es un buen comienzo porque es màs severo y no te deja adquirir malos hábitos de programación. Pero hay excelentes concepciones de POO hechas en php4 o perl.
Sin embargo, repito, hay ciertas aseveraciones y consejos POO que ningún libro te enseñará a valorar, sólo la experiencia. Nadie aprende a nadar leyendo sobre ríos y piscinas.
Si lo que quieres es aprender la mejor solución es que te inclines por un intérprete que es infinitamente más versátil que un compilador.
Además es interesante que el lenguaje soporte programación clásica ya que así te permitirá generar prototipos rápidamente, probarlos y depurarlos sin tediosas compilaciones y, sobre todo, comparar los resultados de la programación clásica y oo.
Python es una buena alternativa pero no la única.
te recomiendo que te mires un poco de teoría general sobre programación orientada a objetos y enseguida te metas con JAVA que es lo que realmente te va a servir tanto a nivel personal como a nivel profesional.
Te recomiendo leer este libro:
"UML y Patrones: Introducción al análisis y dise o orientado a objetos. Autor: Craig Larman"
Esta accesible y fácil de comprender
Te cuento mi caso .....
Estudie industriales (la superior, especialidad de automatica y electronica), asi que mis conocimientos de informatica se reducian a "lenguajes" como Step5, VHDL, ensamblador para el 68HC11, TurboPascal y C/C++ (estos dos ultimos muy por encima). Al terminar la carrera me interese mas por el desarrollo de software, analisis y diseño orientado a objetos, patrones, UML, ... etc ....
El de Craig Larman me parece una buena introduccion en la materia. Apenas aparecen 4 lineas de codigo en Java y utiliza los diagramas de UML de manera poco rigurosa, por lo que resulta muy facil de seguir. Una vez introducido cada concepto te recomienda bibliografia concreta mediante la cual profundizar en el tema.
1 respuesta por debajo de tu umbral de lectura actual.
Yo he estudiado en la Carlos III de Madrid y desde primero hemos estudiado OO, Java y tambien algo de C#.
Pero nos han inculcado la filosofia OO desde el principio. Su metodo es bueno. Si quieres algo no tienes mas que pedirmelo.
Suerte con el aprendizaje.
Lo más dificil de diseño es justo eso, diseñar. No por saber mucho UML, C++ o Java te conviertes en un buen diseñador. Lo más importante es adquirir experiencia.
Bien, y como lo haces ? pues haciendo diseños y luego implementándolos. La gracia de implementarlos es que validas, en cierta forma, si tu diseño es "bueno" o "malo" en base a las penurias que pasas para implementarlo, probarlo y liberarlo.
Un lenguaje "friendly" para pruebas de concepto está bien. Java es infernal si no conoces el API, C++ es mas o menos el Necronómicon de la programación, sobre todo para newbies. Ruby es escandalosamente orientado a objetos, tanto, que los objetos no te dejan ver el problema. Así que tiraría con Python, que es la solución de compromiso entre la guarrería mas procedimental y la solución mas rebuscada. Y además pruebas rápido. Y tiene serpientes.
Para empezar, no construyas catedrales. Haz pruebas de concepto. Por ejemplo, subsistemas "modelo" (una capa de acceso a base de datos, un sistema de distribución de eventos, una GUI ...). Lo mas importante es seguir el KISS y que los diseños sean entendibles, bien documentados y completos (no vale de nada poner una caja y decir "El sistema")
Cuando ya tengas algo de soltura con los diseños a boli en servilletitas, búscate una herramienta de diseño (Rose, Rhapsody) y monta una cadena de producción completa (desde que pintas una clase,
hasta que llegues a depurar su comportamiento en el banco) Algunas soportan animaciones del modelo, otras "executable UML models" y demás frivolidades que están bien para fardar con los amiguetes en el café, o dar charlas. Pero recuerda, son solo herramientas para ayudarte en tu diseño. Diseñas tu, no la herramienta.
Y si entre medias intentas aplicar patrones (pero no cortando y pegando del GoF, sino entendiendo que es lo que quieren decirte) pues entonces,
alcanzarás el nirvana de los diseños implementables (que nada tienen que ver las bizarreces teórico-chapuceras de los diseños artísticos)
Y recuerda. El objetivo principal de diseñar es dar la información necesaria para poder construir un producto que cumple el 100% de los requisitos de tu usuario. No dan puntos por hacerlo barroco, ni esotérico.
--
<your quote here> --Bjarne Stroustrup
1 respuesta por debajo de tu umbral de lectura actual.
A mi me parece que Ruby tiene una visión un poco especial de la POO, que no digo que sea mala en sí, pero que se aleja un poco del resto: comprender bien el funcionamiento de los mixins y las construcciones tipo "class
Luego tenemos Java y C#, que dentro del paradigma de POO suponen una visión más ortodoxa y probablemente la que profesionalmente a uno le interese más de manera inmediata.
Y C++, aunque me gano la vida con él, no creo que sea buen ejemplo de implementación del paradigma de la POO.
-- ___ "Tamparantán que te han visto Pepe, tamparantán que te han visto Juan"
Desde mi experiencia, para empezar te recomendaría primero un libro didáctico como "Programación Orientada a Objetos 2º ed" de Luis Joyanes Aguilar. Da una introducción a la POO muy sencilla, fácil de entender y la estructura que sigue el libro es muy adecuada. Ayuda con ejemplos en C++, que se pueden aplicar facilmente a Java. La verdad es que con este libro te será muy fácil aprender POO. Después una vez que tengas una introducción, seguiría con los numerosos libros que otros compañeros de foro te han aconsejado (auténticos best-sellers), libros que,una vez que tengas una base podrás sacar más provecho.
La verdad yo personalmente te recomiendo aprender los fundamentos de la OO y su teoria. Lo fundamental és aprender a pensar en OO. Así como un fotografo de blanco y negro tiene que ver en blanco y nego. Al plantearte un problema tienes que crear mentalmente un analisis OO.
El siguiente paso és estudiar los Patrones existentes, (te recomiendo utilizar el UML por ser el mas estandar y genérico). Ay multitud de patrones, peró yo me quedaria con los mas comunes, tipo patron iterador, etc...
A partir de aquí puedes aplicar tus conocimientos a cualquier lenguaje de programación. De los mas fideles a OO puedes utilizar Eiffel, de los mas prácticos usaria Java.
Peró personalmente el paso al estudio de OO con lenguages de programació lo dejaria para el final, pués todos los lenguajes presentan restricciones respecto a la concepción pura de la OO.
Pues eso!!
http://www.ooad.org/
espero que te sirva, al menos como primer contacta, muy recomendable antes de comprarte el tipico ladrillo de libro, muy teorico y criptico...
Asi suelen ser los libros de esta materia...
Evidente, hay que acudir a la página OO [well.com] de Ricardo Devis [well.com] ¡elemental!
Quizá algo obsoleta, cierto, pero vale la pena, aunque sólo por el vértigo que da.
Te recomiendo Thinking in Java [mindview.net] de Bruce Eckel, sobre todo los capítulos iniciales, y tambien Object Design: Roles, Responsibilities, and Collaborations de Rebeca Wirfs_Brock [wirfs-brock.com]
Nota: el libro de Bertrand Meyer es un tocho, como ya se ha dicho, pero se pueden sacar algunas enseñanzas válidas, pero quizá no para iniciarse. Y del Sr. Joyanes nada de nada, no ha programado en su vida, si, si, como lo oyes, si, ya sé que es Catedrático y todo eso, incluso ojeé su tesis, pero na' de na', lo que yo te diga.
Hola amigos, yo te recomiendo que primeramente busque información relacionada sobre POO,
tales como:
- Que es una clases
- Que es un objeto
- Que es herencia
- Polimorfismo
- Sobrecarga de clases
y muchas otras cosas que tiene la POO, luego de saber un poco de la teoria y entender el concepto puedes buscar aprender un lenguaje, te digo esto, pq no es facil despues de programar siempre de forma estructurada, cambiar a OO pq el cambio de paradigma grande, la forma de programar es distinta.
Sobre UML es practicamente el estandar para la programación orientada a objeto es lo mejor que puedes utilizar (en mi criterio) para diseñar un sistema orientado a objeto. hay muchas metodologias como RUP, MSF, entre otras que utilizan UML
-- Cesar Montero
Desarrollador Web
Maracay - Venezuela
Bueno si bien la clave de todo es practica pues yo empece con C++ y el libro que me ayudo mucho fue el de Luis joyanes Aguilar C++ Un enfoque Orientado a objetos si bien es un poco confuso al principio luego pues ya todo se enciende un poco OJO tienes que tener un buen conocimiento de C espero que te sirva
Yo en la uni "aprendí" Eiffel, que se supone que una vez que entiendes los conceptos de un lenguaje OO, ya sabes programar en todos, y segun dicen también, Eiffel es el más "estandar" de todos los lenguajes. Tanto que solo se usa a nivel "educacional", y no en la práctica (o eso dicen), por lo que te quema un poco tener que hacer como hice yo este año un Sudoku en un lenguaje al cual no le ves futuro, pero ya se sabe como está la enseñanza...
Respecto a por qué lenguaje empezar no voy a decir nada porque no tengo suficiente experiencia para saber cual es mejor, pero desde luego, si empiezas por Java, este libro me ayudó mucho.
Lo he comentado en otro tema de pasada, pero está 3 niveles por dejabo así que igual ni lo lees xD.
Dado que Java es un lenguaje 100% orientado a objetos, imagino que casi cualquier libro que busques sobre Java incluirá todo lo que tengas que saber sobre la POO.
No obstante, yo aprendí con el Piensa en Java y me gustó mucho. Te lo explica todo muy claramente, con muchos ejemplos y si te lo compras original viene con un cd con todo el código listo para compilar y ejecutar, de modo que podrás ver lo que hacen los programillas.
La verdad es que para EMPEZAR con este paradigma —siempre que lo hagas desde Java— yo creo que es una muy buena opción.
Smalltalk ..........aunque claro tu hablas de lenguaje orientado a objetos y este no lo es.......es un lenguaje de objetos (sin orientacion ni leches) es el jodi** paradigma de objetos.......el Dalai Lama de los lenguajes orientados a el........es.......es.........tu padre
--
##### Si sigues hablando como un pobrecito hablador,te pegaré como a un pobrecito hablador #####
Por último pues usé un libro que se llama "El lenguaje de programación JAVA" de Ken Arnold, James Gosling y David Holmes. Editorial Pearson educación. Aunque este libro es más de consulta que de leerlo a piñón para aprender.
Por si alguien no lo sabe James Gosling [wikipedia.org] es considerado el padre de Java (entrevista [businessweek.com]).
--
Indifference will be the downfall of mankind, but who cares?
Java
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Martes, 14 Marzo de 2006, 21:16h )
java
(Puntos:1)POO en serio
(Puntos:4, Interesante)Otra cosa que puedes aprender y es MUY útil a la hora de programar con objetos es el uso de Diagrama de Secuencia [wikipedia.org].
Saludos y espero haber ayudado.
Hablando de libros
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Miércoles, 05 Noviembre de 2014, 18:55h )
pues...
(Puntos:2)( http://press.asqueados.net/ | Última bitácora: Jueves, 06 Marzo de 2014, 11:47h )
Java es menos puro, pero lo que aprendas te va a servir más que Smalltalk con casi toda seguridad.
C++ no me gusta porque lo encuentro una especie de híbrido extraño...
.
Asqueados [asqueados.net]: mas politica, informatica y payasadas que nunca
Re:pues...
(Puntos:4, Divertido)( http://barrapunto.com/ )
OO y patrones de diseño
(Puntos:1, Interesante)Mucho tiempo despues me tope con el libro "Design Patterns Explained: A New Perspective on Object Oriented Design" (Addison Wesley) [amazon.com], lamentablemente solo lo conozco en inglés; al leer los primeros 3 o 4 capitulos (donde se 'introduce' la programación orientada a objectos)... me hizo zapatear las neuronas. Ahi entendí lo que es la filosofia de la OO, al aplicarla a patrones de diseño (que además son en extremo interesantes por si mismos... y realmente sirven para utilizar las caracteristicas de OO).
Si quieren un rato de amena lectura, que les puede mostrar un enfoque que a lo mejor nunca han visto aunque lleven años trabajando con OO, yo se los recomiendo.
Y luego, esos principios pueden ser aplicables, supongo al lenguaje de su preferencia.
Ruby
(Puntos:1)( http://capitanplaneta.com/ | Última bitácora: Miércoles, 08 Marzo de 2006, 11:20h )
-- Capitán Planeta [capitanplaneta.com]
POO
(Puntos:3, Inspirado)( http://www.mononeurona.org/ )
Prefiero, como algunos autores, sugieren "programación secuencial" que de una idea más exacta de la programación tipo receta de cocina que es la primera y sabrosa fase que todo programdor debe pasar.
No conozco a nadie que sea un buen programador POO sin haber pasado sus buenos cinco o seis años como programador secuencial, es cuando te das cuenta (al paso del tiempo) que todo tu código termina en código espaghetti que empiezas a pensar en objetos.
Java es un buen comienzo porque es màs severo y no te deja adquirir malos hábitos de programación. Pero hay excelentes concepciones de POO hechas en php4 o perl.
Sin embargo, repito, hay ciertas aseveraciones y consejos POO que ningún libro te enseñará a valorar, sólo la experiencia. Nadie aprende a nadar leyendo sobre ríos y piscinas.
-----------------------------------
"El tenía la inhumana costumbre de ser racional".
Un intérprete
(Puntos:1)Además es interesante que el lenguaje soporte programación clásica ya que así te permitirá generar prototipos rápidamente, probarlos y depurarlos sin tediosas compilaciones y, sobre todo, comparar los resultados de la programación clásica y oo.
Python es una buena alternativa pero no la única.
Aprende JAVA
(Puntos:1)Craig Larman
(Puntos:1)UML y Patrones, de Craig Larman
(Puntos:1)OO
(Puntos:1)Una servilletita y un boli ...
(Puntos:4, Inspirado)( http://www.jmcresearch.com/ )
Bien, y como lo haces ? pues haciendo diseños y luego implementándolos. La gracia de implementarlos es que validas, en cierta forma, si tu diseño es "bueno" o "malo" en base a las penurias que pasas para implementarlo, probarlo y liberarlo.
Un lenguaje "friendly" para pruebas de concepto está bien. Java es infernal si no conoces el API, C++ es mas o menos el Necronómicon de la programación, sobre todo para newbies. Ruby es escandalosamente orientado a objetos, tanto, que los objetos no te dejan ver el problema. Así que tiraría con Python, que es la solución de compromiso entre la guarrería mas procedimental y la solución mas rebuscada. Y además pruebas rápido. Y tiene serpientes.
Para empezar, no construyas catedrales. Haz pruebas de concepto. Por ejemplo, subsistemas "modelo" (una capa de acceso a base de datos, un sistema de distribución de eventos, una GUI ...). Lo mas importante es seguir el KISS y que los diseños sean entendibles, bien documentados y completos (no vale de nada poner una caja y decir "El sistema")
Cuando ya tengas algo de soltura con los diseños a boli en servilletitas, búscate una herramienta de diseño (Rose, Rhapsody) y monta una cadena de producción completa (desde que pintas una clase,
hasta que llegues a depurar su comportamiento en el banco) Algunas soportan animaciones del modelo, otras "executable UML models" y demás frivolidades que están bien para fardar con los amiguetes en el café, o dar charlas. Pero recuerda, son solo herramientas para ayudarte en tu diseño. Diseñas tu, no la herramienta.
Y si entre medias intentas aplicar patrones (pero no cortando y pegando del GoF, sino entendiendo que es lo que quieren decirte) pues entonces,
alcanzarás el nirvana de los diseños implementables (que nada tienen que ver las bizarreces teórico-chapuceras de los diseños artísticos)
Y recuerda. El objetivo principal de diseñar es dar la información necesaria para poder construir un producto que cumple el 100% de los requisitos de tu usuario. No dan puntos por hacerlo barroco, ni esotérico.
<your quote here> --Bjarne Stroustrup
Python más que Ruby
(Puntos:2)( http://hronia.blogalia.com/ | Última bitácora: Jueves, 22 Enero de 2009, 06:57h )
Y C++, aunque me gano la vida con él, no creo que sea buen ejemplo de implementación del paradigma de la POO.
___
"Tamparantán que te han visto Pepe, tamparantán que te han visto Juan"
Libro Muy Didáctico
(Puntos:1)( http://barrapunto.com/ )
*** Greetings,;-) anirox ***
Aprender OO
(Puntos:1)links con documentacion a saco!!!
(Puntos:1)La página OO
(Puntos:1)( http://barrapunto.com/ )
Quizá algo obsoleta, cierto, pero vale la pena, aunque sólo por el vértigo que da.
Te recomiendo Thinking in Java [mindview.net] de Bruce Eckel, sobre todo los capítulos iniciales, y tambien Object Design: Roles, Responsibilities, and Collaborations de Rebeca Wirfs_Brock [wirfs-brock.com]
Nota: el libro de Bertrand Meyer es un tocho, como ya se ha dicho, pero se pueden sacar algunas enseñanzas válidas, pero quizá no para iniciarse. Y del Sr. Joyanes nada de nada, no ha programado en su vida, si, si, como lo oyes, si, ya sé que es Catedrático y todo eso, incluso ojeé su tesis, pero na' de na', lo que yo te diga.
Salu2
POO
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Jueves, 07 Diciembre de 2006, 14:49h )
Cesar Montero Desarrollador Web Maracay - Venezuela
Libro para aprender
(Puntos:1)Eiffel
(Puntos:1)( http://www.patoroco.net/ )
Mi web: http://www.patoroco.net [patoroco.net]
Re:Y Ruby?
(Puntos:1, Troll)( http://barrapunto.com/ )
Gnome es para tontos... ¿por qué tengo este pedazo trabuco?
+5 Informativo
(Puntos:2)( http://mcpolu.blogspot.com/ | Última bitácora: Miércoles, 05 Marzo de 2014, 00:04h )
En España la mejor manera de guardar un secreto es escribir un libro.
Re:Piensa en Java
(Puntos:1)( http://www.tiendadeultramarinos.es/ )
Re:No hay duda
(Puntos:1)( http://yonkis.com/ | Última bitácora: Miércoles, 11 Octubre de 2006, 20:54h )
##### Si sigues hablando como un pobrecito hablador,te pegaré como a un pobrecito hablador #####
Culturilla general
(Puntos:2)( http://blog.opsiland.info/ )
Por si alguien no lo sabe James Gosling [wikipedia.org] es considerado el padre de Java (entrevista [businessweek.com]).
Indifference will be the downfall of mankind, but who cares?