Deel I Hoofdstuk 2: Het klassenmodel



Vergelijkbare documenten
3.1 Opsomming data type

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Hoofdstuk 9: Object Constraint language (OCL) Prof. Dr. Olga De Troyer. Constraints

Unified Modeling Language

Deel I Hoofdstuk 4: Modelleren van Toestand

UML is een visuele taal om processen, software en systemen te kunnen modeleren.

DATAMODELLERING BEGRIPPENBOOM

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

voorbeeldexamen Object Oriëntatie Foundation (OOF.NL) editie juli 2010 inhoud inleiding 3 voorbeeldexamen 4 antwoordindicatie 11 evaluatie 22

Deel I Hoofdstuk 6: Modelleren van interactie

DATAMODELLERING BASIS UML KLASSEMODEL

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Les F-02 UML. 2013, David Lans

Keteininformatiemodellering op basis van UML

Top-down ontwerpen. Concentreren op de hoofdzaak zonder rekening te houden met allerlei details.

Uitbreiding van UM Aquo cluster metingen, toevoegen optioneel attribuut Identificatie waarnemingssoort aan klasse WaardeReeks MIDDELGROOT

UML. From weblog Dennis Snippert

Domeinmodellen en klassendiagrammen

Abstracte klassen & Interfaces

het bank voorbeeld ISO Datamodelleren modelleren met het E-R R model een database ontwerpen verzamelingen van relaties (verbanden)

Archimate risico extensies modelleren

Programmeren in C# Overerving

Programmeren in Java 3

IMP Uitwerking week 13

ALGORITME objectgeoriënteerd programmeren

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

ISO Datamodelleren. Prof. dr. Paul De Bra. Gebaseerd op: Database System Concepts, 5th Ed. Silberschatz, Korth and Sudarshan

Unified Modeling Language

Ontwerp van Informatiesystemen

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Overerving & Polymorfisme

Hoofdstuk 5. case: klassediagram

Problemen met platte toestandsdiagrammen

DATAMODELLERING ARCHIMATE DATAMODELLERING

BRP-BZM Use Case Realisations Guidelines

DATAMODELLERING GEAVANCEERD UML KLASSEMODEL

case: toestandsdiagrammen

Uitwerking Toets ontwerpen 4 december 2013

Een inleiding in de Unified Modeling Language 79

EEN INLEIDING IN DE UNIFIED MODELING LANGUAGE

Stacks and queues. Hoofdstuk 6

Software-Ontwikkeling I Academiejaar

Informatiemodel Ruimtelijke Ordening (IMRO) Modeldocument: beschrijving van het model. Opdrachtnemer: Ravi

DATAMODELLERING DATA MAPPING MODEL

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan.

Ternaire relaties in ERDs zijn lastig

Inhoud leereenheid 1. Introductie. Leerkern. Objectgeoriënteerd ontwerpen. Zelftoets. Terugkoppeling. 1 Objectgeoriënteerd ontwerpen

Vakgroep CW KAHO Sint-Lieven

case: ocl-expressies

DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING

Inhoud leereenheid 1. Objectgeoriënteerd ontwerpen. Introductie 17. Leerkern 18. Samenvatting 50. Zelftoets 51. Terugkoppeling 52

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Metamodel M(etamodel) I(nformatiemodellen) G(emeenten)

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

DATAMODELLERING RACI MATRIX

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Taal van de Laan WAZZUP? Hoeveel doekoe kost die fatoe? Paul Janssen - Geonovum p.janssen@geonovum.nl

Leren programmeren in C# Deel 4 - Objectoriëntatie

Kleine cursus PHP5. Auteur: Raymond Moesker

DATAMODELLERING CRUD MATRIX

VI. Klassen en objecten

Datastructuren Werkcollege Intro

Object-oriented programmeren met BlueJ en Visual Studio

Tools voor canonieke datamodellering Bert Dingemans

HOGESCHOOL ROTTERDAM

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Toegepaste notatiewijzen DLA software

Software Processen. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 4 Slide 1. Het software proces

Semantische Netwerken & Frames. Geen revolutie... Ontologieën. Linnaeus

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

ER-modeling. Datamodellering Wat is ER-modeling?

ER-modeling. Wat is ER-modeling? ERD & relationeel model. ER-benadering DMO Datamodellering 2008

