Stellen Sie sich vor, Sie wollen an einer Stelle Ihres Programms alle möglichen auftretenden Ausnahmen vom Typ Exception und RuntimeException jeweils gesondert behandeln.
Exception oder die vom Typ RuntimeException?Entwerfen Sie eine Klasse EmailAddress, die valide E-Mail-Adressen verwalten kann.
Eine E-Mail-Adresse erfüllt unter anderem folgende Randbedingungen1:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.!#$%&'*+-/=?^_`{|}~Gehen Sie wie folgt vor:
Die Klasse EmailAddress soll einen Konstruktor besitzen, der die Adresse als Zeichenkette übergeben bekommt. Diese ist dann nicht mehr veränderlich. Implementieren Sie den Konstruktor.
Die Bestandteile sollen über die Methoden
String toString() (Rückgabe z.B. "test@mail.example.com")String getLocalPart() (Rückgabe z.B. "test")String getDomainPart() (Rückgabe z.B. "mail.example.com")String[] getDomainParts() (Rückgabe z.B. { "mail", "example", "com" })auslesbar sein.
Erstellen Sie eine eigene Exception-Klasse EmailAddressFormatException, welche durch den Konstruktor ausgelöst werden kann, wenn die oben genannten Bedingungen für eine gültige Adresse nicht erfüllt sind.
Testen Sie die Klasse EmailAddress und den Ausnahmemechanismus indem Sie eine Test-Klasse EmailAddressTest erstellen. Darin erstellen Sie zunächst ein paar valide Adressen mit anschließender Ausgabe Erlaubte Adresse. Dann aber auch mehrere ungültige Adressen, deren Exceptions Sie abfangen sollten und in diesem Fall Nicht erlaubte Adresse ausgeben.
Erstellen Sie eine Aufzählung (enum Planet) aller Planeten des Sonnensystems, mit aufsteigender Entfernung von der Sonne.
Die Aufzählung soll folgende Methoden besitzen:
double getMasse(): Masse des Planetendouble getRadius(): Radius des Planetenboolean largerThan(Planet p): größer als Planet p?boolean heavierThan(Planet p): schwerer als Planet p?boolean closerToSun(Planet p): näher an der Sonne als Planet p?Planet nextPlanet(): Gibt den nächsten weiter entfernten Planeten zurück – oder `null.Implementieren Sie zusätzlich eine Klasse, die die Aufzählung umfassend testet!
Die benötigten Daten für die Planeten finden Sie in folgender Tabelle (Erinnerung: 3.30E23 = 3.30·1023):
| Planet | Masse (kg) | Radius (m) |
|---|---|---|
| Merkur | 3.30E23 | 2,440,000 |
| Venus | 4.87E24 | 6,051,000 |
| Erde | 5.97E24 | 6,378,000 |
| Mond | 7.35E22 | 1,738,000 |
| Mars | 6.42E23 | 3,397,000 |
| Jupiter | 1.90E27 | 71,492,000 |
| Saturn | 5.69E26 | 60,268,000 |
| Uranus | 8.66E25 | 25,559,000 |
| Neptun | 1.03E26 | 24,764,000 |
| Pluto | 1.31E22 | 1,160,000 |
Tatsächlich gibt es noch einige weitere Regeln: https://en.wikipedia.org/wiki/Email_address#Syntax. Mittlerweile setzt sich aber die Einsicht durch, dass nur das testweise Senden einer Email eine sichere Aussage erlaubt: https://hackernoon.com/the-100-correct-way-to-validate-email-addresses-7c4818f24643#.3hmjudhxp. ↩