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)