G e n e r e r e n v a n o p e r a t i o n e l e s p e c i f i c a t ies aan de hand van UML d i a g r a m m e n

Oplossingen voor het testen van objectgeoriënteerde software

I.3 Functies. I.3.2 Voorbeeld. De afbeeldingen f: R R, x x 2 en g: R R, x x 2 zijn dus gelijk, ook al zijn ze gegeven door verschillende formules.

Inhoudstafel. UML (Unified Modeling Language)

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Zelftest OOAD/UML. Document: N0767Test.fm 30/08/2010. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

RESTful API Een RESTful API is een gebaseerd op de Representational state transfer (REST) is een softwarearchitectuur.

Objectgericht programmeren 1.

Opleiding SQL / Systeemanalyse IBK ERD. Hogeschool Rotterdam

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

2de bach HIB. Systeemanalyse. Volledige samenvatting. uickprinter Koningstraat Antwerpen ,70

InformatieModel Water (IMWA) 2013

Semantiek 1 college 10. Jan Koster

1. Welke diagrammen beschrijven het dynamisch gedrag van een applicatie?

Objectgericht Ontwerpen

Oplossingen voor het testen van objectgeoriënteerde software

Interactie diagrammen

Tentamen SPM1120 Analyse van bedrijfssystemen 18 Januari 2011, 9:00-12:00

Herhaling. Herhaling. Klasseniveaumethodes. Overerving

Directie Services Communicatie Services IMKL. Beschrijving van het model 1.1. Het Kadaster. Versie. Auteur(s)

Programmeren in Access met VBA

Programmeren in C# Interfaces. Hoofdstuk 23

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

Programmeren in Access 2016 met VBA

Entity-Relationship Diagram (ERD) Modelleren

Transcriptie:

Deel I Hoofdstuk 2: Het klassenmodel 2005 Prof Dr. O. De Troyer Klasse Model pag. 1 Hoofdstuk 2: Het klassenmodel Het Klassenmodel Beschrijft de statische structuur van een systeem door middel van Het beschrijvingen van de objecten in het systeem Welke objecten Welke informatie bevatten ze Hoe zijn ze gerelateerd; verbanden tussen objecten Belangrijke concepten in dit hoofdstuk: object, klasse, link, associatie, generalisatie, overerving 2005 Prof. Dr. O. De Troyer Klasse Model pag. 2

2.1 Objecten Voorbeelden van objecten: Prof Jonckers Vrije Universiteit Brussel het boek Object-Oriented Modeling and Design with UML de factuur nr. 05-09-03-1235 een variabele... 2005 Prof. Dr. O. De Troyer Klasse Model pag. 3 2.1 Objecten Object is een ding, concept of abstractie met een identiteit dat betekenis heeft voor de toepassing onder beschouwing (het systeem). Objecten met een correspondentie in de werkelijkheid Prof Jonckers, De Vrije Universiteit Brussel,... Objecten die corresponderen met abstracte entiteiten uit de werkelijkheid: Het huwelijk van Jan en Hilde De regel van 3, Objecten die niet corresponderen met dingen uit werkelijk: De variabele a, een schermvenster (window),... 2005 Prof. Dr. O. De Troyer Klasse Model pag. 4

2.1 Objecten Alle objecten hebben een identiteit en zijn te onderscheiden op basis van hun identiteit! Gevolg: objecten kunnen dezelfde beschrijvende eigenschappen hebben 2 appels kunnen dezelfde eigenschappen hebben (rood, rond, zoet) maar toch zijn het 2 verschillende objecten ( identiteit) 2005 Prof. Dr. O. De Troyer Klasse Model pag. 5 2.2 Klassen En wat als je heel veel objecten nodig hebt? Voorbeelden: 500 proffen 9000 studenten 100.000 boeken... 2005 Prof. Dr. O. De Troyer Klasse Model pag. 6

2.2 Klassen Klasse beschrijft een groep van gelijksoortige objecten. Voorbeelden Klassen: Prof Student Universiteit Boek Computerboek Factuur Huwelijk... Geef een klasse een betekenisvolle unieke naam! 2005 Prof. Dr. O. De Troyer Klasse Model pag. 7 2.2 Klassen Elk object is een instantie van een klasse Objecten van een klasse dezelfde soort eigenschappen maar de waarden van de eigenschappen kunnen verschillen Voorbeeld Proffen hebben allemaal een naam en doceren cursussen Naam kan verschillen; cursussen kunnen verschillen De klasse van een object is een impliciete eigenschap van het object Objecten weten tot welke klasse ze behoren 2005 Prof. Dr. O. De Troyer Klasse Model pag. 8

