| Javan perustehtävät | Tehtävä 5 |
Luokkahierarkiat, periminen
Käytä seuraavaa luokkamäärittelyä ja main-metodia pohjana:
public class InheritanceExc extends Applet
{
Figure[] figArray;
public static void main(String argv[])
{
Frame f = new Frame();
f.setLayout(new GridLayout());
f.add(new InheritanceExc());
f.setSize(250, 250);
f.show();
}
InheritanceExc()
{
figArray = new Figure[2];
figArray[0] = new Circle(50, 50, 30);
figArray[1] = new Rectangle(100, 140, 50, 70);
}
public void paint(Graphics g)
{
for ( int i = 0 ; i < figArray.length ; i++ )
figArray[i].drawIt(g);
}
}
Ohjelman luoman ikkunan tulee olla seuraavan näköinen:
Kuten main-metodista näkyy, tehtävä edellyttää kolmen muun luokan määrittelemistä - Figure, Circle sekä Rectangle. Circle ja Rectangle ovat Figure-luokan alaluokkia.
Kaikilla kolmella luokalla tulee olla metodi "public void drawIt(Graphics g)" joka piirtää kuvion sekä metodi "public double getArea()", joka palauttaa kuvion pinta-alan.
Pinta-ala piirretään ikkunaan Figure-luokan metodissa "public void writeFigureArea(Graphics g)". Metodi getArea() palauttaa kunkin kuvion pinta-alan.
Yritä välttää turhia ilmentymämuuttujia ja ilmentymämetodeja luokkien Circle ja Rectangle välillä. Yritä sensijaan laittaa ne mahdollisuuksien mukaan Figure-luokkaan.
Circle-luokan konstruktorille annettavat parametrit ovat x- ja y-koordinaatit sekä ympyrän säde. Rectangle-luokan konstruktorin parametrit ovat vastaavasti x- ja y-koordinaatit sekä leveys ja korkeus.