940 likes | 1.14k Views
Ontwerpen. Klassendiagrammen. Case 1: Mario. Wat zijn de objecten?. Case 1: Mario. Case 1: Mario. Mario Luigi Toad1 Toad2 Yoshi Groen Yoshi Rood Hamerman 1 Hamerman 2 Hamer 1 Hamer 2 Hamer 3 Munt 1 Munt 2 Munt 3. Mushroom Mysterieblok Rij blokken 1 Blok1 Etc.
E N D
Ontwerpen Klassendiagrammen
Case 1: Mario Wat zijn de objecten?
Case 1: Mario • Mario • Luigi • Toad1 • Toad2 • Yoshi Groen • Yoshi Rood • Hamerman 1 • Hamerman 2 • Hamer 1 • Hamer 2 • Hamer 3 • Munt 1 • Munt 2 • Munt 3 • Mushroom • Mysterieblok • Rij blokken 1 • Blok1 • Etc. • Rij blokken 2 • Blok1 • Etc. • Vloer • Dakje • Platform 1 • Platform 2 • Platform 3 • Platform 4 Onhandig
Case 1: Mario • Een lijst maken met objecten maken is onhandig • Stel je voor dat je 200 munten hebt in een level! • Wat nou als we ook nog eigenschappen van objecten willen beschrijven? • Veel objecten zijn (vrijwel) hetzelfde! • Probeer objecten die erg op elkaar lijken onder 1 ‘blauwdruk’ samen te nemen! • Dit is een klasse
Klasse • Een klasse beschrijft een blauwdruk van een collectie individuen (objecten) • Voorbeeld: De klasse mens beschrijft ons allemaal. • Wij zijn dan de ‘objecten van klasse mens’ • Een klasse beschrijft per klasse: • Attributen: Eigenschappen • Methoden: vaardigheden • Methoden mens: • Lopen, praten, zitten • Methoden zijn voor elk object identiek • Attributen mens: • Haarkleur, lengte, gewicht • Attributen hebben voor elk object een andere waarde
Klasse UML syntax • Syntax zijn de ‘spellingsregels’ van een computertaal. • UML: Hoe hoor je de plaatjes te tekenen Mens • haarkleur • lengte • gewicht • lopen • praten • zitten
Case 1: Mario Handiger Kan beter Blok Platform Dak Mushroom Hamer Munt Vloer Yoshi Toad Luigi Mario Mysterieblok Hamerman • locatie • breedte • hoogte • schuinheid • locatie • richting • locatie • hoogte • locatie • aantal gaten • locatie • hoogte • breedte • locatie • snelheid • richting • locatie • waarde • locatie • inhoud • locatie • locatie • Kleur • status • locatie • status • locatie • status • locatie • kleur • berijder • lopen • springen • hamergooien • kill • springen • yoshipakken • Sterven • Stootblok • pakmunt • springen • yoshipakken • Sterven • Stootblok • pakmunt • springen • yoshipakken • Sterven • Stootblok • pakmunt • Berijden • Steektonguit • Eetop • raakkwijt • geefprijs • kapot • kill • opeten
Overerving • Een kind: • Heeft een lengte, gewicht, haarkleur, voorkeursspeelgoed • Kan lopen, praten, zitten, spelen, schoolgaan • Een volwassene: • Heeft een lengte, gewicht, haarkleur, baan • Kan lopen, praten, zitten, stemmen, autorijden Kind Volwassene • haarkleur • Lengte • gewicht • lievelingsspeelgoed • haarkleur • Lengte • gewicht • baan • lopen • praten • zitten • spelen • schoolgaan • lopen • praten • zitten • stemmen • autorijden Wat valt op (kan handiger)?
Overerving UML syntax • Een mens is óf een kind óf een volwassene • Een kind is een specifiek soort mens • Een volwassene is een specifiek soort mens SuperKlasse of parent class Kind Volwassene Mens Subklasse of Child class • lievelingsspeelgoed • baan • haarkleur • lengte • gewicht • schoolgaan • spelen • stemmen • autorijden • lopen • praten • zitten
Overerving theorie • Overerving: ook wel Generalisatie • Een subklasse heeft alle attributen van zichzelf en zijn superklasse(n) • Kunnen ook meer zijn (grandfather class) • Een subklasse heeft alle methoden van zichzelf en zijn superklasse(n) • Naar ‘beneden’: specificering • Naar ‘boven’: veralgemening
Case 1: Mario Spelelement Bewegend Actief Platform Zelfbewegend Hamer Munt Mushroom Speler Vijand Yoshi • Dit is niet af! • Waar moeten de methoden? • Waar moeten de attributen? • Er ontbreken klassen • Zie oefenopgave Hamerman Mensen Toads
Klassendiagram: procedure • Lees de tekst • Zelfstandige Naamwoorden: • Klasse • Attribuut • Niet modelleren • Werkwoorden • Methoden • Iets anders • Niet modelleren
Case 2: Studeren Van nieuwe studenten dienen de volgende gegevens ingevoerd te worden: naam, studentcode, geboortedatum en SLB’er.(bij inschrijven krijgt iedere student een docent als SLB’er toegewezen). Studenten hebben een cijferlijst en studeren en maken tentamens.Na iedere periode moeten de cijfers voor de blokken en de toetsdatum ingevoerd worden. Het systeem rekent het gemiddelde van de behaalde cijfers uit.Docenten hebben een naam, geboortedatum en vestiging. Ze berekenen cijfers en beoordelen studenten
Case 2: Studeren Van nieuwe studenten dienen de volgende gegevensingevoerd te worden: naam, studentcode, geboortedatum en SLB’er.(bij inschrijven krijgt iedere student een docent als SLB’ertoegewezen). Studentenhebben een cijferlijst en studeren en maken tentamens.Na iedere periode moeten de cijfers voor de blokken en de toetsdatumingevoerd worden. Het systeemrekent het gemiddelde van de behaalde cijfers uit.Docentenhebben een naam, geboortedatum en vestiging. Ze berekenen cijfersen beoordelen studenten
Wat is wat? Case 2: Studeren ZNW: • studenten • gegevens • Naam • geboortedatum • SLB’er • docent • periode • cijfer • blok • toetsdatum • systeem • Gemiddelde • Vestiging WW: • Invoeren • Inschrijven • Toewijzen • Tentamen maken • Studeren • Hebben • Uitrekenen • Cijfers berekenen • Studenten beoordelen
Case 2: Studeren • Student • naam • Geboortedatum • Studentcode • Slb’er • cijferlijst • Inschrijven • Tentamen maken • studeren • Docent • SLB-studenten • Naam • Geboortedatum • Vestiging • Student beoordelen • Cijfers berekenen • Resultaat • Cijfer • Toetsdatum • Blok
Case 2: Studeren Persoon Student Docent Resultaat • naam • geboortedatum • code • SLB’er • cijferlijst • Vestiging • SLB studenten • Blok • Toetsdatum • cijfer • Inschrijven • Studeren • Tentamen maken • Cijfers berekenen • Studenten beoordelen
Case 1: Mario Interactie??
Klassendiagram als systeemmodel • Vorige keer:Een Klassendiagram beschrijft de interactie tussen objecten. • Hoe leggen we die interactie vast?
Case 1: Mario Welke objecten interacteren?
Case 1: Mario • Mysterieblok bevatMushroom • Speler berijdtYoshi (parent class!) • Hamermangooit Hamer • Hamer ‘doodt’ Speler • Speler pakt munt • Etc. • Hoe modelleren we dat?
Associatie UML syntax • Als 2 objecten kennis van elkaar hebben ( = met elkaar interacteren) dan hebben ze een associatie. • Associaties met een superklasse gelden (natuurlijk) ook voor de subklasse. • Notatie is een lijn. Hamer Hamerman Speler Yoshi
Associatie UML syntax • Een associatie heeft altijd een beschrijving • Dat is een ‘naam’ met leesrichting (midden) óf • Een rolverdeling aan beide kanten Hamerman Hamer Speler gooit Hamerman Hamer berijdt gooit wapen Yoshi Speler Hamer slachtoffer
Case 1: Mario Kan Mario meerdere Yoshi’s berijden? Kan een mysterieblok meerdere mushrooms bevatten? Kan een hamerman meerdere hamers gooien?
Multipliciteit UML syntax • Multipliciteit geeft de hoeveelheden bij een associatie aan: • 1 precies 1 • 99 precies 99 • 5..55 een waarde tussen de 5 en de 55 • * meerdere (=potentieel oneindig veel, kan ook 0) • 4..* 4 of meer • De multipliciteit geef je aan beide kanten aan
Multipliciteit UML syntax 1 * • Een Hamerman gooit 0 of meer Hamers • Een hamer wordt gegooid door 1 Hamerman Hamerman Hamer Speler gooit 0..1 berijdt • Een Speler berijdt 0 of 1 Yoshi • Een Yoshi wordt bereden door 0 of 1 speler 0..1 Yoshi
Klassendiagram: procedure • Zelfstandige Naamwoorden: • Klasse • Attribuut • Niet modelleren • Werkwoorden • Methoden • Iets anders • Niet modelleren Associatie !
Case 2: Studeren Van nieuwe studenten dienen de volgende gegevensingevoerd te worden: naam, studentcode, geboortedatum en SLB’er.(bij inschrijven krijgt iedere student een docent als SLB’ertoegewezen). Studentenhebben een cijferlijst en studeren en maken tentamens.Na iedere periode moeten de cijfers voor de blokken en de toetsdatumingevoerd worden. Het systeemrekent het gemiddelde van de behaalde cijfers uit.Docentenhebben een naam, geboortedatum en vestiging. Ze berekenen cijfersen beoordelen studenten
Case 2: Studeren ZNW: • studenten • gegevens • Naam • geboortedatum • SLB’er • docent • periode • cijfer • blok • toetsdatum • systeem • Gemiddelde • Vestiging WW: • Invoeren • Inschrijven • Toewijzen • Tentamen maken • Studeren • Hebben • Uitrekenen • Cijfers berekenen • Studenten beoordelen
Case 2: Studeren • Student • naam • Geboortedatum • Studentcode • Slb’er • cijferlijst • Inschrijven • Tentamen maken • studeren • Docent • SLB-studenten • Naam • Geboortedatum • Vestiging • Student beoordelen • Cijfers berekenen • Resultaat • Cijfer • Toetsdatum • Blok
Case 2: Studeren 1 * Persoon Student Docent Resultaat beoordeelt * SLB’er 1 • Blok • Toetsdatum • cijfer • Vestiging • naam • geboortedatum • Code • cijferlijst Bepaalt * • Cijfers berekenen • Studenten beoordelen • Inschrijven • Studeren • Tentamen maken 1..* Eerstejaars 1 * Behaalt
Associaties: afspraken • Associaties kunnen ook ‘naar zichzelf’. Dat heet een unaire associatie. • Een student heeft 2 of meer vrienden • Een docent is baas van meerdere andere docenten • Iedere klasse heeft minstens 1 associatie • Als een klasse verwijst naar een object van een klasse die ook in je diagram staat, is dat nooit een attribuut, maar altijd een associatie Is baas van 1 X * Docent Docent Student 2..* is vriend van • Vestiging • SLB studenten • Vestiging • SLB studenten • code • SLB’er • cijferlijst 2..* • Inschrijven • Studeren • Tentamen maken • Cijfers berekenen • Studenten beoordelen • Cijfers berekenen • Studenten beoordelen
Case 3: Kebab DönerKingsis een grote keten kebab-bakkers. Ieder filiaal heeft minimaal 2 werknemers met een bepaald salaris en een naam. Ze worden ingehuurd om te bakken, verkopen en broodjes te vullen. Sommige werknemers geven leiding aan 2 andere werknemers. Je kan verschillende bazen hebben. Filialen verkopen broodjes en Turkse pizza’s; van beide weten we de kostprijs. Van broodjes weten we de inhoud (Kip of Kalf) en van pizza’s de doorsnede. Beide kunnen ze bakken. Soms breiden filialen uit. Ze nemen dan meer werknemers in dienst. Broodjes en pizza’s bevatten altijd 3 ingrediënten. Van ingrediënten weten we de houdbaarheidsdatum. Soms verrotten ze. Oh ja! Filialen hebben een adres en eigenaar. Dat is 1 van de medewerkers.
Case 3: Kebab DönerKingsis een grote ketenkebab-bakkers. Ieder filiaalheeft minimaal 2 werknemers met een bepaald salaris en een naam. Ze worden ingehuurd om te bakken, verkopen en broodjes te vullen. Sommige werknemersgeven leiding aan 2 andere werknemers. Je kan verschillende bazenhebben. Filialenverkopenbroodjes en Turkse pizza’s; van beideweten we de kostprijs. Van broodjesweten we de inhoud (Kip of Kalf) en van pizza’s de doorsnede. Beide kunnen bakken. Soms breidenfilialenuit. Ze nemen dan meer werknemersin dienst. Broodjes en pizza’sbevatten altijd 3 ingrediënten. Van ingrediëntenweten we de houdbaarheidsdatum. Soms verrotten ze. Oh ja! Filialenhebben een adres en eigenaar. Dat is 1 van de medewerkers.
Case 3: Kebab • DönerKings • Keten • Kebab-bakkers • Filiaal • Werknemers • Salaris • Naam • Broodjes • Bazen • Turkse Pizza’s • Kostprijs • Inhoud • Kip • Kalf • Pizza’s • Doorsnede • Beide • Ingrediënten • Houdbaarheidsdatum • Adres • Eigenaar Eerst synoniemen identificeren en overbodige woorden eruit
Case 3: Kebab • DönerKings • Keten • Kebab-bakkers = filialen • Werknemers • Salaris • Naam • Broodjes • Bazen • Turkse Pizza’s = pizza’s • Kostprijs • Inhoud • Kip • Kalf • Doorsnede • Beide • Ingrediënten • Houdbaarheidsdatum • Adres • Eigenaar Klantnaam Uitleg klant synoniem Onderdeel van werkwoord synoniem Mogelijke optie voor attribuut Mogelijke optie voor attribuut Taalconstructie (wel hint!) Nu enkelvoud en ordenen…
Case 3: Kebab • Filiaal • Adres • Eigenaar • Werknemer • Salaris • Naam • Ondergeschikten • Product • Kostprijs • Broodje • Inhoud • Turkse Pizza • Doorsnede • Ingrediënt • Houdbaarheidsdatum Verwijst naar klasse in diagram (Associatie) Superklasse!
Case 3: Kebab Verschillend? • Filiaal • Adres • Werknemers • Salaris • Naam • Product • Kostprijs • Broodje • Inhoud • Turkse Pizza • Doorsnede • Ingrediënt • Houdbaarheidsdatum • Heeft werknemers = inhuren • Bakken • Verkopen • Broodjes vullen • Geven leiding = bazen hebben • Verkopen • Weten • Bakken • Uitbreiden • In dienst nemen • Hebben • Verrotten • Bevatten
Case 3: Kebab • Filiaal • Adres • Uitbreiden • In dienst nemen • Werknemers • Salaris • Naam • Bakken • Verkopen • Broodjes vullen • Product • Kostprijs • Bakken • Broodje • Inhoud • Turkse Pizza • Doorsnede • Ingrediënt • Houdbaarheidsdatum • Verrotten • Associaties: • Werknemer filiaal • Inhuren • Eigenaar • Werknemer werknemer • Leiding geven • Filiaal Product • Verkopen • Product Ingrediënt • bevatten
Case 3: Kebab Twijfel… 1 * eigendom eigenaar * 2..* 1 huurt in 2 verkoopt * Werknemer Filiaal Broodje Product Ingrediënt Turkse Pizza Let op!!! (ook *?) 1..* Baas van • Houdb. datum • Naam • Salaris • Adres • Doorsnede • Kostprijs • Inhoud • Uitbreiden • In dienst nemen Let op!!! Dit is fout • Verrotten 3 Bevat * • Bakken • Bakken • Verkopen • Broodjes Vullen
In beperking schuilt de meester… • Een Hamerman gooit meerdere Hamers • Een hamer wordt gegooid door 1 Hamerman • Maar… • Is het voor een Hamer interessant wie hem heeft gegooid? • Is het voor een Hamerman interessant welke hamers hij gooit? 1 * Hamerman Hamer gooit
Navigabiliteit: UML syntax • Een associatie heeft een richting. Dat noemen we de navigabiliteit. • Welke klasse ‘heeft kennis van’ de andere klasse bij een associatie. • Als je kennis van een klasse hebt kun je daarvan methoden ‘aanroepen’ (= gebruiken). • Dit is iets anders dan de leesrichting • Tekenen door middel van pijlen en kruisen * 1 Hamerman Hamer gooit De Hamerman heeft Kennis van de Hamer De Hamer heeft geen kennis van de Hamerman
Navigabiliteit: UML syntax • Er zijn meerdere navigabiliteitsopties • Bi-directioneel • Uni-directioneel • Undefined • Maar die mag eigenlijk niet • Regels • Minstens 1 kant navigeerbaar (anders geen associatie) • Zo min mogelijk navigeerbaar • Zie Workshop 4 Bi-directioneel A B Uni-directioneel ene kant A B Uni-directioneel andere kant A B Links ‘Undefined’ A B
Case 1: Mario • Geef de navigabiliteit: Mushroom Mysterieblok Mushroom Mysterieblok 0..1 1 0..1 Zit in 1 Zit in Speler Speler 0..1 0..1 berijdt berijdt 0..1 0..1 Yoshi Yoshi
Navigabiliteitunaire associatie X • Wat is de navigabiliteit van ‘is vriend van’ • Je bent altijd vriend van elkaar • Dus bi-directioneel? Student 2..* is vriend van • code • SLB’er • cijferlijst • Antwoord: NEE, Unidirectioneel • Anders ‘2x opslaan’ • ‘Ik heb jou als vriend’ • ‘Ik ben van jou een vriend’ • Regel: Bij gelijkwaardigeunaire associatie (vrienden, buren, broer-zus, etc) altijd uni-directioneel 2..* • Inschrijven • Studeren • Tentamen maken
Navigabiliteitunaire associatie • Wat is de navigabiliteit van ‘is baas van’ • Ongelijkwaardige relatie • Dus uni-directioneel? Medewerker 0..1 Is baas van • Naam • Salaris • Geboortedatum * • Antwoord: NEE, het kan beide • Als je weet wie je baas is en je baas weet dat jij zijn ondergeschikte bent: bi-directioneel • Als 1 van beide dat niet weet dan uni-directioneel • Regel: bij ongelijkwaardige associatie: beide kan • Werken • Luieren • Zeiken
Afhankelijkheids-associaties • Soms is een klasse afhankelijk van een andere klasse. • Meestal is dat een deel-geheel relatie. • De navigabiliteit is vrijwel altijd van ‘geheel’ naar ‘deel’ • Het ‘deel’ wordt geheel gestuurd door het ‘geheel’ • Er zijn 2 varianten: Gezicht Computer Neus Randapparatuur Aggregaat Compositie
Aggregaat Computer Randapparatuur Kassa * 0..3 0..1 * • Het geheel (het aggregaat) ‘bestuurt’ het deel • Regels: • Het aggregaat kan soms bestaan zonder zijn delen, soms niet • Het aggregaat is altijd ‘incompleet’ als een deel mist • De delen kunnen horen bij meerdere aggregaten • De delen kunnen bestaan zonder aggregaat Geen naam!! Computer Computer Randapparatuur Randapparatuur 0..3 *
Compositie Gezicht Vliegtuig Neus 1 1 1 1 • Het geheel (de compositie) ‘bezit’ het deel. • Regels: • Een compositie kan soms bestaan zonder zijn delen, soms niet • Een compositie is altijd ‘incompleet’ als een deel mist • Een deel kan niet bestaan zonder de compositie • Een deel hoort maar bij 1 compositie • Een deel wordt gemaakt en verwijderd door zijn compositie • Als de compositie verdwijnt moeten ook alle delen verdwijnen of over ‘gegeven worden’ aan andere compositie Altijd 1 !! Gezicht Gezicht Neus Neus X 1 1