2.2 Klassen Definitie van de eigenschappen van een klasse moet slechts 1 keer gegeven worden ook al zijn er zeer veel instanties van de klasse nodig Ook klasse indien slechts 1 enkele instantie Het concept Klasse is zelf ook een abstractie mechanisme 2005 Prof. Dr. O. De Troyer Klasse Model pag. 9 2.3 UML - Grafische Representatie UML = Unified Modeling Language Aantal diagrammen om bepaalde modellen grafisch weer te geven Class en Object diagrams Sequence diagrams Collaboration diagrams Statecharts Component diagrams Use case diagrams 2005 Prof. Dr. O. De Troyer Klasse Model pag. 10

2.3 UML - Grafische Representatie Grafische representaties zijn gemakkelijker te begrijpen, ook voor niet technische personen Laat communicatie toe met opdrachtgever, domeinspecialisten, enz. Maakt validatie van de modellen mogelijk 2005 Prof. Dr. O. De Troyer Klasse Model pag. 11 2.3 UML - Klasse en object notatie Klasse grafische notatie Prof Object grafische notatie Jonckers:Prof Houben:Prof :Prof UML conventies Symbool voor klasse is rechthoek Klassennaam in vet, gecentreerd en beginnend met hoofdletter Object zonder naam 2005 Prof. Dr. O. De Troyer Klasse Model pag. 12

2.4 Attributen Objecten hebben meestal een boel vaste eigenschappen Sommige ervan zijn belangrijk voor het systeem Voorbeelden: Een prof: naam, geboortedatum, graad Een factuur: datum, bedrag, gefactureerde Een boek: titel, jaar van uitgifte, uitgeverij Attribuut is een (benoemde) eigenschap van een object die een waarde beschrijft voor het object. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 13 2.4 Attributen Een attribuut heeft een waarde voor een object Voorbeeld: naam prof, waarde = Jonckers Verschillende objecten kunnen dezelfde waarde hebben voor een attribuut 2 facturen met dezelfde datum Meerdere boeken met dezelfde uitgever Meerdere proffen met dezelfde graad 2 proffen met dezelfde naam 2005 Prof. Dr. O. De Troyer Klasse Model pag. 14

2.4 Attributen Attributen worden gedefinieerd in de klasse door middel van een naam; eventueel ook een data type 2005 Prof. Dr. O. De Troyer Klasse Model pag. 15 2.4 Attributen - UML notatie UML - grafische notatie Prof naam geboortedatum Prof Klasse met attributen UML datatypen: Boolean, Integer, UnlimitedNatural, String Ook andere datatypen zijn mogelijk, bijv. Date naam: String geboortedatum: Date Attribuutnamen starten met een kleine letter 2005 Prof. Dr. O. De Troyer Klasse Model pag. 16

2.4 Attributen Namen van attribuut moeten uniek zijn binnen één klasse naam attribuut voor Prof naam attribuut voor Univ Prof Univ naam geboortedatum naam adres 2005 Prof. Dr. O. De Troyer Klasse Model pag. 17 2.4 Attributen UML - grafische notatie (2) Meersman:Prof naam= Meersman geboortedatum=18 november 1947 Janssens:Prof naam= Janssens geboortedatum= 20 januari 1945 Objecten met attribuutwaarden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 18

2.4 Attributen Attributen worden gebruik om eigenschappen te beschrijven; geen verbanden tussen objecten (relaties)!! Daarom moet een attribuut een waarde beschrijven!! waarde object Waarden hebben geen identiteit Alle voorkomen van de string Canada zijn hetzelfde Alle voorkomen van de integer 17 zijn hetzelfde 2005 Prof. Dr. O. De Troyer Klasse Model pag. 19 bedrijf is geen eigenschap van een persoon; Een Persoon werkt voor een Bedrijf is een voorbeeld van een verband tussen objecten 2.4 Attributen De identiteit van een object is een impliciete eigenschap en mag niet gemodelleerd worden als attribuut! Prof profid: Integer naam: String geboortedatum: Date Opgelet: objecten kunnen in de werkelijkheid ook identificatienummers hebben. Deze dienen, indien relevant, wel gemodelleerd te worden. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 20 Prof AdministratieNr: Integer naam: String geboortedatum: Date

