Meine Musterlösung

Zusätzlich zum Video in dem ich dir meine Lösung beschreibe, findest du hier die einzelnen Schritte in Form von Commits:

  1. Warten auf Benutzer vor Beenden - In einer Konsolenanwendung ist es hilfreich, wenn du vor dem Ende auf die Eingabe des Benutzers wartest, damit er die Chance hat alles Ausgaben der Anwendung anzuschauen. Zusätzlich habe ich hier schon in die Kommentare geschrieben was die einzelnen Schritte sind um die weitere Benutzerinteraktion umzusetzen (siehe Lösungstipp #1).
  2. Teilaufgabe Benutzerinteraktion - Hier siehst du wie ich die einzelnen Eingaben und Ausgaben umsetze. In der Lösung (im Bereich verschlüsselten Text ausgeben) verwende ich string interpolation um Werte einer Variablen (in diesem Fall verschluesselterText) direkt in einen string einzusetzen.
  3. Separate Methode zur Verschlüsselung - Ich habe mich dazu entschieden eine separate Methode für die Verschlüsselung zu realisieren (Prinzip: Separation of Concerns). An dieser Stelle hat sich das angeboten. Allerdings ist es auch okay, wenn du erstmal alles komplett in die Main Methode schreibst und im Nachgang ein Refactoring durchführst. Übrigens wäre es auch möglich gewesen hier ein objektorientiertes Design zu erstellen (also mit unterschiedlichen Klassen zu arbeiten). Ich habe mich jedoch dagegen entschieden, weil es mir zu weit von meinem Übungsfokus entfernt war.
  4. Verschlüsselung in Kommentaren - Wie in Lösungstipp #1 beschrieben, überlege ich mir erstmal die einzelnen Schritte zur Lösung und notiere diese in normaler Textform für mich. Einerseits gibt es mir so gleich die nötige Struktur und ich kann mich danach immer auf einen einzelnen Schritt fokussieren.
  5. Konvertierung in Großbuchstaben - Hier nun der erste Einsatz der Methoden des Datentyps string wie in Lösungstipp #2 beschrieben. Wichtig ist mir auch hier wieder die direkte Kontrolle des Ergebnisses. Daher gebe ich die konvertierten Zeichenkette zurück und kann dann mit unterschiedlichen Eingaben testen was beispielsweise bei Sonderzeichen und Nummer passiert (nichts ;-).
  6. Umlaute ersetzen - Auch hier greife ich wieder auf die bestehenden Methoden (Replace in diesem Fall) zurück. Wichtig ist, dass du die Reihenfolge einhältst. Also erst alles in Großbuchstaben konvertieren und dann die Umalute ersetzen. Ansonsten müsstest du für Ö und co. auch die Kleinbuchstaben abprüfen. Übrigens könntest du auch eine Lösung der Aufgabe (fast) nur mit der Replace Methode erstellen. Weist du wie?
  7. Ein einzelnes Zeichen verschlüsseln - Bei meiner Lösung hatte ich erst direkt angefangen eine Schleife zu schrieben und wollte alles auf einmal lösen. Als ich dann festgestellt habe, dass ich nicht weiter komme, habe ich alles bis dahin gelöscht und erstmal nur versucht ein einzelnes Zeichen (ohne Berücksichtigung aller Sonderfälle) zu konvertieren. So konnte ich Schritt für Schritt die Lösung erarbeiten und dabei jeden einzelnen Schritt überprüfen.
  8. Alle Zeichen verschlüsseln - Nachdem ich wußte wie ein einzelnes Zeichen zu verschlüsseln ist, konnte ich das ganze in eine Schleife bauen. Auch hier habe ich alle “Sonderfälle” erstmal ausser Acht gelassen.
  9. Nach Z kommt A - Nun endlich habe ich mich mit dem ersten “Sonderfall” beschäftigt.
  10. Sonderzeichen und Zahlen ignorieren - Im letzten Schritt habe ich eine weitere bestehende Methode char.IsLetter verwendet.