Tænkeøvelse: Identificer potentielle interfaces i et programmeringsprojekt
Mål: Denne øvelse hjælper dig med at forstå, hvordan du kan bruge interfaces i C# til at skabe fleksibel og genbrugelig kode. (Her arbejder man sammen i grupper af 2 personer)
Læringsmål
Forstå hvordan interfaces kan bruges til at definere fælles funktionalitet, som flere klasser skal implementere.
Anvende interfaces til at opnå polymorfi, hvor forskellige objekter kan behandles ensartet på et højere niveau.
Reducere afhængigheden mellem komponenter ved at implementere løs kobling i systemet.
Scenario: Byg et system til styring af forskellige transportmidler
Forestil dig, at du skal bygge et program, som håndterer forskellige typer transportmidler – biler, både, cykler, fly osv. Hver transporttype har nogle fælles funktioner, men de implementeres på forskellige måder afhængigt af transporttypen.
Trin 1: Tænk på de fælles funktioner
Hvilke fælles funktioner kunne alle transportmidler have?
Hvordan ville du senere implementere disse funktioner for forskellige transportmidler?
Diskutér, hvordan bilens funktioner kan adskille sig fra en båd eller en cykel.?
Hint
Tænk på funktioner som:
Start: Alle transportmidler skal kunne starte.
Stop: Alle transportmidler skal kunne stoppe.
Accelerer: Alle transportmidler skal kunne accelerere.
Bremse: Alle transportmidler skal kunne bremse.
Trin 2: Brainstorm et Interface
Kom på et interface, der kan beskrive de funktioner, du har diskuteret. Dette interface skal definerer de nødvendige metoder, som alle transportmidler skal implementere.
Hint
public interface ITransport
{
void Start();
void Stop();
void Accelerate();
void Brake();
}
Trin 3: Implementer de forskellige transportmidler
Nu kan du tænke på, hvordan de forskellige transportmidler (bil, båd osv.) implementerer dette interface. Her er et eksempel på, hvordan det kan gøres for en bil og en båd:
Hint
public class Car : ITransport
{
public void Start()
{
Console.WriteLine("Starting the car.");
}
public void Stop()
{
Console.WriteLine("Stopping the car.");
}
public void Accelerate()
{
Console.WriteLine("Accelerating the car.");
}
public void Brake()
{
Console.WriteLine("Braking the car.");
}
}
public class Boat : ITransport
{
public void Start()
{
Console.WriteLine("Starting the boat engine.");
}
public void Stop()
{
Console.WriteLine("Stopping the boat.");
}
public void Accelerate()
{
Console.WriteLine("Accelerating the boat.");
}
public void Brake()
{
Console.WriteLine("Braking the boat.");
}
}
Trin 4: Diskutér fordelene ved at bruge et Interface
Hvordan gør brugen af et interface koden mere fleksibel og genbrugelig?
Hvordan ville det være at håndtere disse transportmidler uden et interface?
Hvordan gør interfacet det lettere at tilføje nye transportmidler som fly, cykler eller tog uden at ændre eksisterende kode?
Hvad sker der, hvis du ændrer implementeringen af et transportmiddel (f.eks. ændrer hvordan bilen accelererer)? Hvordan gør interfaces det lettere at ændre implementeringen uden at bryde eksisterende kode?