INTERFACES

HERANÇA DE CLASSE VERSUS HERANÇA DE INTERFACE

"PROGRAM TO AN INTERFACE, NOT AN IMPLEMENTATION"

EXEMPLO NO USO DE INTERFACES

ACOPLAMENTO

ACOPLAMENTO DE DADOS

ACOPLAMENTO DE CONTROLE

 

class Lampada {
     public static final ON = 0;
     public void setLampada( int valor ) {
          if ( valor == ON )
               // liga lampada
          else if ( valor == 1 )
               // desliga lampada
          else if ( valor == 2 )
               // pisca
     }
}
Lampada lampapa = new Lampada();
lampada.setLampada(Lampada.ON);
lampada.setLampada(2);
class Lamp {
     public void on() { // liga lampada }
     public void off() { // desliga lampada }
     public void pisca() { // pisca }
}


Lampada lampada = new Lampada();
lampada.on();
lampada.pisca();

 

class Teste {
     public int printFile(File toPrint) {
          if(toPrint está corrompido )
               return CORRUPTFLAG;
          etc. etc.
     }
}


Teste umTeste = new Teste();
int resultado =  umTese.printFile( miniTeste );
if(resultado == CORRUPTFLAG) {
     oh! oh!
else if(resultado == -243) {
     etc. etc.
class Teste {
     public int printFile(File toPrint) throws
                               PrintExeception {
          if(toPrint está corrompido )
               throw new PrintExeception();
          etc. etc.
     }
}

try {
     Teste umTeste = new Teste();
     umTeste.printFile( miniTeste );
} catch(PrintException printError) {
     faça algo
}

ACOPLAMENTO DE DADOS GLOBAIS

ACOPLAMENTO DE DADOS INTERNOS

COESÃO

COESÃO COINCIDENTAL

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)

tecnicas4.htm programa anterior próxima