Java logo PredDalej

Dedenie - priklad implementacie

v tejto casti je implementacia triedy Hodiny, ktora sluzi ako zaklad pre triedu Budik. Budik ma na rozdiel od klasickych hodin, ktore dokazu len tikat, aj pamet, kde je ulozeny cas, kedy nas ma zobudit. Okrem toho po kazdom 'tiku' kontroluje, ci je cas zazvonit.
Trieda Budik len rozsiruje triedu Hodiny o informacie potrebne na nastavenie zvonceka (int ahod, amin, asek;) a prepisania metody Tick(), kde vyuzijeme kod z triedy Hodiny.

// POZOR: TOTO JE APLIKACIA (nie applet)
// je to aplikacia, pretoze som nechcel, aby tu bol aj
// kod potrebny na 'udrzbu' appletu, tzn. volania metod
// , ktore nas momentalne vobec nezaujimaju
// potrebujem standardne triedy pre vypis textu na obrazovku
import java.io.*;


// definicia triedy Hodiny;
// nie su to skutocne hodiny, jeden "tik" netrva jednu sekundu,
// no a co, o to vobec nejde
class Hodiny {

	int hod,	// hodiny
	    min,	// minuty
	    sek;	// sekundy

// konstruktor bez parametrov (len tak ako demo)
     public Hodiny() {
		hod=0;  min=0;  sek=0;
	}

// konstruktor s parametrami (tak toto potrebujem)
	public Hodiny(int h, int m, int s) {
		hod=h;  min=m;  sek=s;
	}

// vypis casu
	public int get_hod() { return hod; }	// klasika ...
	public int get_min() { return min; }	// d e
	public int get_sek() { return sek; }	//     t o

// reset (ukazka "normalnej" metody)
	public void reset() { 
		hod=0;  min=0;  sek=0;	// ako ked nam vypnu prud ...
	}

// destruktor ;len tak, aby sme videli, 
// ze aj take nieco existuje, pri tejto triede
// nie je potrebny
	protected void finalize() {
		hod=0;  min=0;  sek=0;
	}

// takto nam biju hodiny
	public void Tick() {
		sek++;
		if ( sek==60 ) {
			sek=0;
			min++;
			if ( min==60 ) {
				min=0;
				hod = ++hod % 24;	// nulujem hod. ak je uz novy den
			}
		}
	}

} // class Hodiny




// moj budik, ktory kazde rano z celeho srdca nenavidim
// ja ho volam ZufalyPipak
class Budik extends Hodiny {

	int ahod,	// alarm hod.
	    amin,	// alarm min.
	    asek; // alarm sek.; cas kedy ma zazvonit

// implicitny konstruktor
	public Budik() {
		super();		// tu volam konstruktor predka!
		ahod=0;  amin=0;  asek=0;
	}

// (znovu) konstruktor
	public Budik(int h, int m, int s, int ah, int am, int as) {
		super(h,m,s);	// volam konstruktor predka s parametrami
		ahod=ah;  amin=am;  asek=as;
	}

	public void Tick() {
		super.Tick();	// urobim jeden "tik"; vyuzijem existujuci kod
		if ( hod==ahod && min==amin && sek==asek ) {
			for (int j=0; j<512; j++)
				System.out.print("\rCrrrrrrrrrrrrrrrrrrrn.");
			System.out.print("\r                           ");
		}
	}

}  // Budik




// hlavna trieda
class Cas {

	public static void main(String argv[]) {
		// vytvorim si budik
		Budik budicek = new Budik(22,00,00, 06,30,00);// je 22:00 a o
							 // 6:30 vstavam :-(
		while ( true ) {
			budicek.Tick();	// tik-tak-tik-tak ... hodiny bezia
			System.out.print(budicek.get_hod());
			System.out.print(":");
			System.out.print(budicek.get_min());
			System.out.print(":");
			System.out.print(budicek.get_sek());
			System.out.print("  \r");
		}
	}

} // Cas

Zaciatok