<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="../../../templates/classz.xsl"?>
<schema title="Decorator" xmlns="http://www.lepus.org.uk/classz"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.lepus.org.uk/classz ../../../templates/classz.xsd">
	<description>The Decorator design pattern</description>
	<declarations>
		<declare>
			<variable value="component" />
			<variable value="decorator" />
			<type value="CLASS" exponent="0" />
		</declare>
		<declare>
			<variable value="ConcreteDecorators" />
			<variable value="ConcreteComponents" />
			<type value="CLASS" exponent="1" />
		</declare>
		<declare>
			<variable value="Ops" />
			<type value="SIGNATURE" exponent="1" />
		</declare>
	</declarations>
	<formulas>
		<formula>
			<relationsymbol value="Abstract" />
			<variable value="component" />
		</formula>
		<formula>
			<predicatesymbol value="All" />
			<relationsymbol value="Abstract" />
			<superimposition>
				<variable value="Ops" />
				<variable value="component" />
			</superimposition>
		</formula>
		<formula>
			<relationsymbol value="Inherit" />
			<variable value="decorator" />
			<variable value="component" />
		</formula>
		<formula>
			<predicatesymbol value="Total" />
			<relationsymbol value="Inherit" />
			<variable value="ConcreteComponents" />
			<variable value="component" />
		</formula>
		<formula>
			<predicatesymbol value="Total" />
			<relationsymbol value="Inherit" />
			<variable value="ConcreteDecorators" />
			<variable value="decorator" />
		</formula>
		<formula>
			<predicatesymbol value="Total" />
			<relationsymbol value="Forward" transitive="true" />
			<superimposition>
				<variable value="Ops" />
				<variable value="ConcreteDecorators" />
			</superimposition>
			<superimposition>
				<variable value="Ops" />
				<variable value="decorator" />
			</superimposition>
		</formula>
		<formula>
			<predicatesymbol value="Total" />
			<relationsymbol value="Forward" transitive="true" />
			<superimposition>
				<variable value="Ops" />
				<variable value="decorator" />
			</superimposition>
			<superimposition>
				<variable value="Ops" />
				<variable value="component" />
			</superimposition>
		</formula>
		<formula>
			<predicatesymbol value="All" />
			<relationsymbol value="Method" />
			<superimposition>
				<variable value="Ops" />
				<variable value="ConcreteComponents" />
			</superimposition>
		</formula>
	</formulas>
</schema>
