\chapter{Ergänzungen zur \mddn}
\minitoc

\newpage

\section{Ergänzungen zur Codegenerierung mittels einer Programmiersprache}
\label{anhang_javaClass_codegen}
Listing \ref{listing_JavaClass} zeigt beispielhaft die Implementierung einer Klasse zur Generierung von Java-Klassen.
\vspace{5pt}
\begin{lstlisting}[frame=single, label=listing_JavaClass, language=Java, caption={Beispielklasse eines Generators zur Erstellung von Java-Klassen, Quelle: \mycite{Stahl07}, S. 150}]
public class JavaClass {
	public String packageName;
	public String name;
	public List<JavaMember> members;

	@Override
	public String toString()
	{
	    String buff = "package " + packageName + ";\n" +
	        "\n" + 
	        "public class " + name + " {\n";
	    for (Member m : members)
	        buff += m;
	    buff += "}\n";
	    return buff;	
	}
}
\end{lstlisting} 

\newpage
\section{Elemente der MOF}
\label{anhang_mof}
Abbildung \ref{img_mof} zeigt einen vereinfachten Ausschnitt der MOF.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{images/anhang/MOF.png} 
\caption{Ausschnitt der MOF, Quelle: (\cite{Stahl07}, S. 65)}
\label{img_mof}
\end{figure}

\newpage
\section{Elemente der EMOF}
\label{anhang_emof}
Abbildung \ref{img_emof} zeigt einen vereinfachte Darstellung der Elemente der EMOF.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{images/anhang/EMOF.png} 
\caption{Elemente der EMOF, Quelle: angelehnt an die Klassen-Diagramme in (\cite{MOFSpec})}
\label{img_emof}
\end{figure}

\newpage
\section{Ergänzungen zu JET}
\subsection{Codegenerierungsansatz von JET}
\label{anhang_jet_ansatz}
Listing \ref{listing_anhang_jetTemp} zeigt ein JET-Template. 
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_jetTemp, caption={Einfaches JET-Template, Quelle: (\cite{JETTutorial}, Abschnitt: Under the Hood)}, language=Jet, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_jet}

Listing \ref{listing_anhang_jetClass} zeigt die Java-Klasse, die für das zuvor gezeigte Template durch JET generiert wird. 
\lstinputlisting[frame=single, numbers=left, tabsize=3, label=listing_anhang_jetClass, caption={Für das JET-Template generierte Java-Klasse, Quelle: (\cite{JETTutorial}, Abschnitt: Under the Hood)}, language=Java, keywordstyle=\color{darkred}, commentstyle=\color{darkgrey}, stringstyle=\color{darkblue}]{listings/anhang/lst_jetClass}

\subsection{JET Templates}
\label{anhang_jet}
Listing \ref{listing_jetModel} zeigt ein Modell im XML-Format. Aus diesem Modell kann mittels des JET-Templates in Listing \ref{listing_jetTemplate} eine Java-Klasse erstellt werden. Das JET-Template in Listing \ref{listing_jetTemplateRuby} erstellt aus dem Modell eine Ruby-Klasse.

\begin{lstlisting}[frame=single, tabsize=3, label=listing_jetModel, language=XML, caption={Beispiel eines XML-Modells, Quelle: \mycite{JETDevX}}]
<class name="HelloClass">
	<phrase>Hello,World!</phrase>
</class>
\end{lstlisting} 

\begin{lstlisting}[frame=single, tabsize=3, language=Java, stringstyle=\color{black}, label=listing_jetTemplate, caption={Beispiel eines JET-Templates zur Erzeugung einer Java-Klasse, Quelle: \mycite{JETDevX}}]
public class <c:get select="/class/@name" /> {
	public static void main(String[] args) {
		System.out.println("<c:get select="/class/phrase" />");
	}
}
\end{lstlisting} 

\begin{lstlisting}[frame=single, tabsize=3, language=Ruby, stringstyle=\color{black}, label=listing_jetTemplateRuby, caption={Beispiel eines JET-Templates zur Erzeugung einer Ruby-Klasse, Quelle: \mycite{JETDevX}}]
class <c:get select="/class/@name" /> 
  def sayPhrase
    puts "<c:get select="/class/phrase" />"
  end
end
\end{lstlisting} 
