Skip to content

Klassendesign

Supergecki edited this page Jul 22, 2024 · 9 revisions

UML-Klassendesign:

include

Das UML-Diagramm zeigt die Struktur und Beziehungen zwischen verschiedenen Klassen und Komponenten des LaTriX-Projekts.

LaTrixLib

Alignment

Ein Enumerationstyp, der die Ausrichtungen left, center, und right definiert.

VectorType

Ein Enumerationstyp, der die Vektortypen column und row definiert.

LaTeXConverter

Die Klasse LaTeXConverter übernimmt dabei die eigentliche Matrix/Vektor-zu-String-Konversion und wird als eigene Klassenbibliothek zur Verfügung gestellt. Insbesondere ist diese von den für die GUI-Darstellung im WFA-Framework benötigten Klassen separiert (d.h. die Businesslogik der GUI greift nur auf die LaTeXConverter-Methoden zu, aber nicht umgekehrt), sodass sie auch einfach für Projekte genutzt werden kann, in denen die spezifische LaTrix-GUI-Implementierung keine Rolle spielt.

Beide Konversionsmethoden von LaTeXConverter (LaTeXConverter.ConvertMatrixToLaTeX sowie LaTeXConverter.ConvertVectorToLaTeX) sind generisch und können daher mit allen Datentypen genutzt werden, aus denen sich MathNet-Matrizen erstellen lassen (dabei handelt es sich speziell um Doubles, Floats und verschiedene Typen von komplexen Zahltypen). Sie besitzen außerdem ein optionales Argument, dem ein Objekt der Alignment-Enumeration übergeben werden kann und das bestimmt, ob die Matrix-Elemente in LaTeX links-, rechtsbündig oder zentriert angezeigt werden sollen. Optionen sind Alignment.left (linksbündig), Alignment.center (zentriert) sowie Alignment.right (rechtsbündig). Standardeinstellung ist zentriert. Der ConvertVectorToLaTeX-Methode kann zusätzlich noch das optionale Argument eines VectorType übergeben werden, je nachdem, ob der Vektor als Spaltenvektor (Standard; VectorType.column) oder Zeilenvektor (VectorType.row) interpretiert werden soll.

Methoden:

  • ConvertMatrixToLaTeX<T>(Matrix<T> matrix, Alignment alignment = Alignment.center): Statische Methode, die eine Matrix nach LaTeX konvertiert.
  • ConvertVectorToLaTeX<T>(Vector<T> vector, Alignment alignment = Alignment.center, VectorType vector_type = VectorType.column): Statische Methode, die einen Vektor nach LaTeX konvertiert.
  • GetAlignmentChar(Alignment alignment): Statische Methode, die das Ausrichtungszeichen für die gegebene Ausrichtung zurückgibt.

LaTrixLibTests

TestDataGenerator

Statisches Attribut:

  • test_strings: Eine Liste von Test-Strings.

Klassen:

  • DoubleMatrixTestDataGenerator
  • FloatMatrixTestDataGenerator
  • VectorTestDataGenerator
  • AlignmentTestDataGenerator

Diese Klassen erben von TestDataGenerator und implementieren die Methode GetEnumerator().

TestLaTeXConverter

Die Test-Klasse für LaTeXConverter, TestLaTeXConverter, wird zwar in eigenen Dateien verwaltet und ist für die Einbindung von LaTeXConverterLib nicht unbedingt nötig, ist aber für Entwicklungszwecke der Bibliothek trotzdem mit dieser verbunden (wer an LaTeXConverter entwickelt, muss dabei auch die Tests der Testklasse erfüllen).

Methoden:

  • TestConvertDoubleMatrixToLaTeX(Matrix<double> matrix, string expected_string): Testet die Konvertierung einer Double-Matrix nach LaTeX.
  • TestConvertFloatMatrixToLaTeX(Matrix<float> matrix, string expected_string): Testet die Konvertierung einer Float-Matrix nach LaTeX.
  • TestConvertVectorToLaTeX(Vector<double> vector, LaTeXConverter.VectorType vector_type, string expected_string): Testet die Konvertierung eines Vektors nach LaTeX.
  • TestMatrixAlignment(Matrix<double> matrix, LaTeXConverter.Alignment alignment, string expected_string): Testet die Ausrichtung einer Matrix nach LaTeX.

LaTrixGUI

Form1

Attribute:

  • components: Ein Container für die Komponenten der Form.
  • Verschiedene System.Windows.Forms-Komponenten wie DataGridView, NumericUpDown, TextBox, Label, ToolStrip, Panel, PictureBox.

Methoden:

  • Form1_Load(object sender, EventArgs e): Lädt die Form.
  • NumericUpDownRows_ValueChanged(object sender, EventArgs e): Wird aufgerufen, wenn sich der Wert von NumericUpDownRows ändert.
  • NumericUpDownColumns_ValueChanged(object sender, EventArgs e): Wird aufgerufen, wenn sich der Wert von NumericUpDownColumns ändert.
  • UpdateDataGridView(): Aktualisiert die DataGridView.
  • ToolStripMenuItem-Ereignismethoden wie Click, Alignment, und Copy.
  • DataGridViewMatrix_SizeChanged(object sender, EventArgs e): Wird aufgerufen, wenn sich die Größe der DataGridView ändert.
  • DataGridViewMatrix_CellValueChanged(object sender, DataGridViewCellEventArgs e): Wird aufgerufen, wenn sich der Zellwert in der DataGridView ändert.
  • DataGridViewMatrix_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e): Wird aufgerufen, wenn ein Bearbeitungskontrollfeld angezeigt wird.
  • ConvertMatrixToLaTeX(): Konvertiert die Matrix nach LaTeX.
  • dataGridViewMatrix_KeyPress(object sender, KeyPressEventArgs e): Wird aufgerufen, wenn eine Taste in der DataGridView gedrückt wird.
  • InitializeComponent(): Initialisiert die Komponenten der Form.

Program

Methode:

  • Main(): Der Einstiegspunkt des Programms.