Arv-metoder
-
Upload
marcus-weiderstal -
Category
Documents
-
view
436 -
download
1
Transcript of Arv-metoder
Arv & Metoder
Marcus WeiderstålProgrammering
Tullinge Gymnasium
Arv
Vad gör arv?
Klass
Superklass
Extends
Eliteserieklubb
Extends
Klass extends Superklass | AIK extends Eliteserieklubb
Kod
public class NV10A {private String Namn;Private int Ålder;
public NV10A (String na, int ål){Namn=na;Ålder=ål;}}
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;}}
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.
EXEMPEL
UML + Kod
Lite om referenser till objekt
Vad är skillnaden på:
Glas ny = new ölGlas (”EmmaBoda”, 33, 200)
&ölGlas ny = new
Ölglas(”EmmaBoda”,33,200);
Man skapar (oftast) objekt av klasserna ”längst ner” i hierakin!
Abstrakta klasser
Låser en klass. Dvs inga ”new Djur” kan göras.
abstract class Djur{
Metoder
Vad gör metoder?Metoder gör!
public String toString(){Namn+”heter jag och är ett”+ras+” och
gillar att äta ”+favoritMat}
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?
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?