<?xml version="1.0" encoding="UTF-8"?>
<DesignPattern xmlns="http://www.alshayeb.com/DPDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.alshayeb.com/DPDL/DPDLSchema.xsd" PatternName="AdapterTemplate" Motivation="For new language" AuthorName="Salman">
	<StructuralAttributes>
		<Classes>
			<SubGroup groupID="ClientClasses" noOfClasses="1ToMay">
				<Class className="Client" isAbstract="No" classModifier="public" hasConstructor="Yes" isDerived="No" isParent="Yes"/>
			</SubGroup>
			<SubGroup groupID="TargetClasses" noOfClasses="1">
				<Class className="Target" isAbstract="Yes" classModifier="public" hasConstructor="Yes" isDerived="No" isParent="Yes"/>
			</SubGroup>
			<SubGroup groupID="AdapteeCl" noOfClasses="1ToMany">
				<Class className="Adaptee" isAbstract="No" classModifier="public" hasConstructor="Yes" isDerived="No" isParent="No"/>
			</SubGroup>
			<SubGroup groupID="AdapterClasses" noOfClasses="1">
				<Class className="Adapter" isAbstract="No" hasConstructor="Yes" isDerived="Yes" parentId="Target"/>
			</SubGroup>
		</Classes>
		<Operations>
			<SubGroupOp groupID="TargetRequest" noOfOperations="1">
				<Function functionName="Request" containingClassId="Target" isAbstract="No" functionModifier="public" returnType="null"/>
			</SubGroupOp>
			<SubGroupOp groupID="AdapterRequest" noOfOperations="1">
				<Function functionName="Request" containingClassId="Adapter" isAbstract="No" functionModifier="public" returnType="null" isOverRide="No"/>
			</SubGroupOp>
			<SubGroupOp groupID="AdapteeSpRequest" inEach="class" inGroupID="AdapteeCl">
				<Function functionName="SpecificRequest" containingClassId="Adaptee" isAbstract="No" functionModifier="public" returnType="null" isOverRide="No"/>
			</SubGroupOp>
		</Operations>
		<Objects>
			<SubgroupOb groupID="AdapteeObject" forEach="class" inGroupID="adapteeCl">
				<Object objectName="_adaptee" containingClass="Adapter" objectClass="Adaptee"/>
			</SubgroupOb>
			<SubgroupOb groupID="clientObject" inEach="class" inGroupID="ClientClasses">
				<Object objectName="target" containingClass="Client" objectClass="Target" objectModifier="public"/>
			</SubgroupOb>
		</Objects>		
		<RelationShips>
			<SubgroupR groupID="AdapteeRelation" forEach="class" inGroupID="AdapteeCl" changingClass="endClass">
				<Relation relationName="Association" initiatingClass="Adapter" endClass="Adaptee"/>
			</SubgroupR>
			<SubgroupR groupID="AdapterRelation" noOfRelations="1">
				<Relation relationName="Generalization" initiatingClass="Adapter" endClass="Target"/>
			</SubgroupR>
			<SubgroupR groupID="ClientRelation" noOfRelations="1ToMay" forEach="class" inGroupID="ClientClass" changingClass="initiatingClass">
				<Relation relationName="Association" initiatingClass="Client" endClass="Target"/>
			</SubgroupR>
		</RelationShips>
	</StructuralAttributes>
	<BehavioralAttributes>
		<create callingClass="MainApp" returns="Adapter" Collection="No" ObjectId="target" objectClass="Target" createType="new"/>
		<call callingClass="MainApp" returns="null" variableType="{null}" variables="{null}" calledClass="Adapter" CallFrom="constructor" calledThrough="target" Calledfunction="Request">
			<call callingClass="Adapter" returns="null" variableType="{null}" variables="{null}" calledClass="Adaptee" CallFrom="Request" Calledfunction="SpecificRequest" calledThrough="adaptee">
			</call>
		</call>
	</BehavioralAttributes>
	</DesignPattern>
