Changeset 398 in Java_Quellcode_SOOP_Vorlesung for oop/Datum.java


Ignore:
Timestamp:
Dec 12, 2017, 9:40:15 AM (7 years ago)
Author:
tr
Message:

Datum angepasst

File:
1 edited

Legend:

Unmodified
Added
Removed
  • oop/Datum.java

    r188 r398  
    1111     * übergebenen Daten durch. Anmerkung: Üblicherweise verwendet man für die
    1212     * Parameter eines Konstruktors exakt die Variablennamen der entsprechenden
    13      * Attribute der Klasse. Dadurch wird die verwendung von <code>this</code>
     13     * Attribute der Klasse. Dadurch wird die Verwendung von <code>this</code>
    1414     * erzwungen und die Zuordnung ist eindeutig klar. Hier wurde davon
    1515     * abgesehen, um zu demonstrieren, dass die Gleichnamigkeit der Parameter
    16      * und Attribute ein Konvention und keine erzwungene Syntax ist.
     16     * und Attribute eine Konvention und keine erzwungene Syntax ist.
    1717     *
    1818     * @param t
     
    5151
    5252    /**
     53     * Erhöht dieses Datum einen Tag unter Berücksichtigung der
     54     * Gültigkeitsregeln für Datumsangaben.
     55     */
     56    public void erhoehe() {
     57        switch (this.monat) {
     58        case 1:
     59        case 3:
     60        case 5:
     61        case 7:
     62        case 8:
     63        case 10:
     64        case 12:
     65            if (this.tag < 31) {
     66                this.tag++;
     67            } else {
     68                this.tag = 1;
     69                if (this.monat < 12) {
     70                    this.monat++;
     71                } else {
     72                    this.monat = 1;
     73                    this.jahr++;
     74                }
     75            }
     76            break;
     77        case 4:
     78        case 6:
     79        case 9:
     80        case 11:
     81            if (this.tag < 30) {
     82                this.tag++;
     83            } else {
     84                this.tag = 1;
     85                this.monat++;
     86            }
     87            break;
     88        case 2:
     89            if (this.tag < 28 || (this.tag == 28 && Datum.istSchaltjahr(this.jahr))) {
     90                this.tag++;
     91            } else {
     92                this.tag = 1;
     93                this.monat = 3;
     94            }
     95            break;
     96        default: break;
     97        }
     98    }
     99
     100    /**
     101     * Überprüft für ein beliebiges Jahr, ob es sich um ein Schaltjahr handelt.
     102     *
     103     * @param jahr
     104     *            Zu prüfendes Jahr
     105     * @return true, falls es sich um ein Schaltjahr handelt, sonst false
     106     */
     107    public static boolean istSchaltjahr(int jahr) {
     108        // Regel: alle durch 4 teilbaren Jahre sind Schaltjahre, außer die durch
     109        // 100
     110        // teilbaren Jahre. Durch 400 teilbare Jahre sind degegen wiederum
     111        // Schaltjahre
     112        return ((jahr % 4 == 0) && (jahr % 100 != 0)) || (jahr % 400 == 0);
     113    }
     114
     115    /**
    53116     * Liefert das Datum als Zeichenkette in der üblichen deutschen Schreibweise
    54117     * Tag.Monat.Jahr
Note: See TracChangeset for help on using the changeset viewer.