public class Alkuelain { private static int otuslaskuri = 0; private final int YKSILOLLISYYS; private static char[] perusemas = {'A','C','G','T'}; // koska tämä taulukko ei ole oliokohtainen, might as well be static private static final int perimanKoko = 30; private String perimataulu; private char[] perima; // esitellään ne oliomuuttujat mielellään täällä (tai sit konstruktorissa, muttei ainakaan sekasin) public Alkuelain(){ //luo alkueläimen, jolle arvotaan perimä. this.YKSILOLLISYYS = otuslaskuri; ++Alkuelain.otuslaskuri; //tähän kelpais ihan pelkästään ++otuslaskuri, mutta käy se näinkin this.perima = new char[perimanKoko]; // this. oliomuuttujien edessä on (lähes) aina jees for (int i=0; i < this.perima.length; ++i){ this.perima[i] = perusemas[(int) Math.random()*4]; } perimataulu = new String(this.perima); } public Alkuelain(char[] perima){ //luo alkueläimen annetulla perimällä. Määrittele mitä tehdään, jos perimä ei ole kelvollinen. //char[] toCharArray() } public void mutaatio(){ //aikaansaa aidon mutaation alkueläimen perimään, so. jokin arvottu nukleotidi muuttuu arvotulla tavalla. } public Alkuelain jakaudu(){ //palauttaa arvonaan jakautumalla syntyneen alkueläimen. Huomaa että myös perimätaulukon sisältö on kopioitava! Miksi? } public Alkuelain pariudu(Alkuelain toinen){ //tuottaa this-alkueläimen ja parametrina annetun alkueläimen jälkeläisen. } public String toString(){ //tuottaa merkkiesityksen alkueläimestä return "Alkueläin "+this.YKSILOLLISYYS+".: "+this.perimataulu; //ei tartte sulkuja palauttaakseen yhden stringin //vähensin tästä vähän sulkuja ja asettelin järkevämmin noi konkatenaatiot } }