/* Reetta Janhonen *Tehdään luokka Basilisko. Tärkeitä piirteitä ovat *Luokkamuuttujan käyttö Basiliskon yksilöllisyyden *määrittämisessä, siten että kaikilla luku on eri *ja se, että yksilöllisyys ei voi muuttua enää Basiliskon *luomisen jälkeen. Basilisko on toteutettava abstraktin *tietotyypin hengen mukaisesti ja olio-ohjelmoinnin hengessä *kentät ovat private, joten aliluokkaa TuplaBasilisko varten *on tehtävä metodit, joilla se pääsee tietoihin käsiksi. *lisäksi on löydyttävä loogiset toteutukset annetuille *metodeille mikäOnPerimä(), pariudu(Basilisko toinen) ja *toString(). Ehdot näiden toiminnalle löytyvät tehtävästä. * *Luokan toteutuksesta max 10 pistettä. *luokka- ja ilmentymämuuttujien ja vakioiden kanssa ongelmista *-1 pistettä jokaisesta. *virheellisestä konstruktorin toteutuksesta -1:stä -3:een *pistettä virheen vakavuuden mukaan. *Pariutumisen ongelmista -1 tai -2 pistettä. *mikäOnPeimä():n ja toString():n ongelmista -1 pistettä *kummastakin. *Jos luokan ideaa ei ole ymmärretty, max 1 piste. */ public class Basilisko { //-------- luokkamuuttuja --------------------------- private static int laskuri=0; //-------- ilmentymävakio --------------------------- private final int yksilöllisyys; //-------- ilmentymämuuttuja ------------------------ //-------- voi olla myös vakiona -------------------- private String perimä; //-------- konstruktori ----------------------------- public Basilisko(String perimä) { laskuri++; this.yksilöllisyys=laskuri; this.perimä=perimä; } //-------- aksessori perimään ----------------------- public String mikäOnPerimä() { return this.perimä; } //-------- pariutumismetodi -------------------------- public Basilisko pariudu(Basilisko toinen) { if(Math.random()<0.5) { return new Basilisko(this.perimä); } else { return new Basilisko(toinen.perimä); } } //-------- merkkijonoesitys Basiliskosta ------------- public String toString() { return "("+this.yksilöllisyys+"): "+this.perimä; } } ======================================================================= /* *Luokka TuplaBasilisko Basiliskon aliluokkana *Tärkeitä asioita on käyttää hyväksi yliluokan (eli Basiliskon) *konstruktoria ja metodeita *Luokkaan tulee konstruktori joka saa parametrina perimän *ja metodi pariudu, joka palauttaa uuden TuplaBasiliskon * *Luokan toteutuksesta saa max 6 pistettä. *Virheistä konstruktorissa -1:stä -3:een pistettä, *paritutumisen virheistä -1 tai -2 pistettä *ja turhista ja virheellisistä kentistä tai metodeista -1 pistettä *Jos aliluokan ideaa ei ole ymmärretty, max 1 piste. */ public class TuplaBasilisko extends Basilisko { public TuplaBasilisko(String perimä) { super(perimä); } public TuplaBasilisko pariudu(TuplaBasilisko toinen) { String lapsiPerimä = this.mikäOnPerimä()+toinen.mikäOnPerimä(); return new TuplaBasilisko(lapsiPerimä); } // Peritty toString kelpaa sellaisenaan! }