Download - SOLID Principies
![Page 1: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/1.jpg)
SOLID Principiesboas práticas de programação
Vitor Castro
quarta-feira, 22 de agosto de 12
![Page 2: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/2.jpg)
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
![Page 3: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/3.jpg)
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
![Page 4: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/4.jpg)
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
![Page 5: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/5.jpg)
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
![Page 6: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/6.jpg)
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
![Page 7: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/7.jpg)
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
![Page 8: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/8.jpg)
+ 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
![Page 9: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/9.jpg)
Equivalência de reuso
• um código JAMAIS deverá ser copiado de outro código, duplicando-o
quarta-feira, 22 de agosto de 12
![Page 10: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/10.jpg)
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
![Page 11: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/11.jpg)
Reuso em comum
• O reuso deverá ser a nível de pacote
quarta-feira, 22 de agosto de 12
![Page 12: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/12.jpg)
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
![Page 13: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/13.jpg)
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
![Page 14: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/14.jpg)
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
![Page 15: SOLID Principies](https://reader034.vdocument.in/reader034/viewer/2022042716/55a942391a28ab195d8b475a/html5/thumbnails/15.jpg)
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