Gå til indholdet

N203 Leg med klasser

I denne opgave skal du blot lege med en allerede oprettede klasser.

  • Start med at skabe en tom konsol applikantion
  • Tilføj så NuGet pakken MCronberg.Kursus
  • Brug Visual Studio og højreklik på dit projekt og vælg Manage NuGet Packages
  • Eller ved brug af Visual Studio Code brug dotnet CLI dotnet add package MCronberg.Kursus
  • Tilføj så følgende kode til din Program.cs fil

Terning og TerningBæger

Prøv eksempelvis at bruge mine klasser som repræsenterer en terning og et bæger med terninger:

using Dumpify;
using MCronberg.Kursus;

Terning t = new Terning();
Console.WriteLine("Værdi: " + t.Værdi);
t.Dump();
t.Ryst();
t.Dump();


TerningBæger bæger = new TerningBæger(5);
bæger.Dump();

bæger.Sorter();
bæger.Dump();
  • Kør programmet og se hvad der sker.
  • Her er et UML diagram over klasserne:
classDiagram
    class TerningBæger {
        - Terning[] Terninger
        + TerningBæger(int antalTerninger)
        + void Ryst()
        + string ToString()
        + void Sorter()
    }

    class Terning {
        - int Værdi
        + Terning()
        + Terning(int værdi)
        + void Ryst()
        + string ToString()
    }

    TerningBæger --> Terning : contains

Overvejelser

  • Kan du se fordelene ved at bruge klasser til at organisere koden? Brugeren behøver ikke kende noget som helst til hvordan klassen er implementeret, blot hvordan den bruges.

  • Prøv at skrive din egen kode der benytter klasserne.

  • Kan du komme i tanke om noget funktionalitet som kunne tilføjes til klassen Terning eller TerningBæger?
  • Se evt koden til klasserne her.

Kort og bunker

Prøv at erstatte koden med dette som nu leger med kort og bunker med kort:

using Dumpify;
using MCronberg.Kursus;

Spillekort s = new Spillekort();
s.Dump();
s.Vend();
s.Dump();
s.Vend();
s.Dump();

Spillekort s2 = new Spillekort(SpillekortKulør.Hjerter, SpillekortVærdi.Es);
s2.Dump();

SpillekortBunke b = new();
b.TilføjKort(s);
b.TilføjKort(s2);
b.Dump();
b.VendAlleKort();
b.Dump();

// Prøv også dette

// SpillekortBunke b2 = SpillekortBunke.OpretBunke();
// b2.Dump();
  • Kør programmet og se hvad der sker.
  • Her er et UML diagram over klasserne:
classDiagram
    class Spillekort {
        - SpillekortKulør Kulør
        - SpillekortVærdi Værdi
        - SpillekortRetning Retning
        - int Point
        - bool ErJoker
        + Spillekort()
        + Spillekort(SpillekortKulør kulør, SpillekortVærdi værdi)
        + Spillekort(SpillekortKulør kulør, SpillekortVærdi værdi, SpillekortRetning retning, int point)
        + Spillekort(int point, bool erJoker)
        + void Vend()
        + SpillekortFarve Farve()
        + string ToString()
        + static SpillekortKulør FindTilfældigSpillekortKulør()
        + static SpillekortVærdi FindTilfældigSpillekortVærdi()
        + static Spillekort FindTilfældigtKort()
    }

    class SpillekortBunke {
        - List~Spillekort~ Kort
        + static SpillekortBunke OpretBunke(int antalKortspil, int antalJokere)
        + void FlytKortTilBunke(SpillekortBunke bunke, int antalKort)
        + void TilføjKort(Spillekort kort)
        + void FjernKort(Spillekort kort)
        + void Bland()
        + void Sorter()
        + void VendAlleKort()
        + void FjernAlleKort()
        + void FjernAlleKort(SpillekortKulør kulør)
        + void FjernAlleKort(SpillekortVærdi værdi)
        + void FjernAlleKort(SpillekortKulør kulør, SpillekortVærdi værdi)
        + void FjernAlleKort(SpillekortFarve farve)
        + string ToString()
    }

    class SpillekortKulør {
    }
    class SpillekortRetning {
    }
    class SpillekortVærdi {
    }
    class SpillekortFarve {
    }

    SpillekortBunke --> Spillekort : contains
    Spillekort --> SpillekortKulør
    Spillekort --> SpillekortRetning
    Spillekort --> SpillekortVærdi
    Spillekort --> SpillekortFarve

Overvejelser

  • Kan du se fordelene ved at bruge klasser til at organisere koden? Brugeren behøver ikke kende noget som helst til hvordan klassen er implementeret, blot hvordan den bruges.

  • Prøv at skrive din egen kode der benytter klasserne.

  • Kan du komme i tanke om noget funktionalitet som kunne tilføjes til klassen Spillekort eller SpillekortBunke?
  • Se evt koden til klasserne her