Interfaces¶
Interfaces in Java sind eine Art von Referenztyp, der eine Sammlung von abstrakten Methoden definiert. Sie sind ein wichtiges Konzept in der objektorientierten Programmierung und ermöglichen es Ihnen, eine Schnittstelle zu definieren, die von verschiedenen Klassen implementiert werden kann. Interfaces sind besonders nützlich, um polymorphe Verhalten zu erreichen und um sicherzustellen, dass verschiedene Klassen bestimmte Methoden implementieren.
1. Interfaces und Verschlüsselung¶
Verschlüsselung von Textnachrichten ist in unserer heutigen Zeit wichtiger denn je. Auch in der Antike spielte dies bereits eine große Rolle. Eine der ersten Verschlüsselungsalgorithmen ist die sog. Cäsar Chiffre.
Dieses Verfahren ist auf Julius Cäsar zurückzuführen, der es für militärische Korrespondenz nutzte. Bei dem Verfahren
wird jeder Buchstabe einer Textnachricht auf einen Geheimbuchstaben abgebildet. Die Abbildung erfolgt durch ein
konstantes aber zyklisches Verschieben der Buchstaben aus dem Alphabet. Zyklisch deshalb, weil ein Klartext-Buchstabe z
dafür sorgen würde, dass das „Zählen“ wieder bei vorne im Alphabet beginnt, um den zugehörigen Geheimtext zu bestimmen.
Beispiel für Chiffrierung (Verschiebung um 3 nach rechts):¶
Klartext: a e m u z privacy
Geheimtext: d h p x c sulydfb
Die Entschlüsselung (Dechiffrierung) erfolgt analog, jedoch mit einer Verschiebung um dieselbe konstante Stellenzahl nach links.
Bemerkung
🚩
Implementieren Sie ein Interface IVerschluesselung, welches die beiden Methoden java
public String chiffrieren (String nachricht);
public String dechiffrieren (String nachricht);
enthält. Implementieren Sie weiterhin eine Klasse CaesarChiffre, welches das Interface und die Methoden implementiert,
indem es den oben beschriebenen Algorithmus umsetzt. Übergeben Sie die Stellenzahl zur Verschiebung als Parameter
an die Klasse CaesarChiffre (z.B. im Konstruktor), so dass auch beispielsweise um 6 Stellen verschoben werden kann.
Schreiben Sie ein Testprogramm, welches Ihre Verschlüsselung testet, indem Sie einen beliebigen Text über die Konsole
einlesen, in Kleinbuchstaben konvertieren (wir ignorieren alle Großbuchstaben, Satzzeichen/Sonderzeichen und Zahlen),
diesen chiffrieren, ausgeben und anschließend dechiffrieren und erneut ausgeben.
Erweitern Sie das Programm um einen weiteren Verschlüsselungsalgorithmus, den Sie sich selbst ausdenken. Sollte Ihnen
so gar nichts einfallen, versuchen Sie sich an einer Spiegelschrift:
Ein Text
Das ist eine geheime Nachricht
würde zu
thcirhcaN emieheg enie tsi saD
werden. In diesem Fall müssten Sie das bestehende Interface, wie ursprünglich angegeben, nicht ändern. Implementieren Sie ebenfalls das Interface und testen dies wie oben angegeben.
2. Geometrische Figuren¶
Erstellen Sie folgende Klassen: - Quadrat mit Attribut seite - Rechteck mit Attributen breite und hoehe
- Dreieck mit Attributen grundseite und hoehe - Kreis mit Attribut radius
(natürlich mit Konstruktoren, Gettern und Settern).
Die Klassen sollen alle die Schnittstelle IFlaecheninhalt implementieren mit
java public interface IFlaecheninhalt { public double gibFlaechenInhalt(); }
Wichtig
🚩
Schreiben Sie zum Test ein Hauptprogramm, welches ein IFlaecheninhalt-Array mit 8 Elementen, mit jeweils zwei
Objekten obiger Klassen (je eines mit Integer- und eines mit Double-Attributen) enthält, berechnen Sie anschließend
die Flächeninhalte der Array-Elemente und geben diese aus. Testen Sie bei der Erstellung der Objekte jeweils auch das Autoboxing.
3. Zahlungsdienste¶
In modernen Anwendungen werden häufig verschiedene Zahlungsdienste eingebunden (z. B. PayPal, Kreditkarte, Kryptowährung). Diese Dienste unterscheiden sich in ihrer technischen Umsetzung, sollen aber über eine einheitliche Schnittstelle angesprochen werden können.
Wichtig
🚩
Erstellen Sie ein Interface IZahlungsdienst mit den folgenden Methoden:
java boolean autorisiereZahlung(double betrag);
String durchfuehrenZahlung(double betrag);
Implementieren Sie drei Klassen:
Kreditkarte: Zahlung wird genehmigt, wenn Betrag unter 1000 € liegt.Paypal: Zahlung wird immer genehmigt, aber Rückgabe enthält eine Transaktionsnummer (z.B. „PP-392034“).Bitcoin: Zahlung nur möglich, wenn Betrag kleiner als 0.01 BTC ist (aktueller Kurs wird angenommen als 1 BTC = 50.000€).
Simulieren Sie eine Liste von drei Zahlungen mit unterschiedlichen Beträgen und Zahlungsarten. Autorisieren Sie jede Zahlung und führen Sie sie ggf. durch. Geben Sie das Ergebnis auf der Konsole aus.