Hoofdstuk 2
Objectgeoriënteerde basisbegrippen
Inleiding
object, klasse, hoe klassen communiceren UML-voorstelling + pseudo-code rode draad = western roman3 soorten kaders (enkel, dubbel, koord)vetgedrukte termen = objectgeoriënteerde termendeze leiden ons naar de 3 objectgeoriënteerde steunpilaren : inkapseling, overerving, polymorfie
Wat is een object?
Verschil tussen objectgeoriënteerde software en traditionele softwareobject = ding dat voorkomt in de scope die we moeten automatiseren
Wat is een object? Eigenschappen van object
1. onafhankelijk (andere objecten, rest programma) functioneren -> atomaire eenheid2. Object komt overeen met
tastbaar object: autoabstracte dingen of een concept: rekeningorganisatorische eenheid: bestand, windowinteractie: aankooprol: oude winkeldochter
Wat is een object? Eigenschappen van object
3. Eigen gespecialiseerde kennis in bepaald gebied, binnen algemeen probleemdomein4. Data en bewerkingen -> gecombineerd tot logische eenheid
object -> klasse = verzameling van objecten
Klassen - Definitie
Klasse = implementatie van een verzameling bij elkaar horende objecten
Klassen - Definitie
Cf. biologie = klasse zoogdieren:-> mensen, katten, hondenGedeelde kenmerken -> gemeenschappelijkheid Gerelateerde objecten -> klassein definitie van een klasse: members van een klassemembers: gemeenschappelijke 1. Eigenschappen=kenmerken=soort data= attributen 2. Gedragingen= acties/operaties= methoden
Klassen - Definitie
klasse = sjabloon : -> instantiëren van objectenklasse = koekjesvorm -> object = koekjeUML-voorstelling + pseudo-codeWesternroman van Eunice
Klassen - Definitie
klasse = sjabloon : -> instantiëren van objectenklasse = koekjesvorm -> object = koekjeUML-voorstelling + pseudo-codeWesternroman van Eunice
Voorbeeld - Westernroman
Westernroman van Eunice = steeds succesvolReden = 1 blad = volledig verhaal = enkel plotRest in mappen apart die ze dan meestuurt naar haar uitgeverOp blad: titel: ” Geweerschoten in de Old West Saloon”eerste wat nodig is: een setting -> map Western Steden
Voorbeeld - Westernroman
Elke Western stad heeft een aantal hoofdingrediënten: stallen, saloons, sheriffs en een paar ruziemakers. Een standaard stad heeft drie stallen en is gelokaliseerd ten Westen van de Mississippi ergens rond 1850.
Voorbeeld - Westernroman
beschrijving = niet grondiglevert 2 belangrijke zaken
1. De hoofdingrediënten voor een Westernstad;
2. Verschillende waarden voor de ingrediënten in een standaard Western stad
Voorbeeld - Westernroman
WesternStadheeft een zeker aantal stallen
heeft een zeker aantal saloons
heeft een zeker aantal sheriffs
heeft een zeker aantal ruziemakers
bevindt zich ergens
bestaat op een zekere periode
een typische WesternStad zal hebben:een aantal stallen = 3
locatie = Wilde Westen van Amerika
tijdsperiode = 1850
Voorbeeld - Westernroman
Wat wordt beschreven + schrijfwijzeSoort variabelen = eigenschappen of attributennu nog object construeren met defaultwaarden voor attributenjava ter illustratieipv 1 Westernstad, hele klasse die zegt welke elementen erin zitten maar niet hoeveel
UML-voorstelling van een klasse
algemeen:
UML-voorstelling van een klasse
Toegepast op WesternStad:
UML-voorstelling van een klasse
WesternStad( ) -> constructordient om objecten te maken of te instantiërengeeft eventueel standaardwaarden meezegt hoe object of instantie er standaard uit zal zien Pseudo-code ter aanvulling van het klassediagram
UML-voorstelling van een klasse
UML-voorstelling van een klasse
Specificaties van methodes:in- en uitvoer naast naam methode
invoer = input voor correct functioneren
-> argumenten met naam en type
uitvoer = resultaat, returnwaardentype = soort methodeprecondities = beginvoorwaarden
UML-voorstelling van een klasse
Specificaties van methodes:postcondities =
->veranderingen die de methode aanbrengt
->voorwaarden die gelden na de methode
->waaruit bestaat de outputgebruikt = andere methodes gegevens -> lokale variabelen, maar niet de attributenconstanten -> in hoofdletters
Soorten methodes
4 soorten methodes:1. constructor = creëren objecten van klassen
=instantiëren ->objecten = instanties
->voorwaarden die gelden na de methode
->2 soorten
constructor met argumenten->argumenten = initialisatie van de attributen
noarg-constructor ->initialisatie met standaardwaarden
Soorten methodes
4 soorten methodes:2. Accessor -> waarde van attributen van de klasse
->toegang tot interne toestand van objecten
->rechtstreeks
->verwerking/wijziging van de inhoud
->niet zichtbaar
getX( ): ->= accessor methode die toegang geeft tot
het attribuut x; de “getty”-methodes.
Soorten methodes
4 soorten methodes:3. Mutator -> wijziging van de waarde van de
attributen van de klasse
-> wijzigen van interne toestand van object bij
aanroep van deze methode van buitenaf
-> invoer kan verwerkt worden, voordat deze de
interne toestand van het object wijzigt.
setX( ): ->= mutator methode die toelaat een attribuut x
te veranderen; de “setty”-methodes.
Soorten methodes
4 soorten methodes:4.Utility methodes -> andere methodes
-> private (enkel toegankelijk van binnen uit de
klasse) functies voor intern gebruik
-> publieke methodes
->kunnen gebruik maken van de getter en
setter-methodes
Soorten methodes
gedrag van een object : accessors + mutatorstoestand van een object: inhoud van de attributenelk object start als een kloon, maar kan zich tijdens zijn leven anders gedragen.
-> vb twee WesternStadobjecten met ander
aantal ruziemakers
->grijs zoogdier /bruin zoogdier
objectgeoriënteerde programmeren -> accessors en mutators voor alle attributen
-> aanpassen/oproepen via deze methodes
Zichtbaarheid
wat getoond wordt en wat nietelke objectgeoriënteerde taal -> eigen sleutelwoorden3 niveaus van toegang:
1. Privaat -> in UML : -
2. Publiek -> in UML : +
3. Beveiligd/protected -> in UML : #inkapseling -> belangrijk voor ontwerp:
->Elk gedrag dat u wilt tonen-> publieke
->Alles wat u wilt verbergen-> beveiligd of privaat
Toepassing + inkapseling
toepassen op WesternStadattributen->privaat omwille van inkapselingvoor elk attribuut -> mutatormutator -> beschikbaar voor gebruikers van de klasse -> publiekinhoud van mutator via pseudo-codeconstructor -> gebruik van mutatorsaccessors -> voorlopig niet nodig
Toepassing + inkapselingNieuwe UML-voorstelling van Westernstad
Toepassing + inkapseling
void -> geen returnwaarde
Toepassing + inkapseling
Aangepaste constructor
Object -> Klasse
piepje in de verzamelmap WesternStadEunice besluit -> verhaal in een WesternStadhoofd (main) blad papier -> eerste deel van plot
Geweerschoten in de Old West Saloon
Dit verhaal speelt zich af in een Western Stad, genaamd Sweaty Post. Sweaty Post heeft één sheriff, twee saloons en vijf ruziemakers.
Object -> Klasse
veel informatie in die paar lijnenverhaal -> uitgever -> betekenis WesternStad uit verzamelmap
-> direkt datum, de locatie en aantal stallen
-> Eunice levert gegevens bij voor de andere
attributen, zoals de uitgever te verwachten
was.
Object -> Klasse hoofdprogramma: in pseudo-code
Object -> Klasse hoofdprogramma: in pseudo-code
Volgende acties worden achtereenvolgens ondernomen:Instantiatie van een object: sweatyPostinvullen van ontbrekende informatie
-> private eigenschappen
-> gebruik van mutators:
« naam object ».setX(waarde voor X)
Object -> Klasse
objectgeoriënteerde programmeertechniek in actie:eerst wordt een klasse( = verzamelmap) WesternStad gemaakt, die een ruwe beschrijving bevatdan in het hoofdprogramma instantiatie van een object: sweatyPost