¿Preguntas comunes que los estudiantes pueden hacer cuando aprenden OOP?
Leyendo esta pregunta ¿Realmente necesitamos lenguajes OO para gestionar la complejidad del software? en uno de los sitios de SE y mis propias experiencias en la enseñanza de conceptos orientados a objetos, por ejemplo, algún ejemplo práctico real para enseñar conceptos y programación orientados a objetos (en Python) me ha mantenido preguntándome cuáles son las preguntas comunes que los estudiantes pueden hacer cuando aprenden por primera vez POO .
Por ejemplo, en esa pregunta el autor hizo,
Soy un estudiante de informática principiante ... En el primer semestre nos presentaron conceptos de POO como encapsulación, ocultación de datos, modularidad ...
Pero creo que todos los principios utilizados para gestionar la complejidad, como la modularidad, la encapsulación, la ocultación de datos, etc., pueden implementarse muy fácilmente mediante lenguajes de procedimiento. Entonces, ¿por qué realmente OOP si podemos gestionar la complejidad sin ella?
También tengo que admitir que tengo mis propios problemas, por ejemplo, hice esta pregunta ¿OOP enfatiza demasiado la importancia del sustantivo y, por lo tanto, coloca la acción / verbo en la posición de menor importancia? en ese sitio también (sin embargo, ningún estudiante me ha hecho esta pregunta)? Mi pregunta fue cerrada e incluso obtuve 2 votos de eliminación, pero esa es siempre mi preocupación.
Si mis estudiantes o mis colegas que tienen experiencia con javascript y les gusta aprender OOP, siempre les dejaré comparar momentjs con date-fns , ambos tratan con date y proporcionan funciones similares, ambos hacen un buen trabajo, pero momentjs una biblioteca OOP y date-fns es una biblioteca de funciones.
Mi propósito es que entiendan que hay más de una forma de hacer las cosas.
Entonces, ¿cuáles son las preguntas comunes que hacen sus estudiantes?
Respuestas
Leí las preguntas más votadas etiquetadas orientadas a objetos en softwareengineering.stackexchange.com y stackoverflow.com . Siento que algunas preguntas en el sitio de ingeniería de software son bastante comunes cuando se aprende OOP, mientras que las preguntas en stackoverflow están más relacionadas con preguntas prácticas de programación que es más probable que hagan los profesionales.
Entonces enumeré algunas preguntas del sitio de ingeniería de software,
- ¿Por qué es bueno dividir un programa en varias clases? . De hecho, esta pregunta fue hecha por un estudiante de secundaria.
- ¿Los objetos en OOP tienen que representar una entidad? . Mis alumnos me hacen esta pregunta.
- ¿Cuál es el beneficio de la programación orientada a objetos sobre la programación procedimental? esta está algo relacionada con la pregunta "administrar la complejidad del software" en mi pregunta y discuto con mis colegas otra pregunta interesante que se hizo en quora ¿Cómo mantiene Linux una base de código tan grande cuando C no es un lenguaje orientado a objetos? ¿La base del código está desordenada?
- ¿OOP cumple la promesa de reutilización del código? ¿Qué alternativas existen para lograr la reutilización del código? No estoy seguro de si los estudiantes harán esta pregunta y yo también tengo mi propio doble a la pregunta.
- Al escribir código orientado a objetos, ¿debería seguir siempre un patrón de diseño? . Este sitio también tiene una pregunta sobre el patrón de diseño. ¿Qué tan malo es un curso de Ciencias de la Computación que no enseña patrones de diseño?
- Explicación de cómo "Diga, no pregunte" se considera un buen OO . Solo después de que hayan adquirido algunas experiencias de codificación podrán hacer / apreciar la pregunta. Pero es bueno.
- ¿Debería crear una clase si mi función es compleja y tiene muchas variables? Una respuesta fue también mi recomendación para mis estudiantes cuando tienen la pregunta, "Use una clase, pero también proporcione una función independiente, que solo construya el objeto, llame al método y devuelva el resultado, la clase que usa internamente realmente se convierte en un detalle de implementación de su función pública "
Quora también tiene algunas preguntas interesantes que creo que la gente hará cuando aprendan por primera vez OOP, enumero algunas aquí:
- ¿Puede alguien (en la posición de programador) sobrevivir en la industria de la tecnología moderna (software o sin software) sin OOP?
- ¿Con qué frecuencia utilizan los desarrolladores de software OOP? . Una respuesta de Kurt Guntheroth es interesante: "Cada vez que escribe un programa de más de 1000 líneas, debe usar OOP. ¿1000 líneas? ¿Por qué ...?"
- ¿Cuándo la programación orientada a objetos no encaja bien?
Ojalá pueda obtener otras respuestas.
¡Esta es una pregunta realmente agradable! Tu respuesta también cubre mucho terreno.
Me gustaría ofrecer una reflexión sobre lo que podría motivar estas preguntas.
En mi experiencia, los estudiantes que se encuentran con la POO al principio de su viaje tienen que luchar con algunos desafíos diferentes, que incluyen:
- Todavía no han experimentado los problemas que resuelve la programación orientada a objetos.
- Creen que existe una solución perfecta para todos los desafíos de programación que esperan ser descubiertos.
Estos dan lugar a un montón de preguntas, confusiones y, en algunos casos, inseguridades.