Padrão para atribuir responsabilidades: Alta Coesão

Problema

Solução

Exemplo

18-9.gif (2468 bytes)

18-10.gif (2585 bytes)

Discussão

Coesão coincidental

class Angu {
  public static int acharPadrão(String texto, String padrão) {
    // ...
  }
  public static int média(Vector números) {
    // ...
  }
  public static outputStream abreArquivo(string nomeArquivo) {
    // ...
  }
}

class Xpto extends Angu { // quer aproveitar código de Angu
  ...
}

Coesão lógica

public void faça(int flag) {
  switch(flag) {
  case ON:
    // coisas para tratar de ON
    break;
  case OFF:
    // coisas para tratar de OFF
    break;
  case FECHAR:
    // coisas para tratar de FECHAR
    break;
  case COR:
    // coisas para tratar de COR
    break;
  }
}

Coesão temporal

procedure inicializaDados() {
  font = "times";
  windowSize = "200,400";
  xpto.nome = "desligado";
  xpto.tamanho = 12;
  xpto.localização = "/usr/local/lib/java";
}
class Xpto {
  public Xpto() {
    this.nome = "desligado";
    this.tamanho = 12;
    this.localização = "/usr/local/lib/java";
  }
}
[Macintosh]
EquationWindow=146,171,406,661
SpacingWindow=0,0,0,0 

[Spacing]
LineSpacing=150%
MatrixRowSpacing=150%
MatrixColSpacing=100%
SuperscriptHeight=45%
SubscriptDepth=25%
LimHeight=25%
LimDepth=100%
LimLineSpacing=100%
NumerHeight=35%
DenomDepth=100%
FractBarOver=1pt
FractBarThick=0.5pt
SubFractBarThick=0.25pt
FenceOver=1pt
SpacingFactor=100%
MinGap=8%
RadicalGap=2pt
EmbellGap=1.5pt
PrimeHeight=45%

[General]
Zoom=200
CustomZoom=150
ShowAll=0
Version=2.01
OptimalPrinter=1
MinRect=0
ForceOpen=0
ToolbarDocked=1
ToolbarShown=1
ToolbarDockPos=1

[Fonts]
Text=Times
Function=Times
Variable=Times,I
LCGreek=Symbol,I
UCGreek=Symbol
Symbol=Symbol
Vector=Times,B
Number=Times 

[Sizes]
Full=12pt
Script=7pt
ScriptScript=5pt
Symbol=18pt
SubSymbol=12pt

Coesão procedural

Coesão de comunicação

Coesão sequencial

Coesão funcional (a melhor)

Consequências

Exercício para casa

programa