klassendiagram en oop
Ik ben een tijdje geleden begonnen met oop, klassendiagrammen en ERD's.
Nu ben ik begonnen met een klassendiagram en erd en vroeg me af of ik een beetje in de goede richting zit en of er misschien nog tips waren.
De bedoeling van dit alles is een kleine webshop zelf te maken.
Deze webshop moet een winkelwagentje heben, categorien en producten in die category.
Als een order gemaakt is er is op bestellen geklikt moet het order opgeslagen worden in de database.
Ik weet dat er alternatieven zijn zoals magento en osCommerce, maar ik vind het leuk om zelf te proberen en het is direct als oefening voor oop.
Alvast bedankt.
http://img41.imageshack.us/img41/9915/erdj.png
http://img442.imageshack.us/img442/1927/klassendiagram.png
Vooral het klassendiagram komt erg basaal op mij over. Ik denk dat je er nog meer je gedachte over zult moeten laten gaan. Als voorbeeld: waar denk je al die setters voor nodig te hebben?
Wat ik geleerd heb op school is dat deze er altijd standaard instaan, en daarnaast heb je nog je functies die je echt nodig hebt.
Leuk dat het er 'standaard' in staat, maar als je het niet nodig hebt is het simpelweg zonde van je tijd.
Dus bedenk eens wanneer je het nodig hebt. Heb je het niet nodig: eruit!
Als het op OOP aankom ben ik nog een leek. Het lijkt me ook geen kwaad kunnen het erin te laten staan? netbeans genereert toch automatisch alle sets en gets.
Maar wel of geen setters is een uitvloeisel van het nadenken over je ontwerp. Gezien de reden die je geeft voor het erin zetten heb ik dus het idee dat je nog veel te weinig hebt nagedacht over je ontwerp. Wat wil je nu, waarom, hoe?
Je hebt nu in je orders tabel een kolom product_list staan, een opsomming van gegevens komt niet voor in een kolom maar in een tabel. je zou dus een extra tabel moeten maken:
order_products
- order_id
- product_id
- amount
- price_pp**
**:
Om te voorkomen dat er een opmerking komt dat de prijs al in de products tabel staat:
De prijs van een product op het moment dat het verkocht wordt kan varieren door bv aanbiedingen of prijsstijgingen.
De prijs van een product op het moment dat het verkocht wordt kan varieren door bv aanbiedingen of prijsstijgingen.
In vroegere versies van MySQL kon een varchar max. 255 karakters bevatten. Nu is dat niet meer, maar bij uitgebreide strings (ik houd een grens van 100 aan) kan je beter datatype text gebruiken, dit neemt minder bytes in beslag.
Het klassendiagram en ERD zijn van zeer laag niveau, er is niet fatsoenlijk genormaliseerd en het klassendiagram zijn enkel properties (het gebruik maken van alleen classes is niet automatisch 'OOP')? Overigens kloppen je annotaties ook voor geen meter
Over de setters en getters nogmaals, dit is de 3rde keer dat ik iets in OOP probeer te maken en de vorige keren kwam het regelmatig voor dat er niks van klopte dat begrijp ik, daarom blijven oefenen?
en @Ger, ik wilde de producten_list gebruiken om alle producten in een array op te slaan, en die in de database te zetten, hoewel dit vast niet de manier is.