N262 Polymorfi (Terning)
Du skal skabe en tom konsol app med en klasse Terning med følgende medlemmer:
- En offentlig egenskab (int) Værdi (med private felt kaldet værdi). Der må ikke tildeles et tal mindre end en eller større end seks. Hvis det sker sættes værdi blot til en.
- En privat statisk instans af System.Random (initialiseres i en statisk constructor)
- En offentlig metode Ryst() der giver et tilfældigt tal
- En Offentlig metode Skriv() der viser terningen (eksempelvis [1] eller [2])
- Tilføj en default constructor (hvor Ryst kaldes) og en custom constructor hvor værdi kan angives når der oprettes en instans.
Info
Se hvordan du skaber et tilfældigt tal her.
Skab nu en ny klasse LudoTerning der arver fra Terning. Klassen har to metoder
- ErGlobus() returnerer true hvis værdien er 3 – ellers false
- ErStjerne() returnerer true hvis værdien er 5 – ellers false
- Sørg for at der både er en default og custom constructor der kalder ”mor” uden yderligere funktionalitet
- Sørg for at Skriv kan overskrives så den returnerer eksempelvis [1] [2] [G] [4] [S] [6]
Prøv at skabe instanser af både Terning og LudoTerning og test at metoder fungerer.
Klik for at se et forslag til en løsning
Terning t = new Terning();
t.Skriv();
t.Ryst();
t.Skriv();
LudoTerning l = new LudoTerning();
l.Skriv();
Console.WriteLine(l.ErGlobus());
Console.WriteLine(l.ErStjerne());
public class Terning
{
// Bemærk - statisk instans (se statisk konstruktør)
private static System.Random rnd;
private int værdi;
public int Værdi
{
get
{
//Console.WriteLine("Terning aflæses som " + this.værdi);
return this.værdi;
}
set
{
if (value < 0 || value > 6)
value = 1;
//Console.WriteLine("Terning tildeles " + value);
this.værdi = value;
}
}
public virtual void Skriv()
{
Console.WriteLine("[" + this.Værdi + "]");
}
public void Ryst()
{
this.Værdi = rnd.Next(1, 7);
}
public Terning()
{
this.Ryst();
}
public Terning(int værdi)
{
this.Værdi = værdi;
}
static Terning()
{
rnd = new Random();
}
}
public class LudoTerning : Terning
{
public bool ErGlobus()
{
return this.Værdi == 3;
}
public bool ErStjerne()
{
return this.Værdi == 5;
}
// Kan evt slettes!!
public LudoTerning() : base()
{
// log kode eller andet...
}
public LudoTerning(int værdi) : base(værdi)
{
// log kode eller andet...
}
public override void Skriv()
{
if(ErGlobus())
{
Console.WriteLine("[G]");
return;
}
if(ErStjerne())
{
Console.WriteLine("[S]");
return;
}
base.Skriv();
}
}