[ djovan01 @ 14.02.2006. 18:31 ] @
radim domaci i malkice mi zapelo oko class inheritance, elem knjiga daje class Clock a ja treba da napisem neku ExtClock koja ce biti extended od klase Clock. jedino sto treba da dodam jeste timeZone. Malo sam se pogubila pa ako mozete da pogledate kod koji sam napisala i da mi kazete sta mi jos fali da bi class ExtClock bila gotova i da li je ovo tacno.

Hvala najlepse :)

//////////////////////////////////////////////////////////////////////////////////
public class Clock
{

private int hr;
private int min;
private int sec;

public Clock()
{
setTime(0, 0, 0);
}

public Clock(int hours, int minutes, int seconds)
{
setTime(hours, minutes, seconds);
}

public void setTime(int hours, int minutes, int seconds)
{
if (0 <= hours && hours < 24)
hr = hours;
else
hr = 0 ;

if (0 <= minutes && minutes < 60)
min = minutes;
else
min = 0;

if (0 <= seconds && seconds < 60)
sec = seconds;
else
sec = 0;

}//end of setTime


public int getHours()
{
return hr;
}

public int getMinutes()
{
return min;
}

public int getSeconds()
{
return sec;
}

public void printTime()
{

if (hr>10)
System.out.print("0");
System.out.print(hr + ":");

if (min>10)
System.out.print("0");
System.out.print(min + ":");

if (sec>10)
System.out.print("0");
System.out.print(sec + ":");
}


public void incrementSeconds()
{
sec++;
if(sec > 59)
{
sec = 0;
incrementMinutes();
}
}//end incrementSeconds

public void incrementMinutes()
{
min++;
if(min > 59)
{
min = 0;
incrementHours();
}
}//end incrementMinutes

public void incrementHours()
{
hr++;
if(hr > 23)
{
hr = 0;

}
}//end incrementHours


public boolean equals(Clock otherClock)
{
return(hr == otherClock.hr
&& min == otherClock.min
&& sec == otherClock.sec);

}//end equals


public void makeCopy(Clock otherClock)
{
hr = otherClock.hr;
min = otherClock.min;
sec = otherClock.sec;

}

public Clock getCopy()
{
Clock temp = new Clock();

temp.hr = hr;
temp.min = min;
temp.sec = sec;

return temp;
}
}

////////////////////////////////////////////////////////////////////////


public class ExtClock extends Clock
{
private String timeZone;

//default contructor
public ExtClock()
{
super();
timeZone ="";
}
//constructor with parameters
public ExtClock(int hours, int minutes, int seconds, String zone)
{
super(hours, minutes, seconds);
timeZone = zone;
}


public void setExtClockTime(int hours, int minutes, int seconds, String timeZone)
{
super.setTime(hours, minutes, seconds);
timeZone ="Eastern Time";
}


public int getHours()
{
return(super.getHours());
}

public int getMinutes()
{
return(super.getMinutes());
}

public int getSeconds()
{
return(super.getSeconds());
}



public void incrementSeconds()
{
super.incrementSeconds();
}

public void incrementMinutes()
{
super.incrementMinutes();
}

public void incrementHours()
{
super.incrementHours();
}



public void printTime()
{
super.printTime();
System.out.println("Time zone: " + timeZone);
}



}//end of class






[ rj444 @ 15.02.2006. 18:01 ] @
Mogla bi da nam das malo vise informacija sta ova izvedena klasa treba da ima, tj. da radi.
Evo za sada cu ti dati neke opste savete:

Da bi drugi lakse citali tvoj kod pisi ga izmedju tagova za Code: (pise ti sa leve strane ovog polja), tako da ce kod izgledati ovako:
Code:

public class Klasa {
    private String polje;
    public String getPolje() { return polje; }
}


sto je, slozices se lakse za citanje.

Sledece, sto se samog tvog koda tice, imas par nepotrebnih stvari, npr. ne moras da pises ponovo metode getHour(), getMinute(), getSeconds() kao ni
incrementSeconds() i ostale inrement metode, ako ces u njima samo pozvati super.imeIsteTeMetode() jer nasledjivanje podrazumeva to samo po sebi. Tako da ces u nasledjenoj klasi imati ove gore navedene metode. Pogledaj to malo vise u nekoj knjizi, bitno je.

A ovo mi nimalo nije jasno:
Code:

 public void setExtClockTime(int hours, int minutes, int seconds, String timeZone)
{
super.setTime(hours, minutes, seconds);
timeZone ="Eastern Time";
}


Da li mozda treba da stoji u telu metode
Code:
this.timeZone=timeZone
umesto
Code:
timeZone="Eastern Time"

jer ovim ne dobijas nista->timeZone je lokalna promenljiva koju si prosledila kao parametar, a this.timeZone je atribut klase (to mora tako jer imaju ista imena pa lokalni parametar "prekriva" atribut klase).

Ako treba slobodno pitaj opet.

Pozdrav