Gå til indholdet

N266 Polymorfisk liste

Du skal skabe en tom konsolapplikation, hvor en abstrakt klasse Faktura defineres som en overordnet klasse for to afledte klasser: StandardFaktura (med moms) og MomsfriFaktura (uden moms). Opgaven består af følgende trin:

  1. Opret den abstrakte klasse Faktura med egenskaberne Beløb af typen decimal og Beskrivelse af typen string samt den abstrakte metode BeregnTotal().
  2. Implementer de to afledte klasser StandardFaktura og MomsfriFaktura, som begge nedarver fra Faktura.
  3. Skab en liste af Faktura-objekter, der indeholder begge typer fakturaer.
  4. Anvend en foreach-løkke til at gennemløbe listen og udskriv den samlede fakturasum for hver faktura.
Klik for at se et forslag til en løsning
// Abstrakt fakturaklasse
public abstract class Faktura
{
    public string Beskrivelse { get; set; } = "";
    public decimal Beløb { get; set; }

    // Abstrakt metode til at beregne det samlede beløb
    public abstract decimal BeregnTotal();
}

// Konkret fakturaklasse med moms
public class StandardFaktura : Faktura
{
    public override decimal BeregnTotal()
    {
        return Beløb * 1.25m; // Inkluder 25 % moms
    }
}

// Konkret fakturaklasse uden moms
public class MomsfriFaktura : Faktura
{
    public override decimal BeregnTotal()
    {
        return Beløb; // Ingen moms
    }
}

// Hovedprogram
class Program
{
    static void Main()
    {
        // Opret en liste af Faktura-objekter
        List<Faktura> fakturaer = new List<Faktura>
        {
            new StandardFaktura { Beskrivelse = "Serviceydelse", Beløb = 1000.00m },
            new MomsfriFaktura { Beskrivelse = "Rådgivning", Beløb = 800.00m },
            new StandardFaktura { Beskrivelse = "Udvikling", Beløb = 2000.00m }
        };

        // Gennemløb listen og udskriv fakturasum for hver faktura
        foreach (Faktura faktura in fakturaer)
        {
            Console.WriteLine($"{faktura.Beskrivelse} - I alt: {faktura.BeregnTotal():C}");
        }
    }
}