4026 dice inheritance
Uppgift 6 - arv
Kopiera projekt
Avluta Visual Studio. Kopiera projektmappen och döp kopian till DiceInheritance
. Öppna kopian i Visual Studio.
Lärandemål
- Känna till vad arv är.
- Känna till hur man skriver för att en klass ska ärva en annan.
Börja koda
Klasserna Circle
, Rectangel
och Triangle
är väldigt lika. Studera källkoden.
Kan du hitta det som skiljer klasserna åt?
Det som är identiskt flyttar du från Circle
till Shape
. Ta bort motsvarande kod i Rectangle
och Square
.
Är du klar?
När du är klar bör följande vara kvar i klassen Circle
.
Objektvariablen diameter
.
Metoderna Draw
och ChangeSize
.
övriga förändringar
Kanske kan du lista ut vad som måste ändras för övrigt. Nedan följer instruktioner.
Shape
Följande kod ändras eftersom interface (sv. gränssnitt) inte kan innehålla metoder med kropp. Klassen behöver vara abstract
för att metoden Draw
inte har någon kropp.
Från
interface Shape
Till
public abstract class Shape
Ändra därför även
från
void Draw(Graphics g);
Till
public abstract void Draw(Graphics g);
För att objektvariablerna isVisible
och color
ska finnas tillgängliga i de ärvande klasserna byter vi private
mot protected
.
Från
private bool isVisible; private String color;
Till
protected bool isVisible; protected String color;
Circle
När metoden Draw
i klassen Circle
implementerar metoden Draw
i klassen Shape
, så måste man berätta detta genom att lägga till nyckelordet override
.
Från
public void Draw(Graphics g)
Till
public override void Draw(Graphics g)
Metoderna Draw
och TranslateStringToColor
har flyttats från klassen Cirlcle
till klassen Shape
. För att de ska kunna anropas från den ärvande klassen Circle
behöver synligheten ändras från private
till protected
.
Från
private void Draw() private Color TranslateStringToColor(String color)
Till
protected void Draw() protected Color TranslateStringToColor(String color)