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, Rectangeloch 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)