Verschil object - klasse Een klasse is een veralgemening van gelijksoortige objecten Klassen laten toe om objecten te classificeren Een klasse heeft een extensie en een intentie Extensie: verzameling van alle mogelijke instanties Intentie: eigenschappen gemeenschappelijk aan alle instanties 2005 Prof. Dr. O. De Troyer Klasse Model pag. 21 Verschil object - klasse Koe: klasse of object of beide? Wat klasse is en wat object is afhankelijk van het domein en de toepassing. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 22

2.5 Operaties en Methoden Objecten in de werkelijkheid vertonen gedrag Om informatie te verstrekken aan andere objecten Om iets te doen Weerspiegeld in OO OO-objecten kunnen ook gedrag hebben Door middel van het definiëren van operaties. Voorbeelden: Window: open, move, resize, hide, close Prof: geefnaam, geefleeftijd, verandergraad Operatie Een functie of een procedure die kan worden toegepast op of door objecten 2005 Prof. Dr. O. De Troyer Klasse Model pag. 23 2.5 Operaties en Methoden Elke operatie wordt toegepast op of door een object De open operatie wordt toegepast op een Windowobject Alle objecten van een klasse hebben dezelfde operaties Alle Window-objecten hebben de operaties open, move, resize, hide en close Operaties worden gedefinieerd in de klasse 2005 Prof. Dr. O. De Troyer Klasse Model pag. 24

2.5 Operaties en Methoden Methode De implementatie van een operatie voor een klasse m.a.w. de code nodig voor de operatie 2005 Prof. Dr. O. De Troyer Klasse Model pag. 25 2.5 Operaties en Methoden Eenzelfde operatie kan verschillend worden geïmplementeerd voor verschillende klassen nl. door verschillende methoden Voorbeeld: drukaf voor Formulier drukaf voor Figuur Polymorfisme Dezelfde operatie is gedefinieerd voor verschillende klassen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 26

2.5 Operaties en Methoden Vermijd het gebruik van dezelfde naam voor operatie die semantisch niet hetzelfde zijn! Voorbeeld: inverse voor Matrix en inverse voor spiegelbeeld van een Figuur 2005 Prof. Dr. O. De Troyer Klasse Model pag. 27 UML - grafische notatie 2.5 Operaties en Methoden - UML notatie Prof naam: String geboortedatum: Date adres: String wijzigadres(nieuwadres: String) drukaf () Klasse met attributen en operaties optioneel Operatienamen starten met een kleine letter Operaties worden niet opgenomen in object diagrammen, enkel in klasse diagrammen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 28

2.6 UML - Klasse diagram UML - Klasse diagram KlasseNaam attribuut1naam: datatype1 = defaultwaarde1 attribuut2naam: datatype2 = defaultwaarde2 operatienaam1(argumentlijst1): resultaattype1 operatienaam2(argumentlijst2): resultaattype2 } } Naam van de klasse Lijst van attributen - mag weggelaten worden - leeg betekent geen attributen Lijst van operaties - mag weggelaten worden - leeg betekent geen operaties Notatie voor een argument [ in out inout ] argumentnaam : type = defaultwaarde 2005 Prof. Dr. O. De Troyer Klasse Model pag. 29 2.6 UML - Klasse voorstelling - voorbeelden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 30

2.7 Link en Associaties In de werkelijkheid zijn er verbanden tussen objecten Voorbeeld: Prof Jonckers doceert de Cursus Structuur I Het Land België heeft Brussel als Hoofdstad Het Boek Object-Oriented Modeling and Design with UML heeft als auteurs Michael Blaha and James Rumbaugh In OO modelleren: Links tussen objecten 2005 Prof. Dr. O. De Troyer Klasse Model pag. 31 2.7 Link en Associaties Deze verbanden worden gemodelleerd op klasse niveau Voorbeeld: Prof doceert Cursus Land heeft hoofdstad Stad Boek heeft auteur Persoon Verbanden tussen klassen worden associaties genoemd Associatie is een veralgemening van links 2005 Prof. Dr. O. De Troyer Klasse Model pag. 32

