rendered paste body
public class Tossuelain extends Alkuelain{
private char sukupuoli;
private String spuoli;
public Tossuelain(){ //luo tohvelieläimen, jolle arvotaan perimä.
super();
this.sukupuoli = perusemas[(int) Math.random()*4];
}
public Tossuelain(char[] perimaAnnettu){ //luo tohvelieläimen annetulla perimällä. Ottaa sisäänsä 31-alkioisen taulukon ja määrää siitä viimeisen alkion sukupuoleksi.
super(perimaAnnettu);
this.sukupuoli = perimaAnnettu[perimaAnnettu.length-1];
}
public Tossuelain pariudu(Tossuelain toinen) { //palauttaa arvonaan joko jälkeläisen tai arvon null.
if (((this.sukupuoli == 'A') && (toinen.sukupuoli == 'G' || toinen.sukupuoli == 'T')) || ((this.sukupuoli == 'C') && (toinen.sukupuoli == 'G' || toinen.sukupuoli == 'T')) ||((this.sukupuoli == 'G') && (toinen.sukupuoli == 'C' || toinen.sukupuoli == 'A')) ||((this.sukupuoli == 'T') && (toinen.sukupuoli == 'C' || toinen.sukupuoli == 'A'))){
char[] parit = new char[ perimanKoko];
for (int i=0; i < parit.length; ++i){
if (Math.random()<0.5)
parit[i] = toinen.perima[i];
else
parit[i] = this.perima[i];
}
if (this.sukupuoli == 'A') {
if (toinen.sukupuoli == 'G')
parit[parit.length-1] = 'A';
else if (toinen.sukupuoli == 'T')
parit[parit.length-1] = 'C';
}
if (this.sukupuoli == 'C') {
if (toinen.sukupuoli == 'G')
parit[parit.length-1] = 'G';
else if (toinen.sukupuoli == 'T')
parit[parit.length-1] = 'T';
}
if (this.sukupuoli == 'T') {
if (toinen.sukupuoli == 'A')
parit[parit.length-1] = 'C';
else if (toinen.sukupuoli == 'C')
parit[parit.length-1] = 'T';
}
if (this.sukupuoli == 'G') {
if (toinen.sukupuoli == 'C')
parit[parit.length-1] = 'G';
else if (toinen.sukupuoli == 'A')
parit[parit.length-1] = 'A';
}
return new Tossuelain(parit);
}
else
return null;
}
public char vaihdaNukleotidi(int indeksi, char uusi) { //vaihtaa tossueläimen yhden nukleotidin toiseksi kohdasta indeksi. Arvonaan metodi palauttaa vanhan, korvatun nukleotidin. Määrittele, mitä tehdään, jos parametrit ovat virheellisiä.
if (indeksi > this.perima.length) //pidetään indeksi sallituissa rajoissa
indeksi = this.perima.length;
else if (indeksi < 0)
indeksi = 0;
if (uusi != 'A' || uusi != 'C' || uusi != 'G' || uusi !='T') uusi = perusemas[(int) Math.random()*4];
if (indeksi == this.perima.length){//if int indeksi == 30 ...muuttaa sukupuolinukleotidiä.
//char vanha = this.sukupuoli; toimiiko?
this.sukupuoli = uusi;}
else{
//char vanha = this.perima[indeksi];
this.perima[indeksi] = uusi;}
return 'A'; //vanha; pitäisi keksiä miten saisi järkevästi palautettua vanhan arvon
}
public String toString() { //muodostaa selkeän merkkiesityksen tossueläimestä.
if ((this.sukupuoli == 'A') || (this.sukupuoli == 'C')) // A- ja C-tossut naaraita, G- ja T-tossut koiraita
spuoli = "naaras";
else if ((this.sukupuoli == 'G') || (this.sukupuoli == 'T'))
spuoli = "koiras";
return "Tohvelieläin "+this.YKSILOLLISYYS+".: "+this.perimalista+this.sukupuoli+" "+this.spuoli;
}
public static void main(String[] args) {
char[]testi = {'G','A','T','T','A','C','A','G','A','T','T','A','C','A','G','A','T','T','A','C','A','G','A','T','T','A','C','A','G','A','T'};
char[]testi2 = {'T','T','A','C','A','G','A','T','T','A','C','A','G','A','T','T','A','C','A','G','A','T','T','A','C','A','G','A','T','T','A'};
Tossuelain tossu1 = new Tossuelain();
System.out.println(tossu1);
Tossuelain tossu2 = new Tossuelain();
System.out.println(tossu2);
Tossuelain tossu3 = new Tossuelain(testi);
System.out.println(tossu3);
Tossuelain tossu4 = new Tossuelain(testi2);
System.out.println(tossu4);
Tossuelain tossu5 = tossu1.pariudu(tossu2);
System.out.println(tossu5);
Tossuelain tossu6 = tossu4.pariudu(tossu5);
System.out.println(tossu6);
tossu2.vaihdaNukleotidi(0, 'A');
System.out.println(tossu2);
}
}