piasecki,podstawy programowania, Definicja klasy, tworzenie obiektów

Definicja klasy, tworzenie obiektów. Porównanie i kopiowanie obiektów.


// Przykład ilustruje różne możliwości występujące przy definiowaniu klasy


public class Czas

{

// definicje pól

private int godz;

private int min;

private int sek;


//konstruktory ; modyfikator dostępu konstruktora powinien być taki sam jak całej klasy

// konstruktor podstawowy

public Czas()

{ godz=min=sek = 0; }

// przeciążenie konstruktora

public Czas(int godz)

{

// przesłanianie pola godz

this.godz=godz;

min=sek = 0;

}

//użycie konstruktora w konstruktorze

public Czas(int godz, int min)

{ this(godz,min,0); }

//wykorzystanie innej metody ( nie konstruktora)

public Czas(int godz, int min, int sek)

{ ustawGodzMinSek(godz,min,sek); }

//konstruktor przydatny do kopiowania

public Czas( Czas czas)

{ godz=czas.godz; min=czas.min; sek=czas.sek;}

//metody odczytujące stan obiektu (getters)

public int dajGodz()

{ return godz;}

public int dajMin()

{ return min; }

public int dajSek()

{ return sek; }

// metody ustawiające pola obiektu (setters)

public void ustawGodz(int godz)

{ this.godz=godz;

min=sek = 0;

}

public void ustawGodzMin(int godz, int min)

{ this.godz=godz;

this.min=min;

sek = 0;

}

public void ustawGodzMinSek(int godz, int min, int sek)

{ this.godz=godz;

this.min=min;

this.sek = sek;

}

// inne metody

//przesunięcie czasu o 1 sekundę

public void plusSek()

{

if(sek<59) sek++;

else {sek=0;

if(min<59) min++;

else { min=0;

if(godz<23) godz++;

else godz=0;

// lub godz=++godz%24;

}

}

}

// jaki będzie czas za 1 sekundę

public Czas zaSek()

{ Czas wynik= new Czas();

if(sek<59) {wynik.sek=sek+1;wynik.min=min;wynik.godz=godz;}

else {wynik.sek=0;

if(min<59) {wynik.min=min+1;wynik.godz=godz;}

else { wynik.min=0;

wynik.godz=(godz+1)%24;

}

}

return wynik;

}

//porównanie wartości dwóch czasów ; niestety zwykły operator == nie działa

public boolean equals(Czas czas)

{ return this.godz==czas.godz && this.min == czas.min && this.sek==czas.sek; }

// do pól prywatnych argumentu mamy dostęp ponieważ jesteśmy wewnątrz klasy Czas

public boolean less(Czas czas)

{ if(godz != czas.dajGodz())

return godz<czas.dajGodz();

else if(min!=czas.min) return min<czas.min;

else return sek<czas.sek;

}

// można prościej

public boolean less1(Czas czas)

{

return (godz<czas.godz)||(godz==czas.godz)&&(min<czas.min) || (godz==czas.godz)&&(min==czas.min)&&(sek<czas.sek);

}

// metoda pozwalająca bezpośrednio drukować obiekt

// np. System.out.println( "Jest "+czas);

public String toString()

{ return godz+" : "+min+" : "+sek; }

// tworzy kopię obiektu; operator = nie działa

public Czas copy()

{ return new Czas(this);}

}





Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron