\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 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}}] Hello,World! \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 { public static void main(String[] args) { System.out.println(""); } } \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 def sayPhrase puts "" end end \end{lstlisting}