=== Ü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**.