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)