[UML] subklasse
Ben momenteel een vrij eenvoudig systeem aan het ontwerpen en vroeg me nu het volgende af:
http://www.demaffia.nl/tmp/ClassDiagram1.jpg
Is dit conform de regels van UML? Mag je een subklasse zomaar "verbinden" met een "normale" klasse?
Normaal zou je zeggen van verbind Persoon met Bedrijf. Maar ik vind dat niet kloppen omdat de klasse Gebruiker niks te maken heeft met de klasse Bedrijf. Alleen objecten van de klasse Leverancier hebben te maken met de klasse Bedrijf. De klasse Gebruiker heeft niks met de klasse Bedrijf te maken.
Dus mijn vraag is dus, heb ik zo op de juiste manier getekend?
Alvast bedankt :)
- Martijn
Jij hebt bijvoorbeeld Persoon bovenaan staan, omdat Leverancier & Gebruiker daarvan afstammen. Wanneer je juist de hiërarchie in het bedrijf duidelijk wilt hebben, kantel je hem een stukje. Bijvoorbeeld:
Wanneer gebruiker zelf ook weer in zo'n hiërarchie wordt gebruikt, kan je die weer in een aparte 'kolom' schuiven. Want nu staat hij daar een beetje vreemd tussen al dat bedrijfsgebeuren :)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Moet je dat dan niet op 1 of andere manier samenvoegen?
Die eigenschappen erft Leverancier over van Persoon
@Robert: Ja, leverancier is een persoon. Een persoon die werkzaam is voor een bedrijf. Klopt als je vind dat dit een verkeerd gekozen naam is. Maar waarvoor ik dit systeem maak is het wel duidelijk :)
@Jelmer: Ik neem aan dat jij met de onderbroken lijntjes dependancy relaties bedoeld? Zo ja, dan klopt dit voor mij niet helemaal, omdat de units van een bedrijf in een ander pand staan. Deze units worden aan willekeurige bedrijven verhuurt en kunnen ook leeg staan :) Echter een bedrijf heeft altijd 1 of meerdere units, maar heeft altijd een leverancier (lees vertegenwoordiger). Dus als je zegt, zonder bedrijf is er geen leverancier.. dan klopt dit wel toch? Dus dan kan ik wel die dependancy relatie gebruiken. Of denk ik nu verkeerd?
Bedankt voor de reacties :)
PS: Gebruiker wordt enkel gebruikt voor het inloggen van het systeem (en misschien ook om zijn acties vast te leggen in de DB).
Edit: Ik heb hier de dependency relatie verwerkt:
http://www.demaffia.nl/tmp/ClassDiagram2.jpg
Dit kan ook gewoon?
Gewijzigd op 01/01/1970 01:00:00 door Martijn
Kortom: "Een bedrijf bestaat uit 1 of meer Units." Als dat zo is teken je dat met een wiebertje, een gesloten voor minimaal 1, een bedrijf kan niet zonder een Unit en een open als deze wel zoder kan bestaan.
Voorbeeld een Auto, deze bestaat o.a. uit wielen en kan niet zonder (dan is het geen auto meer) dus een dicht wiebertje.
Een leverancier lijkt me iets anders, een bedrijf bestaat niet uit een leverancier (denk ik maar ik weet natuurlijk niet de precieze omstandigheden.)
Quote:
PS: Gebruiker wordt enkel gebruikt voor het inloggen van het systeem (en misschien ook om zijn acties vast te leggen in de DB).
Dan vraag ik me af of Gebruiker wel een specialisatie van Persoon is. Is het zo dat een leverancier nooit in kan loggen? En zijn voornaam en achternaam wel van belang in dat geval? Zelfs als dat alle bij wel zo is, blijf ik er toch vraagtekens bijhouden.
Nog een opmerking,
De eigenschappen die via overerving in een klasse binnen komen hoef je niet te tekenen, dat is dubbel.
Het systeem dat ik wil maken is dat je kan zoeken welk bedrijf welke unit(s) bezit. Maar je kan ook zoeken op naam v/h bedrijf en op unit nr. Bij het zoeken op unit nr krijg je dus de gegevens van het bedrijf.
De vertegenwoordigers (voorheen door mij leveranciers genoemd) hebben niks te maken met het systeem. De gebruikers zijn het personaal van het pand. Een gebruiker is iemand die inlogt op het systeem om zo te kunnen zoeken.
@Boaz: Ik zag dat Jelmer een dependency relatie had getekend en dat was mijn reactie daarop. En om even te mierenneuken: "Een bedrijf heeft 1 of meer Units" maar dat is denk ik wel duidelijk nu na bovenstaand verhaaltje.
Jouw reactie op de leverancier is denk ik nu ook wel duidelijk. Ik heb een beetje verkeerde naam gekozen. Beter had ik voor vertegenwoordiger kunnen kiezen (heb ik nu ook aangepast). Dus: "een bedrijf heeft 1 of meerdere vertegenwoordigers"
Alleen rijst bij mij nu de vraag. Wat is het verschil dan tussen een dependency relatie en een aggregatie? Want beide geven aan dat ze afhankelijk zijn van elkaar. Een bedrijf moet vertegenwoordigers hebben. Dan kan je zeggen dat vertegenwoordiger afhankelijk is van bedrijf, want zonder bedrijf heb je ook geen vertegenwoordigers. En dat is wat jij ook beschrijft met een aggregatie.
Alvast bedankt en hoop dat het een beetje duidelijk geworden is nu :)
Aangepaste versie (zonder dependency of aggregation omdat voor mij nog onduidelijk is welke ik nu moet gebruiken):
http://www.demaffia.nl/tmp/ClassDiagram1.jpg
Een bedrijf heeft meerdere units en meerdere vertegenwoordigers. Dan krijg je toch een array in de klasse Bedrijf? Een array met vertegenwoordiger objecten en een array met unit objecten?
(lees: pijltje = 'heeft')
Bedrijf -> units -> managers
of
Bedrijf -> managers -> units
of
Bedrijf -> managers
Bedrijf -> units
-----------------------------------+
managers < - > units
Een bedrijf heeft één of meerdere vertegenwoordigers. De vertegenwoordigers vertegenwoordigen alle units van het bedrijf.
Is er een relatie tussen de vertegenwoordigers en de units?
Als een bedrijf 3 vertegenwoordigers heeft en 15 units, vertegenwoordigen alle 3 de vertegenwoordigers de 15 units.
Hoop dat het zo wat duidelijk is :)
Okee, dan is dat duidelijk. Dat klopt dan inderdaad in je diagrammen.
Okee en wat voor soort relaties moet/kan/zal ik dan gebruiken?
1 op meer relaties lijkt mij. Één bedrijf heeft meerdere vertegenwoordigers, vertegenwoordigers vertegenwoordigen maar 1 bedrijf. Één bedrijf heeft meerdere units, één unit hoort maar bij één bedrijf. Verder hebben units & vertegenwoordigers geen relaties onderling.
thnx voor je reactie, maar dat bedoelde ik niet echt.. :) Doelde meer op type relatie.. afhankelijk/aggregation enz.. :)