Arv-metoder

12
Arv & Metoder Marcus Weiderstål Programmering Tullinge Gymnasium

Transcript of Arv-metoder

Page 1: Arv-metoder

Arv & Metoder

Marcus WeiderstålProgrammering

Tullinge Gymnasium

Page 2: Arv-metoder

Arv

Vad gör arv?

Klass

Superklass

Extends

Eliteserieklubb

Extends

Klass extends Superklass | AIK extends Eliteserieklubb

Page 3: Arv-metoder

Kod

public class NV10A {private String Namn;Private int Ålder;

public NV10A (String na, int ål){Namn=na;Ålder=ål;}}

Page 4: Arv-metoder

Kod

public class Elev extends NV10A{private double närvaroProcent;private int födelsedatum;

public Elev (na,ål,np,fd){Super(Na,ål)närvaroProcent=np;födelsedatum=fd;}}

Page 5: Arv-metoder

Varför Arv?

• Vissa saker är gemensamma – men inte allt.

• Kunna lägga till en subklass, utan att behöva rota i annan kod (kräver någon form av standardisering på metoderna)

• Hjälper oss att jobba objektorienterat.

Page 6: Arv-metoder

EXEMPEL

UML + Kod

Page 7: Arv-metoder

Lite om referenser till objekt

Vad är skillnaden på:

Glas ny = new ölGlas (”EmmaBoda”, 33, 200)

&ölGlas ny = new

Ölglas(”EmmaBoda”,33,200);

Page 8: Arv-metoder

Man skapar (oftast) objekt av klasserna ”längst ner” i hierakin!

Page 9: Arv-metoder

Abstrakta klasser

Låser en klass. Dvs inga ”new Djur” kan göras.

abstract class Djur{

Page 10: Arv-metoder

Metoder

Vad gör metoder?Metoder gör!

public String toString(){Namn+”heter jag och är ett”+ras+” och

gillar att äta ”+favoritMat}

Page 11: Arv-metoder

Metoder

Vi har en klasshierarki med en huvudklass som heter djur och ett gäng med underklasser som heter Ko, Häst, Marsvin, Piggsvin osv.

Dessa djur har ett par gemensamma datatyper samt ett par unika för just det djuret. Anta att vi ska sätta poäng på dessa djur.

Men, nu till kruxet. För de olika djuren räknar man ut poängen olika. När det kommer till Marsvin räknar man ut poängen genom att ta antal tassar*åldern/antal ögon. När det kommer till Kossors poäng använder man formeln antal tänder/2*åldern och när det kommer till Piggsvin tar vi antal piggar/åldern.

Hur ska vi lösa detta så att vi får en metod i klassen Djur som heter getPoints samt få våra underklasser att skicka poäng dit?

Page 12: Arv-metoder

Metoder

Vi fortsätter på samma klasshierarki om djur.När det kommer till toString-metoden vill vi ha olika utskrifter beroende på vilka djur.

När det kommer till marsvinet vill ha namn,typ av djur, färg, antal ögon samt poäng.När kossorna skrivs ut vill vi att man skriver ut namn, typ av djur, kön, antal fläckar, antal tänder samt poäng.När det kommer till piggsvin vill vi ha namn, typ av djur, kön, antal piggar samt poäng.

Hur ska vi göra metoder som gör så att allt detta skrivs ut när vi skriver ut Djur i arraylisten allaDjur?