quinta-feira, 7 de agosto de 2014

Principios S.O.L.I.D

Hoje vamos falar de 5 principios para o desenvolvimento de um código orientado a objeto de qualidade e profissional. Iremos fazer um resumo desses principios e falar o porque são importantes, devemos saber também  que os princípios SOLID para programação e design orientados a objeto são de autoria de Robert C. Martin (mais conhecido como Uncle Bob) e datam do início de 2000.
Recomendo que leiam antes, e depois assistam os vídeos.





SRP - Principio da Responsabilidade Única

"Uma classe deve ter um, e somente um, motivo para mudar." 


OCP - Principio  Aberto - Fechado

"Você deve ser capaz de estender um comportamento de uma classe sem modifica-la." 


LSP - Principio  da Substituição de Liskov
"As classes derivadas devem ser substituiveis por suas classes base."  
ISP - Principio da Segregação da Interface

"Muitas interfaces específicas são melhores do que uma interface geral." 

DIP - Principio da inversão da dependência

"Dependa de uma abstração e não de uma implementação." 


OBJETIVO:

  • Evitar erros,falhas e defeitos.
  • Evitar Estrutura de código ruim.
  • Evitar Código insustentável (difícil de manter)
  • Evitar Desempenho sofrivel
  • Evitar Código de dificil compreensão

Exemplos: 

  1. SRP - Single Responsability Principle:
 - Uma classe não poderia efetuar várias ações dentro de um determinado contexto, ela estária ferindo esse principio. Este principio tem a ver com coesão.

Ex1: 
>> Observe a classe acima, além de  obter id, nome, ela ainda salva o produto, calcula total e gera uma planilha, você concorda que essa classe tem mais de um motivo para mudar?, portanto estaria ferindo principio de responsabilidade única.


2 - OCP - Open close Principle.

- Estabelece que uma classe deve estar aberta para extensões, porém fechada para modificações, ou seja, há possibilidade de crescimento , porém sem alterar o código das classes existentes.
* Para acrescentar uma outra forma de pagamento teriamos que mexer na classe. Uma solução seria ter uma classe pagamento e adcionar subclasses, veja abaixo:



**Observe que no exemplo acima para acrescentar uma outra forma de pagamento basta criar uma subclasse, e a classe pagamento não é alterada, assim conseguimos respeitar o principio OCP.






3 - LSP - Liskov Substitution Principle.

- Usando como exemplo a super - classe Pessoa e as suas sub-classes(Pessoa Física, Pessoa Juridica).  Respeitar o principio LSP, signifca dizer que posso usar qualquer classe derivada como se fosse a classe base Pessoa, sem alterar o comportamento da classe base:








Abaixo segue dois links de vídeo,  é um  hangout sobre este assunto , vale a pena assistir!!!




ISP - Principio da Segregação da interface

 - " Os clientes não devem ser forçados a depender de interfaces que eles não usam". Em outras palavras devemos criar interface específicas mesmo que várias delas, para nossos clientes ao invés de uma interface grande de uso geral.



DIP - Principio de inversão de Dependência.

"Devemos sempre depender de classes abstratas e nunca de classes concretas. Se um objeto depender de classes concretas, qualquer alteração que ocorrer nesta classe afeta todas que dependem dela".

EX1 - Se a classe canvas for alterada todas as outras classes são alteradas.




Abaixo uma ilustração onde, todas as classes, passam a depender da classe abstrata.







Resumo :

Em resumo o principio S.O.L.I.D, é uma boa pratica de programação, que se seguida gera um código fonte de qualidade e profissional, de alta coesão, baixo acoplamento e fácil manutenção.

Nenhum comentário:

Postar um comentário