UML - grafische notatie 2.7 Link en Associatie - UML notatie Persoon naam: String HeeftAandelenVan Bedrijf naam: String Klasse Diagram Naam van de associatie Niet verplicht maar zeer wenselijk 2005 Prof. Dr. O. De Troyer Klasse Model pag. 33 2.7 Link en Associaties Link verband tussen objecten Associatie beschrijft een groep van gelijksoortige links Een link is een instantie van een associatie De links van een associatie liggen tussen objecten van dezelfde klassen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 34

UML - grafische notatie 2.7 Link en Associatie UML notatie Jan:Persoon naam= Jan Hilde:Persoon HeeftAandelenVan HeeftAandelenVan IMB:Bedrijf naam= IBM Object Diagram naam= Hilde HeeftAandelenVan Apple:Bedrijf Alice:Persoon naam= Apple naam= Alice Als een link een naam heeft moet die onderlijnd worden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 35 2.7 Link en Associatie - UML notatie Meerdere associaties mogelijk tussen dezelfde klassen Associatienamen verplicht!! 2005 Prof. Dr. O. De Troyer Klasse Model pag. 36

2.7 Link en Associaties De verbanden zijn bi-directioneel Ze kunnen in 2 richtingen gelezen worden Default van links naar rechts en van boven naar onder: Persoon WerktVoor Bedrijf 2005 Prof. Dr. O. De Troyer Klasse Model pag. 37 2.7 Link en Associaties Andere leesrichting via pijltje Bedrijf SteltTeWerk Persoon 2005 Prof. Dr. O. De Troyer Klasse Model pag. 38

2.7 Link en Associaties Verbanden mogen niet als attributen gemodelleerd worden! Een bedrijf is geen eigenschap van een persoon en een persoon is geen eigenschap van een bedrijf 2005 Prof. Dr. O. De Troyer Klasse Model pag. 39 2.8. Multipliciteit Een persoon werkt maar voor ten hoogste 1 bedrijf en het bedrijf kan meerdere personen te werk stellen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 40

2.8 Multipliciteit Multipliciteit Aantal instanties van een klasse dat kan verbonden zijn met één instantie van een geassocieerde klasse 1 juist 1 1..* 1 of meer 3..5 3 tot 5, 5 inbegrepen * meerdere 2005 Prof. Dr. O. De Troyer Klasse Model pag. 41 2.8 Multipliciteit - voorbeelden 1-1 associatie Met een welbepaalde stad kan juist 1 land verbonden zijn via de associatie HeeftHoofdstad Met een welbepaalde land kan juist 1 stad verbonden zijn via de associatie HeeftHoofdstad 2005 Prof. Dr. O. De Troyer Klasse Model pag. 42

2.8 Multipliciteit - voorbeelden 1-veel associatie Met een cursus is juist 1 professor geassocieerd, m.a.w een cursus wordt maar door 1 professor gedoceerd. Met een professor kunnen 0 of meerdere cursussen geassocieerd zijn, m.a.w een professor kan meerdere cursussen doceren. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 43 2.8 Multipliciteit - voorbeelden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 44 veel-veel associatie Met een bedrijf kunnen meerdere personen geassocieerd zijn via de associatie HeeftAandelen, m.a.w een bedrijf kan meerdere aandeelhouders hebben. Met een persoon kunnen meerdere bedrijven geassocieerd zijn via de associatie HeeftAandelen, m.a.w een persoon kan aandelen hebben van verschillende bedrijven.

2.8 Multipliciteit - voorbeelden Met een bedrijf kunnen meerdere personen geassocieerd zijn via de associatie WerktVoor, m.a.w een bedrijf kan meerdere werknemers hebben. Met een persoon kan geen of juist 1 bedrijf geassocieerd zijn via de associatie WerktVoor, m.a.w een persoon werkt voor 1 of geen bedrijf. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 45 2.9 Rolnamen Een klasse speelt een welbepaalde rol in een associatie Persoon speelt de rol van werknemer in deze associatie. Bedrijf speelt de rol van werkgever in deze associatie. 2005 Prof. Dr. O. De Troyer Klasse Model pag. 46 Rolnamen: niet altijd verplicht.

2.9 Rolnamen Gebruik van rolnamen is optioneel, maar noodzakelijk voor associaties tussen dezelfde klasse In UML zijn rolnamen meestal zelfstandige naamwoorden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 47 2.9 Rolnamen Alle rolnamen moeten uniek zijn voor een klasse en verschillend van van de attribuutnamen gebruikt in de klasse Een rol kan gezien worden als een soort attribuut 2005 Prof. Dr. O. De Troyer Klasse Model pag. 48

