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 única ALTA 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 repita ALTA 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ência BAIXO 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 Interfaces BAIXO 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

boas praticas

  • 1.
    Boas Práticas deOO (Princípios) Msc Luiz Barboza
  • 2.
    Princípios de ProjetoOrientado 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
  • 3.
    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.
  • 4.
    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
  • 5.
    SRP - SingleResponsability Principle Princípio da responsabilidade única ALTA 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;
  • 6.
    Don’t Repeat Yourself(DRY) Não se repita ALTA 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.
  • 7.
    Dependency Inversion Principle(DIP) Princípio da Inversão de Dependência BAIXO 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
  • 8.
    Interface Segregation Principle(ISP) Princípio da Segregação de Interfaces BAIXO 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
  • 9.
    Boas Práticas deOO (Princípios) Msc Luiz Barboza