Bij deze opdracht gaan we een applicatie maken die meerdere talen ondersteunt. Gegeven is de klasse Translation
die gebruikt kan worden om een specifieke taal te implementeren.
Deze klasse bevat de volgende attributen: de naam van de taal, het valuta symbool (bijvoorbeeld $ of €), de omrekenkoers met de euro en het tijdformaat (bijvoorbeeld 24-uurs of 12-uurs met AM en PM).
Daarnaast zijn er:
DateTimeFormatter
voor. Zoek op internet naar de beschrijving hoe deze klasse precies werkt.We gaan nu drie specifieke talen implementeren: Nederlands, Russisch en Engels (Amerikaans).
Maak nieuwe klassen aan die erven van de Translation
klasse en zorg dat je in de aanroep naar de super()
constructor de juiste waarden meestuurt.
Overschrijf vervolgens de methoden met standaardmeldingen in je klasse en plaats er een vertaling in. (tip: gebruik Google Translate als je niet bekend bent met een bepaalde taal).
Voeg tenslotte nog een taal naar eigen keuze toe!
package nl.saxion.oop.week4.model;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Translation {
private String language;
private String currency;
private double conversionRate;
private String timeFormat;
public Translation(String language, String timeFormat, String currency, double conversionRate) {
this.language = language;
this.timeFormat = timeFormat;
this.currency = currency;
this.conversionRate = conversionRate;
}
public String getGreeting() {
throw new IllegalStateException("Translation.getGreeting() called!");
}
public String getExplanation() {
throw new IllegalStateException("Translation.getExplanation() called!");
}
public String getLanguage() {
return language;
}
public String getTimeInFormat() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(timeFormat));
}
public String getCurrency() {
return currency;
}
public double convertFromEuro(int nrOfEuro) {
return nrOfEuro * conversionRate;
}
}
The following text is displayed in: Russian
Уважаемые ученики!
Этот пример переведен без усилий....используя наследование!
The current time would be printed as 06.03.2023 14:58:54 in this country.
1 Euro would be worth 89.5861 Ruble
25 Euro would be worth 2239.6525 Ruble
(Disclaimer: Geen van de docenten spreekt Russisch, dus mocht je het gevoel hebben dat de tekst niet klopt en je denkt ons te kunnen verbeteren, laat dit dan vooral weten!)
Dit voorbeeld is gegenereerd met de volgende code:
RussianTranslation translation = new RussianTranslation(); // Change this!
System.out.println("The following text is displayed in: " + translation.getLanguage());
System.out.println();
System.out.println(translation.getGreeting());
System.out.println();
System.out.println(translation.getExplanation());
System.out.println();
System.out.println("The current time would be printed as " + translation.getTimeInFormat() + " in this country.");
System.out.println();
System.out.println("1 Euro would be worth " + translation.convertFromEuro(1) + " "+ translation.getCurrency());
System.out.println("25 Euro would be worth " + translation.convertFromEuro(25) + " "+ translation.getCurrency());