Store in GIT
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
using Pannenkoekenhuis;
|
||||
using Pannenkoekenhuis.Strategy;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Strategy_Kassabon
|
||||
{
|
||||
public class Kassabon
|
||||
{
|
||||
private KortingsCalculator korting { get; set; }
|
||||
|
||||
public List<Pannenkoek> pannenkoeken
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deze klasse realiseert een eenvoudige kassabon voor ons
|
||||
/// pannenkoekenhuis, en toont hoe het Strategy design pattern kan worden
|
||||
/// gebruikt.
|
||||
///
|
||||
/// Introductie:
|
||||
/// Met enige regelmaat worden er nieuwe kortingsacties bedacht,
|
||||
/// waardoor telkens het algoritme voor het berekenen van korting
|
||||
/// in deze Kassabon klasse moet worden aangepast.
|
||||
///
|
||||
/// Opgave:
|
||||
/// Gebruik het Strategy pattern om de algoritmen af te splitsen in
|
||||
/// aparte klassen onder een gemeenschappelijk interface.
|
||||
/// </summary>
|
||||
public Kassabon()
|
||||
{
|
||||
pannenkoeken = new List<Pannenkoek>();
|
||||
korting = new NulKorting(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Voegt een pannenkoek toe aan de kassabon
|
||||
/// </summary>
|
||||
/// <param name="p">De Pannenkoek om toe te voegen</param>
|
||||
public void VoegToe(Pannenkoek p)
|
||||
{
|
||||
pannenkoeken.Add(p);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Drukt een kassabon af op de console, met daarin opgenomen
|
||||
/// de beschrijving en prijs van elke pannenkoek op de rekening,
|
||||
/// de totaalprijs (= som van de prijzen van alle pannenkoeken),
|
||||
/// de korting (= bedrag dat van de totaalprijs zal worden afgetrokken),
|
||||
/// en het eindbedrag (= totaalprijs - korting)
|
||||
/// </summary>
|
||||
public void DrukBonAf()
|
||||
{
|
||||
Console.WriteLine("\nKassabon");
|
||||
foreach (Pannenkoek p in pannenkoeken)
|
||||
{
|
||||
Console.WriteLine("{0} : \t{1,6:F2}", p.Beschrijving, p.Prijs);
|
||||
}
|
||||
Console.WriteLine("Totaalprijs : \t{0,6:F2}", Totaalprijs());
|
||||
Console.WriteLine("Korting : -\t{0,6:F2}", Korting());
|
||||
Console.WriteLine("Eindbedrag = \t{0,6:F2}", Eindbedrag());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Geeft de som van de prijzen van alle pannenkoeken op de kassabon
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public double Totaalprijs()
|
||||
{
|
||||
double totaalprijs = 0.0;
|
||||
foreach (Pannenkoek p in pannenkoeken)
|
||||
{
|
||||
totaalprijs += p.Prijs;
|
||||
}
|
||||
return totaalprijs;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Geeft de totaalprijs minus de korting
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public double Eindbedrag()
|
||||
{
|
||||
double eindbedrag = Totaalprijs() - Korting();
|
||||
if (eindbedrag < 0.0)
|
||||
{
|
||||
eindbedrag = 0.0;
|
||||
}
|
||||
return eindbedrag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Berekent de korting, volgens de actuele kortingsactie(s)
|
||||
///
|
||||
/// Deze kortingsregels veranderen regelmatig, telkens als nieuwe
|
||||
/// kortingsacties worden bedacht.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public double Korting()
|
||||
{
|
||||
return korting.Korting();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user