Sempre que me pediam para construir um projeto, sempre consegui construí-lo, não antes de planejar um plano ou design, mas depois de escrever uma classe necessária, aprofundando todo o projeto, construindo de baixo para cima. Agora eu sei que essa não é a maneira correta de criar software, mas não é fácil para mim entender o que é chamado de Análise e Design Orientado a Objetos. Eu posso entender mais facilmente o design de procedimentos de cima para baixo, pois consiste apenas em dividir tarefas em subtarefas, coisas que têm sua contrapartida no código, funções. Mas a Análise e o Projeto Orientados a Objetos não consigo entender facilmente, pois não entendo como alguém pode saber de quais classes elas precisarão e como irão interagir, a menos que saibam como as codificarão.
Por uma vez que introduzimos o conceito de classes e objetos no processo de design, não podemos mais projetar de cima para baixo, porque não estamos mais dividindo nossos problemas naquelas coisas que podem ser implementadas como procedimentos. Em vez disso, de acordo com o que li sobre o assunto, precisamos determinar quais classes são necessárias e criar vários artefatos na Unified Modeling Language, que podemos usar quando implementamos o software. Mas esse tipo de processo de design eu não entendo. Pois como é possível saber de quais classes eles precisarão e como irão interagir, a menos que já tenham concebido todo o sistema?
Este é o meu problema. Eu não entendo como projetar um sistema orientado a objetos, embora compreenda os conceitos de programação orientada a objetos e possa usá-los em qualquer linguagem de programação orientada a objetos que eu conheça. Portanto, preciso que alguém me explique qual processo simples posso usar para projetar sistemas orientados a objetos de uma maneira que faça sentido para mim.