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.