-
Author: Jimmy Neitzert
-
Mat.Nr: Der E-Mail zu entnehmen.
-
Stand: 15.03.2021
Das ursprüngliche Problem, bzw. die Aufgabe war es aus einem UML Diagramm (erstellt mit UmpleOnline eine Klassenbibliothek zu erstellen. Diese sollte die Abhängigkeiten zwischen den Objekten und deren Attribute darstellen.
- Einlesen eines UML diagrammes, welches im Json format abgespeichert wurde
- Umwandeln dieser in Klassen mit Attributen & Listen
- Erstellen einer Klassenbibliothek
- Dokumentation
- Maske zur Eingabe über Windows Forms
- Ordnerauswahl und Dateiauswahl über
FolderBrowserDialog fbd = new FolderBrowserDialog();
undOpenFileDialog choofdlog = new OpenFileDialog();
um die Benutzung intuitiv zu halten - Erstellen der Klassenbibliothek über CLI
- Einlesen der Json mit Json.Net da dieses Framework einfach, free for commercial use und hocheffizient ist.
- Erstellen der Dateien über
File.WriteAllLines(path,string[]
- Schreiben in die Dateien über
File.AppendAllLines(path,string)
undFile.WriteAllLines(path,string[]
-
1..N und 1..* Beziehungen
In diesem Fall wird eine Listenklasse erstellt(anstatt Plural vom Klassennamen -> KlassennameListe)
-
Freistehende Objekte
In diesem Fall wird falls ein Objekt der Json noch nicht als
*.cs
Datei vorhanden ist angelegt und eine Grundinitialisierung wird vorgenommen. -
Kompositionen
Kompositionen werden in den Konstruktoren realisiert. Dateien die eine Komposition mit einer anderen Datei eingehen werden erfasst. So können "Unberührte" bzw Kernklassen einen Default Konstruktor erhalten.
-
Wieso so viele for-loops? (JsonReader.cs)
Die for-loops dienen als "Module", jeder for-loop erfüllt seine Aufgabe wie z.B: anlegen der Datei, hinzufügen von Abhängigkeiten usw. Durch diese Modularität ist es einfach das Programm zu debuggen oder zu erweitern, da man immer genau weiss was, woher kommt und wohin es soll.
-
JsonReader.cs
- Diese Klasse prüft ob die json von Umple erstellt wurde, wenn ja dann:
- Lese Json ein
File.ReadAllText(PathJson)
- Basisinitialisierung (using direktiven, setzen des Namespaces,Erstellung der Individuellen Daten)
- falls 1..* relation zwischen 2 Objekten dann erstelle Listenklasse.
- Relationen Hinzufügen durch auslesen der
"umpleAssociations"
- Freistehende Klassen ohne Relationen initialisieren
- Attribute mithilfe
"[umpleClasses][attributes]"
hinzufügen. - Kompositionen und dementsprechende Konstruktoren mithilfe
"[MultiplicityOne]"
hinzufügen - Basiskonstruktoren zu Kernklassen hinzufügen.
- Ausstehende Brackets schließen.
-
KonsolenHandler.cs
- Festlegen des Pfades für den Start der Cmd.exe
- Von diesem Pfad wird
"dotnet new classlib --force -o " + filename
in die Konsole weitergeleitet um das Erstellen eines Projektes zu beginnen. - Warten auf Abschluss dieses Prozesses, da ohne diesen der JsonReader keine Dateien erstellen kann, weil der Ordner fehlt.
-
Form1.cs
- User-Interface
- Handling des Explorers
- Prüfen der Pfade
- Aufrufen der
JsonReader.cs
undKonsolenHandler.cs
- Herunterladen des Programmes (mit einer Test Json)
- Auswählen der .Json datei, sollte diese nicht von umple kommen so erscheint eine fehlermeldung
- Auswählen des Zielordner in der die Klassenbibliothek erstellt werden soll (Name der Klassenbibliothek = Name der Json)
- Auf Konvertieren clicken.