In deze oefening moet je een voorraadbeheersysteem implementeren met behulp van stacks. Het doel is om realistische voorraadoperaties te simuleren, waarbij producten in batches worden beheerd en het Last-In-First-Out (LIFO)-principe wordt toegepast. Deze aanpak weerspiegelt scenario’s waarin de meest recent toegevoegde voorraad als eerste wordt gebruikt, zoals bij duurzame goederen.

Inventory

Implementeer de Batch-klasse (1 punt)

Maak de Batch-klasse die een batch van de voorraad van een product vertegenwoordigt. Elk Batch-object moet bevatten:

De klasse bevat ook een tostring-methode str die de batch als volgt weergeeft:

Batch(quantity=[quantity], cost_per_unit=[cost_per_unit])

Implementeer de Product-klasse (6 punten):

Maak de Product-klasse (1 punt) die een product vertegenwoordigt met een stack van voorraadbatches. Elk Product-object moet bevatten:

Deze klasse moet de volgende methoden bevatten:

De klasse bevat ook een tostring-methode str (1 punt) die het product als volgt weergeeft:

Product [product_name]: 
Batch(quantity=[quantity_batch1 from batch_1], cost_per_unit=[cost_per_unit from batch_1]) 
Batch(quantity=[quantity_batch1 from batch_2], cost_per_unit=[cost_per_unit from batch_2])
....
Batch(quantity=[quantity_batch1 from batch_n], cost_per_unit=[cost_per_unit from batch_n])