public class Datum {
private int tag;
private int monat;
private int jahr;
// es duerfen hier keine weiteren Objektvariablen wie „int alter“ stehen!!
public Datum( int tag, int monat, int jahr ) {
this.tag = tag;
this.monat = monat;
this.jahr = jahr;
}
public boolean vergleicheTagMonat( Datum zweitesDatum ) {
if( ( this.tag == zweitesDatum.tag ) &&
( this.monat == zweitesDatum.monat ) )
return true;
return false;
}
// eine ausführliche und verständliche Version
public int wieAlt( Datum d2 ) {
int alter = 0;
if( d2.monat > monat )
alter = d2.jahr – jahr;
if( (d2.monat == monat) && (d2.tag >= tag) )
alter = d2.jahr – jahr;
if( (d2.monat == monat) && (d2.tag < tag) )
alter = d2.jahr – jahr - 1;
if( d2.monat < monat )
alter = d2.jahr – jahr - 1;
return alter;
}
/*
// eine kürzere und schnellere Version
public int wieAlt( Datum zweitesDatum ) {
int alter = zweitesDatum.jahr - this.jahr;
if( zweitesDatum.monat
> this.monat )
return alter;
if( zweitesDatum.monat < this.monat
)
return alter-1;
// hier sind beide Monate gleich
if( zweitesDatum.tag
>= this.tag )
return alter;
return alter - 1;
}
*/
}
-----------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
public
class DatumApplet extends java.applet.Applet
{
Datum meinGeburtsDatum = new Datum( 12, 5, 1989 );
Datum zweitesDatum;
TextField tagFeld = new TextField();
TextField monatsFeld = new TextField();
TextField jahrFeld = new TextField();
TextField alterFeld = new TextField();
TextField meldeFeld = new TextField();
Button geburtstagsBt
= new Button( "Habe ich Geburtstag?" );
Button alterBt = new Button( "Wie alt bin ich?" );
public void init() {
setLayout( new GridLayout( 6, 2, 20, 20 )
);
add( new Label(
"Tag:", Label.RIGHT ) );
add( tagFeld );
add( new Label(
"Monat:", Label.RIGHT
) );
add( monatsFeld );
add( new Label(
"Jahr:", Label.RIGHT
) );
add( jahrFeld );
add( new Label(
"Alter:", Label.RIGHT ) );
add( alterFeld );
add( geburtstagsBt );
add( alterBt );
add( new Label( "Meldungen zum Geburtstag:", Label.RIGHT ) );
add( meldeFeld
);
// optional !
alterFeld.setEditable( false );
meldeFeld.setEditable( false );
geburtstagsBt.addActionListener( new ActionListener() {
public void
actionPerformed( ActionEvent
e ) {
handleGeburtstag();
}
});
alterBt.addActionListener( new ActionListener() {
public void
actionPerformed( ActionEvent
e ) {
handleAlter();
}
});
}
protected void zeigeAlter( int alter ) {
alterFeld.setText( "" + alter );
}
protected void melde( String meldung ) {
meldeFeld.setText( meldung );
}
protected void handleAlter() {
int tag = Integer.parseInt( tagFeld.getText() );
int monat = Integer.parseInt( monatsFeld.getText() );
int jahr = Integer.parseInt( jahrFeld.getText() );
zweitesDatum = new Datum( tag, monat, jahr );
zeigeAlter( meinGeburtsDatum.wieAlt( zweitesDatum ) );
}
protected void handleGeburtstag() {
int tag = Integer.parseInt( tagFeld.getText() );
int monat = Integer.parseInt( monatsFeld.getText() );
int jahr = Integer.parseInt( jahrFeld.getText() );
zweitesDatum = new Datum( tag, monat, jahr );
if( meinGeburtsDatum.vergleicheTagMonat( zweitesDatum ) )
melde( "Glueckwunsch" );
else
melde( "leider nein" );
}
}