Ü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;
                }
            }
        }
 
    }

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 Wikipedia-Artikel zu Schaltjahren erfährt man:

  1. „Die durch 4 ganzzahlig teilbaren Jahre sind Schaltjahre. […]
  2. Säkularjahre, also die Jahre, die ein Jahrhundert abschließen (z.B. 1800, 1900, 2100 und 2200) sind keine Schaltjahre. […]
  3. 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.
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2019:10abc:kap2 (erstellt für aktuelle Seite)