
O conceito básico de orientação a objetos é a criação de objetos (instâncias) a partir de uma classe definida. A classe representa uma espécie de forma ou moldura de onde são instânciados objetos com as características. A classe portanto caracteriza os objetos criados, incorporando características (atributos) e ações (métodos).
Princípios de Orientação a Objetos norteiam o desenvolvimento orientado a objetos de forma a auxiliar para que sejam mais escalável e manutenível. Evitando que o conceito básico de orientação a objetos inflija heurísticas e métricas de desenvolvimento
Antes da apresentação dos princípios, gostaria de definir um ponto de vista.
Padrões ou Princípios?
A Definição de padrão é modelo, medida. Princípio é toda estrutura sobre a qual se constrói alguma coisa. Diferente dos padrões definidos pelo GoF, que reflete modelos de solução-problema, os princípios esta mais ligado a essência da programação, a forma de pensar e projetar um sistema.
Por esse motivo não vou tratar GRASP como padrão (pattern) e sim como princípio.
Pois os princípios devem ser incorporados pelo programador antes dos padrões.
Além dos 9 princípios GRASP que serão apresentados, há também outros princípios difundidos:
- Open-Close Principle (OCP)
- Liskov Substitution Principle (LSP)
- Single Responsability Principle (SRP)
- Don’t Repeat Yourself (DRY)
- Dependency Inversion Principle (DIP)
- Interface Segregation Principle (ISP)
Ao meu ver esses princípios são subprodutos do GRASP. Também vou apresenta-los mas após o GRASP para ficar mais explicito.
Relacionamento de princípios
Os patterns definem a solução para um determinado problema. Já os princípios são complementares e se relacionam para a aplicação de responsabilidade nos projetos de desenvolvimento de software e estão presentes em todos os níveis da aplicação.
Ao apresentar cada princípio em detalhes será possível perceber esse relacionamento e dependência entre os princípios.
Até mais
