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:
- Opret den abstrakte klasse
Fakturamed egenskaberneBeløbaf typendecimalogBeskrivelseaf typenstringsamt den abstrakte metodeBeregnTotal(). - Implementer de to afledte klasser
StandardFakturaogMomsfriFaktura, som begge nedarver fraFaktura. - Skab en liste af
Faktura-objekter, der indeholder begge typer fakturaer. - 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}");
}
}
}