4055 Demo - Interface med Boss

Lärandemål

  • Känna till skillnaderna mellan en klass och ett interface (sv. gränssnitt).
  • Känna till varför interface behövs.
  • Kunna implementera interface

Teori

En klass kan bara ärva en annan klass. Gränssnitt (eng interface) liknar klasser men inga objekt kan skapas från dem. Gränssnitt kan innehålla metodhuvuden. Man säger inte att man ärver gränssnitt utan att man implementerar dem. En klass kan implementera flera gränssnitt.

Kod för klasserna i diagrammet ovan visas. Därtill klasserna Boss och Program. Den senaste innehåller metoden Main, där körningen börjar.

Interfacet Servant

Metoden är abstakt, men det skriver man ej.

interface Servant
{
  void Act();
}

Klassen Gardner

Klassen Gardner implementerar gränssnittet Servant.

class Gardner : Servant
{
  public void Act()
  {
    Console.WriteLine("Rensar ogräs. Klipper ogräs.");
    Console.WriteLine();
  }
}

Klassen Housekeeper

Klassen Housekeeper implementerar också gränssnittet Servant.

class Housekeeper : Servant
{
  public void Act()
  {
      Console.WriteLine("Städar huset. Lagar mat.");
      Console.WriteLine();
  }
}

Klassen Waitress

Även klassen Waitress implementerar gränssnittet Servant.

class Waitress : Servant
{
  public void Act()
  {
      Console.WriteLine("Häll upp te.");
      Console.WriteLine();
  }
}

Klassen Boss

Klassen Boss har tre objektvariabler. Observera att dessa är deklarerade som Servant. I den första läggs ett objekt av typen Gardner i den andra läggs ett objekt av typen Housekeeper och i den tredje läggs ett objekt av typen Waitress.

class Boss
{
  Servant servantGardner;
  Servant servantHousekeeper;
  Servant servantWaitress;

  public Boss()
  {
    servantGardner = new Gardner();
    servantHousekeeper = new Housekeeper();
    servantWaitress = new Waitress();
  }

  public void Run()
  {
    servantHousekeeper.Act();
    servantWaitress.Act();
    servantGardner.Act();
  }
}

Klassen Program

I klassen Program finn metoden Main där körningen startar.

class Program
{
  static void Main(string[] args)
  {
    Boss boss = new Boss();
    boss.Run();

    Console.WriteLine("Press key to exit.");
    Console.ReadKey();
  }
}

Utskriften blir som följer.

Städar huset. Lagar mat.

Häll upp te.

Rensar ogräs. Klipper ogräs.