De Product Klasse
We beginnen met het definiëren van de Product klasse. Deze klasse vertegenwoordigt een product met een naam en een prijs. In de klasse definiëren we een constructor die een product maakt door een naam en een prijs te accepteren. We voegen ook een toString methode toe die een stringrepresentatie van het product retourneert, bijvoorbeeld “Appel € 0.99”. Dit helpt ons om producten gemakkelijk weer te geven.
class Product {
String naam;
double prijs;
Product(this.naam, this.prijs);
@override
String toString() {
return "$naam € ${prijs.toStringAsFixed(2)}";
}
}De Winkelwagen Klasse
De Winkelwagen klasse bevat een lijst van producten en methoden om de winkelwagen te beheren. We beginnen met een lege lijst producten. De methode voegProductToe accepteert een Product object en voegt het toe aan de lijst. Met de methode verwijderProduct kunnen we een product verwijderen op basis van de naam. Deze methode controleert eerst of het product in de winkelwagen zit met de bevatProduct methode. Als dat zo is, wordt het product verwijderd en een bevestigingsbericht getoond. Als het product niet aanwezig is, wordt een bericht getoond dat het product niet in de winkelwagen zit.
De methode toonProducten print alle producten in de winkelwagen. Als de winkelwagen leeg is, wordt een bericht getoond dat er geen producten in de winkelwagen zijn. De methode berekenTotaal berekent de totale prijs van alle producten door de prijzen van de producten op te tellen en retourneert dit als een string met twee decimalen. De methode bevatProduct controleert of een product met een bepaalde naam in de winkelwagen zit.
class Winkelwagen {
List<Product> producten = [];
void voegProductToe(Product product) {
producten.add(product);
}
void verwijderProduct(String naam) {
if (bevatProduct(naam)) {
producten.removeWhere((product) => product.naam == naam);
print('$naam is verwijderd');
} else {
print('Product zat niet in de winkelwagen.');
}
}
void toonProducten() {
if (producten.isEmpty) {
print("Er zijn geen producten aanwezig in de winkelwagen.");
} else {
for (var product in producten) {
print(product);
}
}
}
String berekenTotaal() {
double totPrijs = 0.0;
for (var product in producten) {
totPrijs += product.prijs;
}
return totPrijs.toStringAsFixed(2);
}
bool bevatProduct(String naam) {
return producten.any((product) => product.naam == naam);
}
}De main Functie
In de main functie maken we een nieuwe Winkelwagen aan. Vervolgens maken we drie producten aan: een appel, een banaan en koffie, met respectievelijk prijzen van € 0.99, € 1.29 en € 4.99. Deze producten voegen we toe aan de winkelwagen met de methode voegProductToe. Daarna tonen we de producten in de winkelwagen met de toonProducten methode en berekenen we de totale prijs met de berekenTotaal methode.
Vervolgens verwijderen we het product “Banaan” uit de winkelwagen met de verwijderProduct methode. We tonen de bijgewerkte inhoud van de winkelwagen en berekenen opnieuw de totale prijs na het verwijderen van de banaan.
void main() {
Winkelwagen winkelwagen = Winkelwagen();
winkelwagen.voegProductToe(Product('Appel', 0.99));
winkelwagen.voegProductToe(Product('Banaan', 1.29));
winkelwagen.voegProductToe(Product('Koffie', 4.99));
print('Producten in de winkelwagen:');
winkelwagen.toonProducten();
print('\nTotaal bedrag:');
print('€${winkelwagen.berekenTotaal()}');
winkelwagen.verwijderProduct('Banaan');
print('\nNa het verwijderen van Banaan:');
winkelwagen.toonProducten();
print('\nTotaal bedrag:');
print('€${winkelwagen.berekenTotaal()}');
}Door deze code en uitleg te volgen, kun je leren hoe object georiënteerd programmeren in Dart werkt. Je leert hoe je klassen en methoden definieert en hoe je deze gebruikt om een eenvoudige winkelwagenapplicatie te bouwen. De methoden in de Winkelwagen klasse maken het gemakkelijk om producten toe te voegen, te verwijderen en de totale prijs te berekenen.