Upload
lcbj
View
1.762
Download
1
Embed Size (px)
Citation preview
Boas Práticas de OO(Princípios)
Msc Luiz Barboza
Princípios de Projeto Orientado a Objetos Open/Closed Principle (OCP)
Princípio do Aberto/Fechado Liskov Substitution Principle (LSP)
Princípio da Substituição de Liskov SRP - Single Responsability Principle
Princípio da responsabilidade única Don’t Repeat Yourself
(DRY) Não se repita
Dependency Inversion Principle (DIP) Princípio da Inversão de Dependência
Interface Segregation Principle (ISP) Princípio da Segregação de Interfaces
Open/Closed Principle (OCP)Princípio do Aberto/Fechado
Um módulo deveria ser aberto para extensão mas fechado para modificação.
Objetivo: criar módulos que sejam estensíveis sem precisarem ser modificados
Conseqüências Mudanças não se propagam para código que já
existe Se você não precisa mudar um código, então
provavelmente você não vai quebrá-lo.
Liskov Substitution Principle (LSP)Princípio da Substituição de Liskov
Sempre que uma classe cliente espera uma instância de uma classe base A, uma instância de uma subclasse B de A deve poder ser usada no lugar.(relação É-UM)
Objetivo: evitar que premissas em relação a classes base não sejam quebradas por suas subclasses
Exemplo clássico: elipse e círculo
SRP - Single Responsability Principle Princípio da responsabilidade únicaALTA COESÃO
Deve existir um e somente UM MOTIVO para que uma classe mude
Conseqüências Baseado no princípio da coesão funcional, uma
classe deve ter uma única responsabilidade; Se uma classe possuir mais de uma
responsabilidade, deve-se considerar sua decomposição em duas ou mais classes;
Cada responsabilidade é um “eixo de mudança” e as fontes de mudança devem ser isoladas;
Don’t Repeat Yourself (DRY)Não se repitaALTA COESÃO
Cada informação e comportamento do seu sistema deve estar em um único lugar sensível. Ou seja, não deve existir código repetido através
do sistema.
Dependency Inversion Principle (DIP)Princípio da Inversão de DependênciaBAIXO ACOPLAMENTO
Dependa sempre de interfaces abstratas, e nunca de classes concretas
Justificativa: Implementações concretas são mais propensas a
mudanças Possibilidade de alterar (ou incluir novas)
implementações sem necessidade de alterar classes clientes
Interface Segregation Principle (ISP)Princípio da Segregação de InterfacesBAIXO ACOPLAMENTO
Expor o mínimo possível necessário para cada uso de uma determinada classe
Uma interface pra cada possível tipo de cliente.
Objetivos: Minimizar dependências Facilitar compreensão dos módulos clientes
Boas Práticas de OO(Princípios)
Msc Luiz Barboza