¿Cuál es la mejor manera de aprender los conceptos / principios de OOP en la práctica? [cerrado]

12

Quería aprender lenguaje de programación orientado a objetos, no lo quiero para ningún propósito solo para conocer todo el concepto de OOP. Entonces, ¿alguien puede decirme qué idioma debo comenzar a aprender?

Lobo cafeinado
fuente
1
¿Qué idiomas sabes ya?
Mchl
C, VB.NET y C ++ pero no la parte OOP
Caffeinatedwolf
1
elija VB.NET entonces
Vinoth Kumar CM
No, no quiero VB.NET quiero que ustedes me ayude a elegir entre Java, C ++, Python, etc ...
Caffeinatedwolf
3
¿Quieres aprender algo prácticamente sin ningún propósito?
JeffO

Respuestas:

13

Algunas sugerencias adicionales:

  • El mejor libro que he leído en la barra de OOP ninguno es Bertrand Meyer's Object Oriented Software Construction . No es una lectura "fácil" en la que tendrá que pensar mucho en algunos lugares. Pero hace el mejor trabajo que he visto al explicar los principios de OO.

  • En cuanto a los lenguajes: me mantendría alejado de C ++. Demasiado grande para aprender. Si desea un lenguaje que realmente lo ayude a comprender OO (a diferencia de uno en el que escribiría aplicaciones convencionales / usaría un trabajo), consulte smalltalk. O Eiffel (el lenguaje en el libro de Meyer arriba).

  • Si desea un lenguaje que sea un poco más convencional pero que siga siendo fiel a los principios de OO, entonces Python es una buena apuesta. Java y C # también son decentes si quieres escribir estática.

Sin embargo, una advertencia: el lenguaje no te enseñará OO. Solo puede ayudar (u obstaculizar) qué tan bien admite los conceptos OO. Aprender OO se trata realmente de aprender a pensar en términos OO. Por eso volvería al libro de Meyer.

hth.

Sfinnie
fuente
1
Las otras cosas en C ++ son importantes . Es importante saber sobre la herencia virtual. Es importante saber acerca del fuerte soporte genérico en tiempo de compilación, y es importante saber sobre el valor frente a la referencia. Ir por algo como Java es solo "LA LA LA NO PUEDO ESCUCHARTE ESTA ES LA ÚNICA MANERA DE HACERLO".
DeadMG
2
si y no. La pregunta del OP fue sobre el aprendizaje, que implica lo básico primero. No estoy convencido de que C ++ se encuentre entre los contendientes como el lenguaje de aprendizaje más adecuado . Dicho esto: Meyer cubre genéricos y valor vs referencia de todos modos, aunque como temas más avanzados. También entra en co-y contra-varianza, en las últimas partes del libro. Pero él expone lo básico primero. (Y Eiffel está estáticamente escrito por cierto).
sfinnie
1
No voy a estar de acuerdo o en desacuerdo con una recomendación de Eiffel, ya que nunca he usado o incluso visto o leído nada al respecto. Sin embargo, estoy totalmente en desacuerdo con cualquier recomendación para Java y C #, como dije.
DeadMG
12

Puede aprender cualquiera de los lenguajes orientados a objetos como C ++, Java, C #, etc. para probar OOPS.

Si realmente desea aprender OOP, debe pensar más allá de los idiomas y comprender que es un paradigma que ayuda a la complejidad del mangae involucrado en los programas de software al igual que la forma en que los administramos en este mundo real. Luego aprenda los conceptos básicos en OO como Polimorfismo, Herencia, Encapsulación (PIE), etc.

Hay buenos libros sobre análisis y diseño orientado a objetos con aplicaciones (2ª edición) de Grady Booch

Además, puede probar blogs como este, que encontré es lo suficientemente simple para comenzar- fascinatingoops.com

WinW
fuente
3

¿Quieres aprender OOP? Una respuesta: Smalltalk.

Es un lenguaje elegante y es OO hasta la médula. Aprenderá OOP desde el principio y no se verá obstaculizado por todas las otras distracciones que otros idiomas logran incorporar.

Smalltalk gana. Y también hay algunos buenos libros electrónicos gratuitos disponibles (ver: Stephane Ducasse )

Simon Knights
fuente
3