2.9 Rol vs Klasse of Klasse: als elke instantie onafhankelijk kan bestaan als elke instantie steeds een instantie van de klasse blijft Rol: Instantie kan alleen bestaan als er een link is met een ander object 2005 Prof. Dr. O. De Troyer Klasse Model pag. 49 2.10 Ordening van links Wanneer een object verbonden is met meerdere objecten door middel van links dan is er geen expliciete orde Voorbeeld Een professor is verbonden met een verzameling van cursussen Soms is een orde aangewezen: geordende verzameling 2005 Prof. Dr. O. De Troyer Klasse Model pag. 50

2.11 Bags en Sequences Normaal is er ten hoogste 1 link tussen 2 objecten Meerdere links tussen dezelfde 2 objecten zijn mogelijk via bags en sequences Bag: verzameling waarin duplicaten toegelaten zijn Sequence: geordende verzameling waarin duplicaten toegelaten zijn 2005 Prof. Dr. O. De Troyer Klasse Model pag. 51 2.11 Bags en Sequences {sequence} is gelijk aan {ordered} {bag} 2005 Prof. Dr. O. De Troyer Klasse Model pag. 52

2.12 Associatie klassen Associatie Klasse een associatie die tevens een klasse is Laat toe om links te beschrijven door middel van attributen en er operaties aan toe te kennen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 53 2.12 Associatie klassen /documents/les1 read Marie /documents/les1 read-write Olga /documents/les2 read-write Olga 2005 Prof. Dr. O. De Troyer Klasse Model pag. 54

2.12 Associatie klassen De objecten van een associatie klasse krijgen hun identiteit van de instanties verbonden door de link /documents/les1 read Marie /documents/les1 read-write Jan /documents/les2 read-write Jan /documents/les2 read Jan Niet toegelaten! 2005 Prof. Dr. O. De Troyer Klasse Model pag. 55 2.12 Associatie klassen Associatie klassen zijn ook mogelijk voor 1-1 associaties and 1-veel associaties 2005 Prof. Dr. O. De Troyer Klasse Model pag. 56

2.12 Associatie klassen Het is beter om de attributen van 1-1 en 1-veel associaties te modeleren via associatie klassen dan deze attributen toe te voegen aan één van de klassen GOED Slecht model Te vermijden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 57 2.12 Associatie klassen Een associatie klasse kan ook participeren in andere associaties Een gebruiker heeft toegang toe meerdere computer. Op elke computer heeft hij andere toegangsrechten. En op elke computer heeft hij 1 home folder. Verschillende gebruikers kunnen dezelfde home folder hebben 2005 Prof. Dr. O. De Troyer Klasse Model pag. 58

2.12 Associatie klassen Een associatie klasse is verschillend van een associatie die gepromoveerd werd tot klasse (Jan, project1) manager, 10 (Jan, project2) analist, 30 (Dirk, project1) analist, 20 (Piet, project1) programmeur, 40 (Jan, job1) (Jan,job2) (Dirk, job3) (Piet, job4) (Piet, job5) (job1,project1) (job2, project2) (job3, project1) (job4,project1) (job5, project1) 2005 Prof. Dr. O. De Troyer Klasse Model pag. 59 2.13 Specialisatie en generalisatie Voorbeeld Stockbeheer Onderdelen Naam, fabrikant, gewicht, prijs Maar er zijn verschillende soorten onderdelen: Pompen» Zuigkracht, doorstroomvolume Tanken» Volume, druk Pomp en Tank te beschouwen als speciale soorten onderdelen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 60

2.13 Specialisatie en generalisatie De klassen Pomp en Tank hebben alle attributen en operaties van de klasse Onderdeel, maar ook nog extra attributen en operaties 2005 Prof. Dr. O. De Troyer Klasse Model pag. 61 2.13 Specialisatie en generalisatie superklasse Specialisatie/generalisatie subklasse Alle eigenschappen van Onderdeel zijn impliciet ook eigenschappen van Pomp Pomp Naam, fabrikant, gewicht, prijs, aantal, zuigkracht, doorstroomvolume updatestock 2005 Prof. Dr. O. De Troyer Klasse Model pag. 62

