Siempre he programado en lenguajes de procedimiento y actualmente me estoy moviendo hacia la orientación a objetos. El principal problema al que me enfrento es que no puedo ver una forma de practicar la orientación a objetos de manera efectiva. Explicaré mi punto. Cuando aprendí PHP y C fue bastante fácil de practicar: solo era cuestión de elegir algo y pensar en un algoritmo para esa cosa.
En PHP, por ejemplo, era cuestión de sentarse y pensar: "bueno, solo para practicar, permítanme crear una aplicación con un área de administración donde la gente pueda agregar productos". Esto fue bastante fácil, era cuestión de pensar en un algoritmo para registrar algún usuario, iniciar sesión en el usuario y agregar los productos. Combinando esto con las características de PHP, fue una buena forma de practicar.
Ahora, en orientación a objetos, tenemos muchas cosas adicionales. No se trata solo de pensar en un algoritmo, sino de analizar los requisitos más a fondo, escribir casos de uso, descubrir diagramas de clases, propiedades y métodos, configurar la inyección de dependencia y muchas cosas más.
El punto principal es que, en la forma en que he estado aprendiendo la orientación a objetos, parece que un buen diseño es crucial, mientras que en lenguajes de procedimiento una idea vaga fue suficiente. Estoy no decir que en las lenguas de procedimiento se puede escribir un buen software sin diseño, sólo que por el bien de la práctica es factible, mientras que en la orientación a objetos que no parece factible que ir sin un buen diseño, incluso para la práctica.
Esto parece ser un problema, porque si cada vez que voy a practicar necesito averiguar toneladas de requisitos, casos de uso, etc., parece que no es una buena manera de mejorar la orientación de los objetos, porque esto requiere Me gustaría tener una idea completa para una aplicación cada vez que voy a practicar.
Por eso, ¿cuál es una buena manera de practicar la orientación a objetos?