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.