Hoofdstuk 2 Objectgeoriënteerde basisbegrippen
Inleiding object, klasse, hoe klassen communiceren UML-voorstelling + pseudo-code rode draad = western roman 3 soorten kaders (enkel, dubbel, koord) vetgedrukte termen = objectgeoriënteerde termen deze leiden ons naar de 3 objectgeoriënteerde steunpilaren : inkapseling, overerving, polymorfie
Wat is een object? Verschil tussen objectgeoriënteerde software en traditionele software object = 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 eenheid 2. Object komt overeen met tastbaar object: auto abstracte dingen of een concept: rekening organisatorische eenheid: bestand, window interactie: aankoop rol: oude winkeldochter
Wat is een object? Eigenschappen van object 3. Eigen gespecialiseerde kennis in bepaald gebied, binnen algemeen probleemdomein 4. Data en bewerkingen -> gecombineerd tot logische eenheid object -> klasse = verzameling van objecten
Klasse = implementatie van een verzameling bij elkaar horende objecten Klassen - Definitie Klasse = implementatie van een verzameling bij elkaar horende objecten
Klassen - Definitie Cf. biologie = klasse zoogdieren:-> mensen, katten, honden Gedeelde kenmerken -> gemeenschappelijkheid Gerelateerde objecten -> klasse in definitie van een klasse: members van een klasse members: gemeenschappelijke 1. Eigenschappen=kenmerken=soort data= attributen 2. Gedragingen= acties/operaties= methoden
Klassen - Definitie klasse = sjabloon : -> instantiëren van objecten klasse = koekjesvorm -> object = koekje UML-voorstelling + pseudo-code Westernroman van Eunice
Klassen - Definitie klasse = sjabloon : -> instantiëren van objecten klasse = koekjesvorm -> object = koekje UML-voorstelling + pseudo-code Westernroman van Eunice
Voorbeeld - Westernroman Westernroman van Eunice = steeds succesvol Reden = 1 blad = volledig verhaal = enkel plot Rest in mappen apart die ze dan meestuurt naar haar uitgever Op 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 grondig levert 2 belangrijke zaken 1. De hoofdingrediënten voor een Western stad; 2. Verschillende waarden voor de ingrediënten in een standaard Western stad
Voorbeeld - Westernroman WesternStad heeft 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 + schrijfwijze Soort variabelen = eigenschappen of attributen nu nog object construeren met defaultwaarden voor attributen java ter illustratie ipv 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( ) -> constructor dient om objecten te maken of te instantiëren geeft eventueel standaardwaarden mee zegt 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, returnwaarden type = soort methode precondities = beginvoorwaarden
UML-voorstelling van een klasse Specificaties van methodes: postcondities = ->veranderingen die de methode aanbrengt ->voorwaarden die gelden na de methode ->waaruit bestaat de output gebruikt = andere methodes gegevens -> lokale variabelen, maar niet de attributen constanten -> 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 + mutators toestand van een object: inhoud van de attributen elk 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 1. Privaat -> in UML : - 2. Publiek -> in UML : + wat getoond wordt en wat niet elke objectgeoriënteerde taal -> eigen sleutelwoorden 3 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 WesternStad attributen->privaat omwille van inkapseling voor elk attribuut -> mutator mutator -> beschikbaar voor gebruikers van de klasse -> publiek inhoud van mutator via pseudo-code constructor -> gebruik van mutators accessors -> voorlopig niet nodig
Toepassing + inkapseling Nieuwe UML-voorstelling van Westernstad
Toepassing + inkapseling void -> geen returnwaarde
Toepassing + inkapseling Aangepaste constructor
Object -> Klasse piepje in de verzamelmap WesternStad Eunice besluit -> verhaal in een WesternStad hoofd (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 lijnen verhaal -> 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: sweatyPost invullen 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 bevat dan in het hoofdprogramma instantiatie van een object: sweatyPost