Apos conhecer os padroes GRASP comecamos a desenvolver muito mais claro e os "maus cheiros" diminuem consideravelmente, a minha intensao escrevendo este post e tentar explicar um pouco dos padroes ou conceitos GRASP, pois acredito que eles nao sao tao difundidos quanto os do GoF, porem sao tao importante quanto.Para comecar devemos entender o que e responsabilidade, sendo assim devemos entender a responsabilidade pelo seu tamanho, por exemplo, uma grande responsabilidade pode envolver diversas classes e metodos, um exemplo disso e "gerenciar provas em um sistema de vestibular", isso pode envolver diversas classes ( sala, prova, candidato, etc ...) e diversos metodos, ja se a responsabilidade for pequena isso pode envolver um unico metodo, por exemplo, "imprimir lista de candidatos" isso talvez envolva um unico metodo de uma classe, o entendimento de responsabilidade e importante pois assim comecamos a entender a programacao orientada a objetos, para Craig Larman " uma responsabilidade nao e a mesma coisa que um metodo - e uma abstracao - porem metodos satisfazem as responsabilidades.", e Martin Fowler diz que "Entender responsabilidades e essencial para o bom projeto orientado a objetos".As responsabilidades de um projeto podem ser divididas em conhecer e fazerAs responsabilidades conhecer estao relacionadas a distribuicao das caracteristicas do sistema entre as classes;As responsabilidades fazer estao relacionadas com a distribuicao do comportamento do sistema entre as classes;A funcao principal dos padroes ou principios GRASP e nos ajudar a projetar Orientado a Objetos com responsabilidade, pois como Craig Larman diz apos entendermos os principios e fundamentos os termos que veremos a seguir como especialista da informacao, criador, e etc.., deixam de ser relevantes pois aprendemos o essencial que e como projetar guiados por responsabilidade.Ao longo de 9 artigos pretendo explicar um pouco de cada padrao, e para isso vou usar o dominio sitado anteriormente, gerenciar as provas em um sistema de gerenciamento de vestibulares, para explicar o dominio vou utilizar a maneira bastante interessante que eu vi no livro DDD de Eric Evans, entao vamos dar inicio ao trabalho.Dialogo entre o Time e o Cliente para modelar o gerenciamento das provas:...Time: Bom dia, vamos comecar pelas caracteristicas da prova.Cliente: Eu preciso definir qual o periodo de realizacao da prova, eu defino a data de realizacao e o horario de inicio e fim.Time: Tem mais alguma coisa que voce pretende definir ou diferenciar da prova?Cliente: Sim, estava esquecendo ja, as provas devem ser diferenciadas por tipos, hoje realizamos dois tipos de prova, Digital que sao provas realizadas em nossos laboratorios de informatica, e as Presencias que sao feitas em sala de aula.Time: Notamos que voce falou que 'hoje' voces realizam essas provas, voces pretendem inserir um novo tipo de prova?Cliente: Sim, uma prova somente de Redacao, que deve ser realizada nas fases posteriores ao processo, as fases de complementacao de vagas.Time: Entao para esse primeiro momento nao pretendem usar a prova de Redacao?Cliente: Nao, isso e so para a 2o parte do processo.Time: As provas podem ser realizadas ao mesmo tempo?Cliente: Sim, porem em salas diferentes, para as provas digitais usamos bastante isso.Time: Ok. Entao vamos retomar para