ich habe mich mehr oder weniger freiwillig mit Objekt-Orientierung und Sortieralgorithmen in C# beschäftigt.
Herausgekommen ist folgendes Programm:
Es wird das .NET Framework 2.0 benötigt
Das Prinzip ist ganz einfach: Man fügt einige Wörter in die Liste ein, wählt ein Sortieralgorithmus aus und klickt auf sortieren.
Hier einige Features der Applikation:
- Mehrere Sortieralgorithmen
- Auf- und Abwärts Sortierung
- Anzeige der Dauer des Sortiervorgangs
Ein paar Worte zum Quellcode will ich natürlich auch verlieren.
Zu allererst ein Klassendiagramm, damit ihr euch das etwas bildlich vorstellen könnt.
- Klasse Counter ist für die Berechnung der Zeit des Sortiervorgangs zuständig
- MainForm stellt das Hauptfenster dar
- WaitWindow das Fenster, das während des Sortiervorgangs eingeblendet wird
Als nächstes existiert die abstrakte Klasse Sorter, die unter anderem die abstrakte Methode internalSort besitzt.
Nun müssen die Unterklassen, wie Bubbler oder Quicker, die die jeweiligen Sortieralgorithmen repräsentieren, diese Methode überschreiben.
Und warum das ganze? Ganz einfach: Polymorphismus
Die Klasse MainForm besitzt ein Attribut vom Typ Sorter. Und während der Laufzeit (je nachdem welcher Radiobutton ausgewählt wurde) wird ein Objekt einer Unterklasse instanzieriert und die öffentliche Methode Sort aufgerufen, die intern internalSort aufruft.
Zusätzlich ist noch erwähnenswert, dass ich im Quellcode mit einem extra Thread arbeite.
In diesem Thread wird der Sortieralgorithmus aufgerufen.
Ich habe diesen extra Thread eingeführt, da sich das Fenster während eines längeren Sortiervorgangs "aufhängt" bzw so lange nicht neugezeichnet wird, bis der Vorgang abgeschlossen ist.
Obwohl ich in C# 2.0 programmiert habe, habe ich nicht unbedingt die Features, wie Generics im Programm eingesetzt, aber das werdet ihr mir hoffentlich verzeihen
So...
Ich würde mich natürlich über positives Feedback, aber auch über konstruktive Kritik freuen.
Witi
Angehängte Datei(en)
-
Sortierer.7z (6,33K)
Anzahl der Downloads: 230 -
source.7z (67,13K)
Anzahl der Downloads: 215