Tendría que aprender C ++, o tal vez uno de los antepasados ​​como Smalltalk. C ++ ofrece una separación limpia entre conceptos como orientación a objetos, administración de memoria y referencia frente a valor, y tiene un fuerte soporte genérico.

No aprenda Java o un lenguaje .NET como C #. Cuando aprendes un lenguaje como Java, entonces aprendes cosas como "Los objetos siempre están en el montón y siempre son referencias", lo cual solo es cierto para Java y absolutamente no es cierto para OOP en general. Esta combinación de conceptos (orientación a objetos, gestión de memoria, referencia vs valor) es muy peligrosa para un primer idioma, porque una vez que los atascas en tu cabeza, puede ser muy difícil recuperarlos. C # es algo mejor en este sentido pero no mucho. Además, pueden tener una alta tendencia a enseñar "La herencia es un martillo y todo es un clavo" con un débil soporte de programación genérico.

DeadMG
fuente
Esto es muy cierto. Nunca antes había pensado en esto, en realidad, cuando se trata de un lenguaje que está muy enfocado en OOP y trata de resolver todo con OOP, nunca aprenderá qué problemas no son realmente adecuados para OOP.
daramarak
1

La mejor manera de aprender los conceptos de OOP es escribir más y más código y revisarlo con frecuencia. La práctica hace un buen programador.

Piense en escenarios del mundo real, defina un enunciado del problema: resuélvalo en código y hágalo revisar. Siempre puede obtener la ayuda de /codereview// para revisiones :)

Feliz codificación !!!

karthiks
fuente
0

Pasos

  1. Aprende lo que significan.
  2. Aprende a implementarlos.
  3. Tome un proyecto para desarrollar, elija su idioma [que debería tener el principio OOPS integrado como VB.NET o C # o C ++ o java, etc.]
  4. Piense en cómo puede simplificar la lógica del proyecto con OOPS. [Nota: No solo implemente OOPS porque desea tenerlos, deberían resolver su propósito]
  5. No lo olvides: también aprenderás de tus errores .
Chris
fuente
0

Mi primer contacto con el mundo OO fue C ++, que no fue un mal comienzo. Pero mejoré mucho al aprender Python. La diferencia proviene de los lenguajes: probar ideas ('¿cómo puedo resolver este problema de una manera OO?') En C ++ necesita que se escriba más código e incluye muchas más dificultades que probar la misma idea en Python. Entonces recomendaría Python.

Rockportrocker
fuente
0

No creo que debas buscar otro idioma mientras intentas aprender OOP. Para mí, es más fácil comprender la teoría y luego aprender a aplicarla si puedo relacionarme con algo que ya sé. Descubrir una nueva sintaxis simplemente se interpone en el camino.

Puede comenzar con cualquier libro de OOP. Nuevamente, obtendría uno en mi idioma de elección. Leer un libro sobre refactorización (estilo OOP) me ayudó en la aplicación de OOP. Tomé un proyecto existente (sin distracciones de la recopilación de requisitos) y encontré nuevas formas de mejorarlo. No era solo OOP por el bien de OOP. Luego, puede aprender cómo hacerlo de principio a fin en un nuevo proyecto. La lógica aquí es que no siempre lo entenderás desde el principio. Si puede reconocer dónde es apropiado, estará mejor. Como la mayoría de las cosas, no resolverá todos los problemas.

Existen limitaciones definitivas con algunos idiomas. Si su objetivo es ser el maestro de la herencia múltiple, .NET está fuera.

JeffO
fuente
0

Iré en contra del pensamiento convencional aquí y sugeriré que los idiomas más fáciles para usar OOP no son necesariamente los mejores idiomas para aprenderlo . Primero estuve expuesto a OOP con C ++, pero no lo "entendí" hasta que leí el capítulo del libro Camel de Larry Wall sobre OOP con Perl. Por alguna razón, tuve problemas para comprender la diferencia entre clases y objetos hasta tener que bendecir explícitamente un objeto en una clase. Realmente no entendí la implementación subyacente de OOP hasta hacerlo en C con GObject, donde ninguno de esos detalles está oculto para usted. Realmente no entendí las mejores prácticas hasta que tomé una clase corporativa que no tenía en cuenta el idioma. Es un tema muy grande..

Karl Bielefeldt
fuente