2.13 Specialisatie en generalisatie Specialisatie/generalisatie organiseert klassen op basis van gemeenschappelijke en discriminerende eigenschappen in een hiërarchie De superklasse bevat de gemeenschappelijke attributen, operaties en associaties; de subklasse voegt hier specifieke attributen, operaties en associaties aan toe Elke subklasse erft de eigenschappen van zijn superklasse 2005 Prof. Dr. O. De Troyer Klasse Model pag. 63 2.13 Specialisatie en generalisatie Verkorte notatie bij meerdere subklassen voor 1 superklasse: dimensie Logische groepering van subklassen Meerdere dimensies mogelijk per superklasse Naam van de dimensie: optioneel OnderdeelType 2005 Prof. Dr. O. De Troyer Klasse Model pag. 64

2.13 Specialisatie en generalisatie Generalisatie/specilalisatie wordt ook een is-een relatie genoemd Elke instantie van de subklasse is ook een instantie van de superklasse Voorbeelden: Elke pomp is een onderdeel Elke vrouw is een persoon Elke kat is een dier Tegenvoorbeeld: elk dier is geen kat Een instantie van een subklasse heeft een waarde voor elk attribuut van elke (directe of indirecte) superklasse Een instantie kan een methode uitvoeren van elke van zijn (directe of indirecte) superklassen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 65 2.13 Specialisatie en generalisatie Er kunnen verschillende niveaus zijn Een subklasse kan superklasse zijn van een andere subklasse Generalisatie is transitief over de verschillende niveaus PompelPomp erft van Pomp Pomp erft van Onderdeel Dus PompelPomp erft ook van Onderdeel PompelPomp is subklasse van Pomp Pomp is subklasse van Onderdeel Dus PompelPomp is ook subklasse van Onderdeel 2005 Prof. Dr. O. De Troyer Klasse Model pag. 66

2.13 Specialisatie en generalisatie 2005 Prof. Dr. O. De Troyer Klasse Model pag. 67 2.13 Specialisatie en generalisatie Waarom subklasse hiërarchieën gebruiken? 1. Abstractie mechanisme Laat toe om beschrijvingen van complexe klasse stapsgewijs op te bouwen Voorbeeld: Persoon - personeelslid - Academisch Personeelslid - Zelfstandig Academisch Personeelslid 2005 Prof. Dr. O. De Troyer Klasse Model pag. 68

2.13 Specialisatie en generalisatie Waarom subklasse hiërarchieën gebruiken? 2. Onderhoudbaarheid Aanpassingen zijn gelokaliseerd tot het niveau waar ze gespecificeerd zijn window 2005 Prof. Dr. O. De Troyer Klasse Model pag. 69 2.13 Specialisatie en generalisatie Waarom subklasse hiërarchieën gebruiken? 3. Uitbreidbaarheid Nieuwe subklassen kunnen eenvoudig toegevoegd worden zonder de andere klassen te beïnvloeden 2005 Prof. Dr. O. De Troyer Klasse Model pag. 70

2.13 Specialisatie en generalisatie Overschrijven ( Overriding ) Een subklasse kan eigenschappen die geërfd werden aanpassen. Dit wordt overriding genoemd. Methoden en default waarden van attributen kunnen overschreven worden Signatuur van de operatie (aantal en type van de argumenten en return type) moet bewaard blijven Overriding mag nooit aanleiding geven tot inconsistenties 2005 Prof. Dr. O. De Troyer Klasse Model pag. 71 Voorbeeld overschrijven default waarde van attribuut 2.13 Specialisatie en generalisatie 2005 Prof. Dr. O. De Troyer Klasse Model pag. 72

Voorbeeld overschrijven Methoden overschrijven 2.13 Specialisatie en generalisatie 2005 Prof. Dr. O. De Troyer Klasse Model pag. 73 Waarom overschrijven? 2.13 Specialisatie en generalisatie Als de methode voor een operatie bepaald wordt door de subklasse In het voorbeeld van Figure zal de methode display verschillend zijn voor elke subklasse Om de specificatie meer specifiek te maken Bijv. Het type van een attribuut meer specifiek maken: integer -> small integer. Om de performantie te verbeteren De methode rotate kan aangepast worden voor Circle, nl. de rotatie van een cirkel hoeft niets te doen 2005 Prof. Dr. O. De Troyer Klasse Model pag. 74