Lernziele der Aufgaben Teil A:
- Verstehen und verwenden von Lambda-Expressions
- Verstehen und verwenden von Erweiterungsmethoden
MyQuery Erstellen Sie die Projektstruktur von MyQuery und fassen Sie die einzelnen Projekte zu einer Solution zusammen. Die Struktur besteht aus den Projekten:
| Name | Beschreibung |
|---|---|
| MyQuery.Logic | In diesem Projekt ist die gesamte Logik implementiert. |
| MyQuery.Logic.UnitTest | In diesem Projekt befinden sich die UnitTests der Logik. |
| MyQuery.ConApp | Ein Konsolen-Anwendung zum Testen der Logik. |
Verbinden Sie die Abhängigkeiten der einzelnen Projekte untereinander.
Funktionsumfang Erweitern Sie den Funktionsumfang für alle Sammlungen (IEnumerable<T>) um folgende Operationen:
| Name | Beschreibung |
|---|---|
| IEnumerable<T> Filter(Func<T, bool> predicate) | Filtert die Auflistung nach dem angebenen Kriterium. |
| IEnumerable<TResult> Map(Func<T, TResult> selector) | Mapped den Quelltyp T auf einen Zieltyp TResult. |
| T[] ToArray() | Konvertiert die Auflistung zu einem Array. |
| List<T> ToList() | Konvertiert die Auflistung zu einer Liste. |
| double Sum(Func<T, double> transform) | Summiert die Werte von der Funktion 'transform'. |
| double? Min(Func<T, double> transform) | Liefert den Minimalwert der Auflistung. |
| double? Max(Func<T, double> transform) | Liefert den Maximalwert der Auflistung. |
| double? Average(Func<T, double> transform) | Liefert den Durchschnittswert der Auflistung. |
| IEnumerable<T> ForEach(Action<T> action) | Führt für jedes Element der Auflistung die 'action' aus. |
| IEnumerable<T> ForEach(Action<int, T> action) | Führt für jedes Element der Auflistung die 'action' aus und liefert zusätzlich den Parameter n-tes Element. |
Funktionsumfang für Experten (optional) Erweitern Sie den Funktionsumfang für alle Sammlungen (IEnumerable<T>) um folgende Operationen:
| Name | Beschreibung |
|---|---|
| IEnumerable<T> SortBy(Func<T, TKey> orderBy) | Sortiert die Auflistung nach orderBy. |
| IEnumerable<T> Distinct() | Bereinigt die Auflistung von Duplikaten. |
Anmerkung: Der erweiterte Funktionsumfang ist nur für Experten, also optional.
Erstellen Sie mindestens zwei UnitTests pro Funktion und Testen Sie das System ausführlich. Bitte achten Sie auf eine sinnvolle Gestaltung der Tests!
Namenskonvention für UnitTests:
ActionSubject_Condition_ExpectedResult
- keine Angaben
-
Termin: 1 Woche nach der Ausgabe
-
Klasse:
-
Name:
- keine Angabe