He estado estudiando OOP en conjunto con la implementación MVC de Zend durante los últimos meses. Soy bastante nuevo en la programación, en general, pero creo firmemente que debería aprender las cosas de la manera "correcta", lo que para mí significa asegurarme de entender por qué las cosas se hacen como están. Es decir, descubrí que al aprender a hacer algo (cualquier cosa, digamos música), la mejor manera de aprender a hacer algo es saber por qué se hace de esa manera en primer lugar.
De todos modos, he estado luchando mucho para comprender cómo desarrollar mis propios modelos de negocio (es decir, la M de MVC), y he decidido que no es porque no entiendo la POO en general, porque lo he estudiado durante varios años. meses y no creo que los conceptos sean muy difíciles de entender. Los ejemplos que he estudiado me parecen muy intuitivos, en realidad. Creo que el problema para mí radica en el proceso de traducir mis propios problemas en soluciones orientadas a objetos. Los ejemplos en los libros (que he leído hasta ahora) son demasiado obvios, por lo que el proceso de traducir el problema en objetos no es muy difícil. Lo que creo que podría estar perdiendo es un proceso abstracto de alto nivel. Algún tipo de lista de pasos o preguntas que toda solución orientada a objetos debe responder al más alto nivel.
Si tuviera que describir dicho proceso en no más de cinco pasos, ¿cuáles serían y por qué? ¿Cuál es el proceso más efectivo para traducir cualquier problema en una solución orientada a objetos?
fuente
Respuestas:
Encontrar un modelo adecuado no siempre es sencillo. Es una de estas cosas que requieren más experiencia que el simple conocimiento. Sin embargo, la siguiente receta simple podría ayudarlo a superar un bloqueo mental inicial.
Originalmente fue descrito en este artículo por Abbott y frecuentemente se lo denomina "análisis textual de Abbott".
Ejemplo:
Los sustantivos , verbos y
adjectives
están marcados.Una primera iteración de análisis produciría:
Clases
A partir de aquí, puede pensar qué clase necesita qué atributos y métodos para implementar el comportamiento y luego refinar cada vez más ese modelo.
fuente
En mi opinión, adoptar el enfoque TDD es natural y eficiente:
Con este proceso, puede producir gradualmente código comprobable con diseño de sonido. Puede pensar al principio que la prueba de escritura es innecesaria, pero esa actividad realmente lo ayuda a construir una arquitectura de sonido.
fuente
Aquí están los pasos que uso en el código c ++:
La razón de (1) es que define el alcance de qué funcionalidad pertenece a la clase. La razón de (2) es que define cómo se comunica la clase con el mundo exterior. La razón de (3) es que define cómo elegir qué funcionalidad de la clase se necesita en cada situación. La razón de (4) es que permite que la clase se use en muchas situaciones diferentes. La razón de (5) es que define el límite entre diseño e implementación.
fuente