. . [55]. . , . (data tokens), . .
. . , .
, . 14.1 SumAndProduct. , SumN, . SumN :
N1 SumN1 I1 SumN2 O1 I2 12 N2 SumN3 SumN4 I3.
. 14.1. SumN
, 12 1 . ProdN:
N1 ProdN1 I1 ProdN2 11 I2 12 N2 ProdN3 ProdN4 I4
. . 14.1.
14.1. SumAndProduct
SumN | ProdN | |
procedure SumAndProduct | ||
(Niinteger; | ||
varSumN, ProdNiinteger) | ||
var | ||
l:integer; | ||
begin | ||
SumN:=0 | ||
ProdN:=1 | ||
for l:=1 to N do begin | ||
SumN:=SumN+l | ||
ProdN:=ProdN*l | ||
end | ||
end; |
, i - , .
. . , SumAndProduct
SA(SumAndProduct) = {N1 ∙ SumN1 ∙ I1 ∙ SumN2 ∙ 01 ∙ I2 ∙ I2 ∙ N2 ∙ SumN3 ∙ SumN4 ∙ I3,
N1 ∙ ProdN1 ∙ I1 ∙ ProdN2 ∙ I1 ∙ I2 ∙ I2 ∙ N2 ∙ ProdN3 ∙ ProdN4 ∙ I4}.
.
(Class Slice Abstraction) CSA(C) . .
, .
, .
|
|
(StrongData Cohesion) , , . , , :
,
SG (CSA(C)) , () .
, .
(Weak Data Cohesion) , , . , . :
,
G (CSA(C)) . . (Data Adhesiveness). , , . :
.
. , . 14.2.
14.2. Stack
array top size | Stack |
class Stack {int *array, top, size; | |
public: | |
Stack (int s) { | |
2 2 | size=s; |
2 2 | array=new int [size]; |
top=0;} | |
int IsEmpty () { | |
return top==0}; | |
int Size (){ | |
return size}; | |
intVtop(){ | |
3 3 | return array [top-1]; } |
void Push (int item) { | |
2 2 2 | if (top= =size) |
printf ("Empty stack. \n"); | |
else | |
3 3 3 | array [top++]=item;} |
int Pop () { | |
if (IsEmpty ()) | |
printf ("Full stack. \n"); | |
else | |
--top;} | |
}; |
, CSA(Stack) 19 , 5 12 .
:
SDC(CSA(Stack)) = 5/19 = 0,26
WDC(CSA(Stack)) = 12/19 = 0,63
DA(CSA(Stack)) =(7*2 + 5*3)/(19*3) = 0,51