Gauss-eliminatie : Documentatie Voor Ontwikkelaars

Deze tekst schetst het ontwerp van de applet en beschrijft kort welke rol de verschillende klassen spelen. Voor meer informatie kan u terecht in de Javadoc of in de broncode (beschikbaar als NetBeans-project).

LinkJavadoc DownloadBroncode

Deze applet is ontwikkeld rond het Model-View-Controller-patroon. De meeste klassen maken deel uit van het model. We bespreken deze klassen eerst en geven daarna een korte omschrijving van de overblijvende klassen.

Model

Het volgende schema toont de structuur van het model en hoe de klassen verbonden zijn:

Klassen uit het model

Zoals blijkt uit het schema is GaussElimModel de hoofdklasse. Ze voert de Gauss-eliminatiemethode stap voor stap uit op een gegeven stelsel. Zowel waarden ingevoerd door de gebruiker als een object dat de interface ExampleSystem implementeert kunnen gebruikt worden als stelsel. De klasse GaussElimModel wordt als volgt gebruikt:

/* Maak een nieuw model met gegeven orde, MathContext, PivotingMethod en ExampleSystem. */
GaussElimModel gem = new GaussElimModel(order, mathcontext);
gem.setPivotingMethod(pivotingmethod);
gem.setExampleSystem(examplesystem);

/* Voer alle stappen uit en los het stelsel op. */
while (gem.getStep() < order)
  gem.step();
gem.solve()

/* Haal de resultaten op. */
...

Merk op dat de klassen in het model gebruik maken van BigDecimals in plaats van doubles, dit om een variabel aantal beduidende cijfers te kunnen ondersteunen (door een passende MathContext in te stellen).

Overige Klassen

ExampleManager & PivotManager

Deze klassen leveren informatie over de beschikbare implementaties van de ExampleSystem- en PivotingMethod-interfaces. Ze voorzien een lijst van beschikbare implementaties en kunnen vertalen van object naar omschrijving en omgekeerd.

Opmerking: zie ook de klassen ButcherMatrix en ODE uit de applet over Runge-Kutta-methoden. Deze klassen lossen een gelijkaardig probleem op een andere manier op dan ExampleManager en PivotManager.

RealFractionFormatter

Objecten van deze klasse kunnen eenvoudige breuken parsen. Als de input een deelteken (/) bevat zal een RealFractionFormatter deze input parsen als <teller>/<noemer>, waarbij teller en noemer BigDecimals zijn. Als er geen deelteken aanwezig is zal een RealFractionFormatter de input parsen als een BigDecimal.

GaussElimFrame & GaussElimApplet

Views en controllers worden samengebundeld in de klasse GaussElimFrame. Deze klasse levert het hoofdvenster, terwijl zijn binnenklasse GaussElimSettings het 'Opties'-venster levert. Een GaussElimApplet doet niks meer dan een GaussElimFrame tonen/verbergen.

Verdere informatie is te vinden in de Javadoc en in de broncode.