=== Übung: Passwortmanager ===
Schreibe eine Klasse ''Passwortmanager'' mit den Methoden ''setzeNameUndPasswort'' und ''überprüfePasswort''! \\
** Überlege: ** \\
* Welche Funktionalität wird erwartet?
* Welche Attribute benötigt die Klasse?
* Welche Parameter sollten die Methoden haben?
public class PasswortManager {
private String benutzername;
private String passwort;
public void setzeBenutzernameUndPasswort(String bn, String pw){
benutzername = bn;
passwort = pw;
}
public boolean überprüfePasswort(String bn, String pw){
if(bn.equals((benutzername))){
if(pw.equals(passwort)){
return true;
}
}
return false;
}
}
====== 6. Die einseitige/zweiseitige Bedingung ======
=== Aufgabe 1 ===
Der Eintrittspreis eines Kinos wird nach folgender Tabelle bestimmt:
^Personenkreis ^Alter ^Eintrittspreis ^
|Kinder |Jünger als 13 Jahre |7,00 € |
|Jugendliche |13 - 17 Jahre |9,00 € |
|Erwachsene |18 - 59 Jahre |12,00 € |
|Senioren |älter als 59 Jahre |10,00 € |
Schreibe eine Funktion ''kinopreis(int alter)'', die abhängig vom Alter den dazugehörigen Eintrittspreis ermittelt und zurückliefert!
public double kinopreis(int alter){
if(alter < 13){
return 7;
} else {
if(alter <= 17){
return 9;
} else {
if(alter <= 59){
return 12;
} else {
return 10;
}
}
}
}
{{ :schule:klassen:2017:10b:einseitige_bedingung_hefteintrag.png?600 |}}
{{ :schule:klassen:2017:10b:zweiseitige_bedingung_hefteintrag.png?600 |}}
**Wichtig:** Unterscheide den Zuweisungsoperator = vom Vergleichsoperator == \\
* ''monat = 2'' ist eine **Anweisung,** die der der Variable ''monat'' den Wert 2 zuweist.
* ''monat == 2'' ist eine Aussage. Der Wert der Variable ''monat'' wird mit 2 verglichen. Entsprechend hat die Aussage den Wert ''true'' oder ''false''.
==== Der Modulo-Operator % ====
''%'' ist der Modulo-Operator. ''a % b'' ist der Rest der Division von ''a'' durch ''b'', z.B.
10 % 3 == 1
17 % 5 == 2
21 % 3 == 0
usw.
====Aufgabe 2:====
Erstelle eine Methode tageImMonat(int monat, int jahr) , die nach Eingabe der Monatszahl (1 == Jan, 2 == Feb, …) und der Jahreszahl die Anzahl der Tage des Monats berechnet.
=== Lösung ohne Beachtung von Schaltjahren ===
public class DatumsRechner
{
public int tageImMonat(int monat, int jahr){
if(monat == 2){
return 28; // Das stimmt natürlich nicht für Schaltjahre!
}
if(monat <= 7){
// Ist der Wert von Monat ungerade?
if(monat % 2 == 1){
return 31;
} else {
return 30;
}
} else {
if(monat % 2 == 1){
return 30;
} else {
return 31;
}
}
}
}
==== Berechnung der Tage eines Monats unter Berücksichtigung von Schaltjahren ====
Im {{https://de.wikipedia.org/wiki/Schaltjahr|Wikipedia-Artikel zu Schaltjahren}} erfährt man:
- „Die durch 4 ganzzahlig teilbaren Jahre sind Schaltjahre. […]
- Säkularjahre, also die Jahre, die ein Jahrhundert abschließen (z.B. 1800, 1900, 2100 und 2200) sind keine Schaltjahre. […]
- Schließlich sind die durch 400 ganzzahlig teilbaren Säkularjahre doch Schaltjahre. Damit sind z.B. 1600, 2000 und 2400 jeweils wieder Schaltjahre. […]“
public class DatumsRechner
{
public int tageImMonat(int monat, int jahr){
if(monat == 2){
if(istSchaltjahr(jahr)){
return 29;
} else {
return 28;
}
}
if(monat <= 7){
if(monat % 2 == 1){
return 31;
} else {
return 30;
}
} else {
if(monat % 2 == 1){
return 30;
} else {
return 31;
}
}
}
private boolean istSchaltjahr(int jahr){
// Jahreszahl ist kein Vielfaches von 4
if(jahr % 4 != 0){
return false;
}
// Jahreszahl ist ein Vielfaches von 400
if(jahr % 400 == 0){
return true;
}
// Jahreszahl ist ein Vielfaches von 100
if(jahr % 100 == 0){
return false;
}
return true;
}
}
Zur Deklaration der Methode ''private boolean istSchaltjahr(int jahr)'': \\
* Das Schlüsselwort ''private'' bedeutet, dass diese Methode nur innerhalb der Klasse sichtbar ist.
* Variablen des Datentyps ''boolean'' können nur die Werte ''true'' oder ''false'' annehmen. Man spricht auch von **booleschen Variablen** oder **Wahrheitswerten**.