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.