Hoofdstuk 2 Objectgeoriënteerde basisbegrippen
Accessors en polymorfie zGoede gewoonte voor objectgeoriënteerde programma -> voor alle eigenschappen: accessors en mutators -> steeds mutators en accessors gebruiken om eigenschappen te wijzigen en aan te roepen -> wijzigingen slechts op 1 plaats
Accessors en polymorfie 2 verschillen ten opzichte van voordien: -> voor alle eigenschappen : accessors accessor = ophalen van waarde van attribuut -> eventueel bewerkingen op attribuut alvorens weergave voorbeeld: getDronkenschap( ) alternatief voor hoeDronkenBenIk( )
Accessors en polymorfie
-> tweede verschil : herhaling van de methode watIsUwNaam( ) uit Mensen * enkel in geval van andere implementatie * als naam aan slechterik gevraagd wordt zegt hij erbij dat hij een slechterik is => verschillend gedrag bij aanroep voor object van klasse Slechterik als voor object van klasse Mensen, maar methode heeft dezelfde naam => polymorfie
Accessors en polymorfie
Verschil in gedrag -> zichtbaar in main
Accessors en polymorfie
Jack -> vriendelijke slechterik benen = 1 via setBenen( ) geen paard geen jonkvrouw aan de haak geslagen verschillende slechterik-objecten met ander gedrag polymorfie -> door middel van methode watIsUwNaam( )
Relaties tussen objecten en klassen zRelaties tss objecten -> 2 manieren 1. Objecten zijn onafhankelijk 2. Object bevat andere objecten vb. via aggregatie (= klasserelatie): in Slechterik-voorbeeld : object maurice bevat -> object jonkvrouw (Mensen) -> snorKleur, naam (String-objecten) Alles in OO is object; zelfs onderdelen van object
Relaties tussen objecten en klassen -> eventuele communicatie via berichten = aanroepen van een methode om de toestand van een object te wijzigen of een gedrag uit te voeren =>uitvoering van methode = antwoord van object op het ontvangen van een bericht. -> berichtenverkeer in volgordediagram
Relaties tussen objecten en klassen -> berichten = belangrijk objectgeoriënteerd concept -> maken het mogelijk dat objecten onafhankelijk blijven: als een object een bericht naar een ander object verstuurt, dan kan het dat object niet schelen op welke manier het ander object besluit het aangevraagde gedrag uit te voeren. Het aanvragende object is er alleen in geïnteresseerd dat het gedrag optreedt.
Relaties tussen objecten en klassen -> objectgeoriënteerd = betere werkwijze -> betere benadering van de real world -> sluit nauwer aan bij onze denkwijze via sleuteleigenschap abstractie zonder abstractie -> onmogelijk meest eenvoudige opgave uit te voeren wegens constante hindering door een overvloed van details.