Challenge - Objective-C zu Swift

Ich habe eine Herausforderung für Dich. Schreib einen Währungsumrechner für die Kommandozeile! Und damit das nicht zu langweilig wird: ich habe es bereits erledigt, mit Objective-C. Die Challenge besteht darin, die Anwendung mit Swift neu zu schreiben.

Die Challenge

Erstell ein neues Projekt mit Xcode. Wähle OS X / macOS und dort ein Command Line Tool:

xcode-cli-tool

Der Einstiegspunkt ist die main.swift Datei, in der Du arbeiten wirst. Mit der Funktion readLine() kannst Du unter Swift Strings vom Standard-Input lesen.

Das Programm hat drei Befehle:

  • h: Hilfefunktion ausgeben
  • d: Umrechnung von Dollar zu Euro
  • e: Umrechnung von Euro zu Dollar

Wird im ersten Schritt d oder e eingegeben, musst du zusätzlich den Betrag einlesen.

Inspiration zur Umsetzung findest Du im Objective-C Projekt weiter unten.

Du kannst kein Objective-C?

Kein Problem. Die folgende Aufgabe lässt sich vollständig mit dem Objective-C zu Swift Leitfaden übersetzen. Wenn Du unsicher bist, wirf nebenbei einen Blick in den Leitfaden (oder lad Dir die PDF Datei herunter):

Hier geht es zum Objective-C zu Swift Leitfaden

Deine Aufgabe: Objective-C zu Swift

Vorgegeben ist eine Anwendung für die Kommandozeile. In einer Endlosschleife wird die gewünschte Aktion abgefragt. Es kann zwischen Dollar zu Euro und umgekehrt gewählt werden. Anschließend wird der Betrag eingelesen, dieser umgerechnet und das Ergebnis ausgegeben. Klingt einfach? Ist es tatsächlich.

Hier der Quellcode vorab. Du solltest unbedingt das Projekt herunterladen und ausprobieren. Dann ist der relativ einfache Ablauf direkt sichtbar. Aber Achtung: vorab nicht die Swift-Lösung anschauen! Probier es selbst zu lösen. Die Musterlösung mit Swift findest Du zur Selbstkontrolle nämlich ebenfalls im Download.

Der Währungsrechner in Objective-C

Einstiegpunkt main.m

Hier findest du den Einstiegspunkt, die main.m Datei. Die main-Funktion wird beim Programmstart aufgerufen. Darin enthalten ist eine Endlosschleife:

Der Ablauf ist relativ einfach. Es gibt eine zusätzliche Klasse IOHelper, die instanziert wird (siehe 0). In der Schleife wird zunächst die Eingabe abgefragt (siehe 1). Wird die Hilfefunktion angefordert, gibt das Programm einen Hinweis zur Bedienung aus (siehe 2) und beginnt die Schleife mittels continue von vorne.

Im nächsten Schritt wird ein Betrag eingelesen und zu einem double-Wert umgewandelt (siehe 3). Das passiert in diesem Fall bewusst ohne Prüfungen, um das Beispiel schlank zu halten. Die Programmlogik findest Du unter Punkt 4. Dort wird die gewählte Aktion geprüft. Das „d“ steht für Dollar zu Euro und „e“ für Euro zu Dollar.

Die Klasse IOHelper

Der zweite Teil der Anwendung ist die Klasse IOHelper. Die findest Du hier (Header und Implementierung):

Darin findest Du die Methoden, die in der main-Funktion aufgerufen werden. Die Methode newInput wird zu Beginn der Schleife als Eingabeaufforderung genutzt. Über ask werden Werte eingelesen, usageInfo gibt die Hilfefunktion aus und getInput wird intern verwendet, um Daten mittels readline (unter Swift readLine()) einzulesen.

Downloads und Lösung

Ich empfehle Dir unbedingt das Xcode-Projekt herunterzuladen und die Anwendung auszuprobieren. Das gesamte Projekt findest Du bei Github. Doch Achtung: schau Dir die Lösung (das Swift-Projekt) erst später zur Kontrolle an:

 

Challenge accepted?

Challenge-Accepted-Baby-Meme-03

Bildquelle: memesvault.com

Schreib einen Kommentar

Your email address will not be published.