Java Reference
In-Depth Information
/ ** Baseclass:Composite * /
publicinterfaceVarBinNode{
publicbooleanisLeaf();
publicvoidtraverse();
}
/ ** Leafnode:Composite * /
classVarLeafNodeimplementsVarBinNode{
privateStringoperand; //Operandvalue
publicVarLeafNode(Stringval){operand=val;}
publicbooleanisLeaf(){returntrue;}
publicStringvalue(){returnoperand;}
publicvoidtraverse(){
Visit.VisitLeafNode(operand);
}
}
/ ** Internalnode:Composite * /
classVarIntlNodeimplementsVarBinNode{//Internalnode
privateVarBinNodeleft; //Leftchild
privateVarBinNoderight; //Rightchild
privateCharacteroperator; //Operatorvalue
publicVarIntlNode(Characterop,
VarBinNodel,VarBinNoder)
{operator=op;left=l;right=r;}
publicbooleanisLeaf(){returnfalse;}
publicVarBinNodeleftchild(){returnleft;}
publicVarBinNoderightchild(){returnright;}
publicCharactervalue(){returnoperator;}
publicvoidtraverse(){
Visit.VisitInternalNode(operator);
if(left!=null)left.traverse();
if(right!=null)right.traverse();
}
}
/ ** Preordertraversal * /
publicstaticvoidtraverse(VarBinNodert){
if(rt!=null)rt.traverse();
}
Figure5.11 A second implementation for separate internal and leaf node repre-
sentations using Java class inheritance and virtual functions using the composite
design pattern. Here, the functionality of traverse is embedded into the node
subclasses.
Search WWH ::




Custom Search