1 / 93

Ontwerpen

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.

yetty
Download Presentation

Ontwerpen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ontwerpen Klassendiagrammen

  2. Case 1: Mario Wat zijn de objecten?

  3. Case 1: Mario

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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)?

  10. 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

  11. 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

  12. 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

  13. Klassendiagram: procedure • Lees de tekst • Zelfstandige Naamwoorden: • Klasse • Attribuut • Niet modelleren • Werkwoorden • Methoden • Iets anders • Niet modelleren

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. Case 1: Mario Interactie??

  20. Klassendiagram als systeemmodel • Vorige keer:Een Klassendiagram beschrijft de interactie tussen objecten. • Hoe leggen we die interactie vast?

  21. Case 1: Mario Welke objecten interacteren?

  22. Case 1: Mario • Mysterieblok bevatMushroom • Speler berijdtYoshi (parent class!) • Hamermangooit Hamer • Hamer ‘doodt’ Speler • Speler pakt munt • Etc. • Hoe modelleren we dat?

  23. 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

  24. 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

  25. Case 1: Mario Kan Mario meerdere Yoshi’s berijden? Kan een mysterieblok meerdere mushrooms bevatten? Kan een hamerman meerdere hamers gooien?

  26. 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

  27. 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

  28. Klassendiagram: procedure • Zelfstandige Naamwoorden: • Klasse • Attribuut • Niet modelleren • Werkwoorden • Methoden • Iets anders • Niet modelleren Associatie !

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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.

  35. 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.

  36. 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

  37. 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…

  38. 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!

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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 *

  50. 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

More Related