Venho estudando OOP em conjunto com a implementação MVC do Zend nos últimos meses. Eu sou bastante iniciante em programação, geralmente, mas sinto fortemente que devo aprender as coisas da maneira 'certa', o que para mim significa ter certeza de que entendo por que as coisas são feitas da maneira que são. Ou seja, eu descobri que, ao aprender a fazer alguma coisa (qualquer coisa, digamos, música), a melhor maneira de aprender a fazer alguma coisa é saber por que isso foi feito dessa maneira.
Enfim, tenho lutado muito para entender como desenvolver meus próprios modelos de negócios (ou seja, o M do MVC), e decidi que não é porque não entendo OOP em geral, porque o estudei por vários anos. meses e não acho que os conceitos sejam muito difíceis de entender. Acho os exemplos que estudei muito intuitivos, na verdade. Penso que o problema para mim reside no processo de traduzir meus próprios problemas em soluções orientadas a objetos. Os exemplos nos livros (que eu li até agora) são muito óbvios; portanto, o processo de traduzir o problema em objetos não é muito difícil. O que acho que posso estar perdendo é um processo abstrato de alto nível. Algum tipo de lista de etapas ou perguntas que toda solução orientada a objetos deve responder no nível mais alto.
Se você tivesse que descrever esse processo em não mais que cinco etapas, quais seriam e por quê? Qual é o processo mais eficaz para traduzir qualquer problema em uma solução orientada a objetos?