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
Objectgerichte modelleertechnieken © 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 ...
Objectgerichte modelleertechnieken © 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), ... Objectgerichte modelleertechnieken © 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)
Objectgerichte modelleertechnieken © 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 – ...
Objectgerichte modelleertechnieken © 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! Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Object zonder naam • UML conventies – Symbool voor klasse is rechthoek – Klassennaam in vet, gecentreerd en beginnend met hoofdletter
Objectgerichte modelleertechnieken © 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. Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 15
2.4 Attributen - UML notatie UML - grafische notatie Prof naam geboortedatum
Klasse met attributen UML datatypen: Boolean, Integer, UnlimitedNatural, String
Prof
Ook andere datatypen zijn mogelijk, bijv. Date
naam: String geboortedatum: Date
Attribuutnamen starten met een kleine letter Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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) !! “bedrijf” is geen eigenschap van een persoon; “Een Persoon werkt voor een Bedrijf” is een voorbeeld van een verband tussen objecten
– 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 19
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. Prof AdministratieNr: Integer naam: String geboortedatum: Date Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 20
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 Objectgerichte modelleertechnieken © 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.
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 27
2.5 Operaties en Methoden - UML notatie UML - grafische notatie Prof
Klasse met attributen en operaties
naam: String geboortedatum: Date adres: String wijzigAdres(nieuwAdres: String) drukaf ()
optioneel
• Operatienamen starten met een kleine letter • Operaties worden niet opgenomen in object diagrammen, enkel in klasse diagrammen Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 29
2.6 UML - Klasse voorstelling - voorbeelden
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 32
2.7 Link en Associatie UML notatie UML - grafische notatie
Persoon
HeeftAandelenVan
Bedrijf
Klasse Diagram
naam: String
naam: String
Naam van de associatie Niet verplicht maar zeer wenselijk
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 34
2.7 Link en Associatie UML notatie UML - grafische notatie Jan:Persoon
HeeftAa
ndelenV
an
naam=“Jan”
Hilde:Persoon naam=“Hilde”
HeeftA HeeftA
Alice:Persoon
an
an delenV
andele
nVan
IMB:Bedrijf naam=“IBM”
Object Diagram
Apple:Bedrijf naam=“Apple’”
naam=“Alice”
Als een link een naam heeft moet die onderlijnd worden Objectgerichte modelleertechnieken © 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 !!
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 37
2.7 Link en Associaties • Andere leesrichting via pijltje – Bedrijf SteltTeWerk Persoon
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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’ Objectgerichte modelleertechnieken © 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. Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 43
2.8 Multipliciteit voorbeelden 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. Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 44
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. Objectgerichte modelleertechnieken © 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.
Rolnamen: niet altijd verplicht. Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 46
2.9 Rolnamen • Gebruik van rolnamen is optioneel, maar noodzakelijk voor associaties tussen dezelfde klasse
• In UML zijn rolnamen meestal zelfstandige naamwoorden Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 51
2.11 Bags en Sequences • {sequence} is gelijk aan {ordered} {bag}
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 53
2.12 Associatie klassen
/documents/les1 /documents/les1 /documents/les2
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 54
read read-write read-write
Marie Olga Olga
2.12 Associatie klassen • De objecten van een associatie klasse krijgen hun identiteit van de instanties verbonden door de link
/documents/les1 /documents/les1 /documents/les2 /documents/les2
read read-write read-write read
Marie Jan Jan Jan
Niet toegelaten !
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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) (Jan, project2) (Dirk, project1) (Piet, project1)
manager, 10 analist, 30 analist, 20 programmeur, 40
(Jan, job1) (Jan,job2) (Dirk, job3) (Piet, job4) (Piet, job5)
(job1,project1) (job2, project2) (job3, project1) (job4,project1) (job5, project1)
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 66
2.13 Specialisatie en generalisatie
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 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
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 71
2.13 Specialisatie en generalisatie • Voorbeeld overschrijven – default waarde van attribuut
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 72
2.13 Specialisatie en generalisatie • Voorbeeld overschrijven – Methoden overschrijven
Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 73
2.13 Specialisatie en generalisatie • Waarom overschrijven? – 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 Objectgerichte modelleertechnieken © 2005 Prof. Dr. O. De Troyer | Klasse Model pag. 74