solid principies
TRANSCRIPT
SOLID Principiesboas práticas de programação
Vitor Castro
quarta-feira, 22 de agosto de 12
5 princípios
• Princípio da responsabilidade única
• Princípio do aberto/fechado
• Princípio da substituição de Liskov
• Princípio da segregação de Interfaces
• Princípio da inversão de dependência
quarta-feira, 22 de agosto de 12
Responsabilidade Única
• Responsabilidade é uma tarefa ou ação que a classe de realizar
• A classe deve possuir uma única responsabilidade
quarta-feira, 22 de agosto de 12
Aberto/Fechado
• Trabalha diretamente com a manutenção de classes
• “Classes devem ser abertas para extensão, mas fechadas para manutenção”
• Uso de herança e classe abstratas que se diferenciam através de tipos comuns
quarta-feira, 22 de agosto de 12
Inversão de Dependência
• Toda classe de auto nível seja completamente independente de suas subclasses.
• As classes não podem depender dos detalhes da implementação de seus métodos e classes.
• Uso de interfaces para acoplar as classes.
quarta-feira, 22 de agosto de 12
Substituição de Liskov
• A classe base deve poder ser substituida pela sua classe filha
• Uso de sobrecarga de método
quarta-feira, 22 de agosto de 12
Segregação de interfaces
• Um interface não pode forçar uma classe a implementar um método que não pertence a ela.
• Criar interfaces exutas.
quarta-feira, 22 de agosto de 12
+ 6 princípios
• Princípio da equivalência de reuso
• Princípio do escopo em comum
• Princípio do reuso em comum
• Princípio da dependência acíclica
• Princípio de dependência estáveis
• Princípio de abstrações estáveis
quarta-feira, 22 de agosto de 12
Equivalência de reuso
• um código JAMAIS deverá ser copiado de outro código, duplicando-o
quarta-feira, 22 de agosto de 12
Escopo em comum
• Classes devem possuir responsabilidades únicas.
• Em nível de pacote, classes com responsabilidades em comum devem ser organizadas no mesmo pacote.
quarta-feira, 22 de agosto de 12
Reuso em comum
• O reuso deverá ser a nível de pacote
quarta-feira, 22 de agosto de 12
Dependência acíclica
• Dependência mínima entre os pacotes
• Uso de interfaces para diminuir o acoplamento entre pacotes
quarta-feira, 22 de agosto de 12
Dependência estáveis
• Pacote menos estável deve ser ligado em um pacote mais estável
• Estável = coesos
quarta-feira, 22 de agosto de 12
Abstrações estáveis
• Enfatiza a criação de pacotes abstratos
• Implementação de classe que não dependam de classes concretas
quarta-feira, 22 de agosto de 12
Referências
• Utilização dos princípios SOLID na aplicação de Padrões de Projeto, edição nº 50 da Engenharia de Software Magazine;
quarta-feira, 22 de agosto de 12