common closure principle

2

Click here to load reader

Upload: engenharia-de-software-agil

Post on 03-Jul-2015

258 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Common closure principle

Common Closure Principle (CCP) “classes que mudam juntas, permanecem juntas” Common Closure Principle (CCP) é um princípio design de pacotes cujo foco é a manutenabilidade do código. A abordagem foi proposta por Robert Martin, é uma generalização do Single Responsibility Principle (SIP). Para o SIP uma classe deve ter apenas um motivo para ser alterada, se mais de um tipo de mudança no sistema afeta a classe provavelmente ela pode ser dividia em mais de uma, ou seja, ela representa conceitos demais. O mesmo se aplica para pacotes. Um pacote deve seguir o Open-Closed Principle (OCP), se proteger de mudanças e ao mesmo tempo estr aberto à extensão. Características: • As classes de um pacote devem ser fechadas para os mesmos tipos de

mudança. Uma mudança que afeta um pacote afeta todas as classes daquele pacote e nenhum outro pacote

• Um pacote não deve ter múltiplas razões para mudar.

• Um mudança deve ser restrita a um (ou poucos) pacote(s)

• Então, ponha em um pacote as classes que provavelmente mudarão pela

mesma razão • As classes em um pacote devem ser fechadas em conjunto contra o

mesmo tipo de mudanças. Uma mudança que afeta um pacote afeta todas as classes desse pacote.

Um exemplo simples são as classes que manipulam horários, programação semanal,

programação quinzenal, mensal, Alterar agendamento, etc, podem formar um único pacote.

Quando for feita uma alteração de horário de verão serão afetadas todas as classes dentro do pacote.

Page 2: Common closure principle

Conclusão Mesmo a maioria dos princípios do design de classes defendendo o baixo acoplamento, de modo que elas possam mudar sem afetar as outras classes, CCP tenta visualizar as classes que são dependentes umas das outros na perspectiva da manutenção do código. Referências MARTINS, José Carlos Cordeiro, Técnicas Para Gerenciamento de Projetos de Software. http://www.fi.muni.cz/~sochor/PA103/Slajdy/TvorbaBaliku.pdf http://www.objectmentor.com/omSolutions/oops_what.html