Hallo iedereen,
Ik heb een vraagje in verband met goede structuur in een programma dat gemaakt moet worden in schoolverband.
Het is een project waarbij standaard CRUD operaties worden gedaan. Een gebruiker heeft een portefeuille en kan daar items toevoegen, vermeerderen, verminderen, verwijderen enzovoort.
We werken met LINQ in .Net, dus die maakt al onze klasses al vanuit de databank. We hebben bijvoorbeeld een Wallet klasse, waaraan we via partial class functies aan toevoegen. We willen bijvoorbeeld:
Wallet.addItem(Item anItem)
Wallet.removeItem(Item anItem)
Geen wereldschokkende dingen, maar, als het item gechecked is, de hoeveelheid gecontroleerd is enzovoort. Moet deze aanpassing in de databank gedaan worden. Nu zijn er volgens ons maar een paar manieren om zoiets te doen.
Een databankklasse, die met singleton 1 toegangspunt heeft, zo hebben we het gezien in de lessen.
Maar die databankklasse heeft geen enkel idee wat een wallet of een item is, dus zouden we ID's moeten meegeven, en dat is zo procedureel geprogrammeerd, bijvoorbeeld zo in de databankklasse:
addItemToWallet(int WalletID, int ItemID){} -> die zou dan worden aangeroepen vanuit Wallet.addItem()
Maar dat lijkt ons dus echt niet gewenst, gewoon omdat dit helemaal geen OOP is, een gigantische databankklasse met enkele duizenden regels die procedurele functies bevat.
Een 2de optie is om de LINQ databankcode onmiddelijk in onze Wallet class te plaatsen, dus in de Wallet.addItem(), maar dan zitten we met het probleem van "separation of concerns", dus dat is ook niet goed.
Heeft iemand een best-practice om dat op te lossen, want zo'n gelijkaardig probleem zal waarschijnlijk toch wel iedereen die al ooit met een databank gewerkt heeft tegengekomen zijn?
Dank
Ik heb een vraagje in verband met goede structuur in een programma dat gemaakt moet worden in schoolverband.
Het is een project waarbij standaard CRUD operaties worden gedaan. Een gebruiker heeft een portefeuille en kan daar items toevoegen, vermeerderen, verminderen, verwijderen enzovoort.
We werken met LINQ in .Net, dus die maakt al onze klasses al vanuit de databank. We hebben bijvoorbeeld een Wallet klasse, waaraan we via partial class functies aan toevoegen. We willen bijvoorbeeld:
Wallet.addItem(Item anItem)
Wallet.removeItem(Item anItem)
Geen wereldschokkende dingen, maar, als het item gechecked is, de hoeveelheid gecontroleerd is enzovoort. Moet deze aanpassing in de databank gedaan worden. Nu zijn er volgens ons maar een paar manieren om zoiets te doen.
Een databankklasse, die met singleton 1 toegangspunt heeft, zo hebben we het gezien in de lessen.
Maar die databankklasse heeft geen enkel idee wat een wallet of een item is, dus zouden we ID's moeten meegeven, en dat is zo procedureel geprogrammeerd, bijvoorbeeld zo in de databankklasse:
addItemToWallet(int WalletID, int ItemID){} -> die zou dan worden aangeroepen vanuit Wallet.addItem()
Maar dat lijkt ons dus echt niet gewenst, gewoon omdat dit helemaal geen OOP is, een gigantische databankklasse met enkele duizenden regels die procedurele functies bevat.
Een 2de optie is om de LINQ databankcode onmiddelijk in onze Wallet class te plaatsen, dus in de Wallet.addItem(), maar dan zitten we met het probleem van "separation of concerns", dus dat is ook niet goed.
Heeft iemand een best-practice om dat op te lossen, want zo'n gelijkaardig probleem zal waarschijnlijk toch wel iedereen die al ooit met een databank gewerkt heeft tegengekomen zijn?
Dank