Belangrijkste begrippen informatica Datatype (bvb int, String) * geef aan welk soort gegevens geschikt is als parameter Constructor *stelt velden in van een klasse bij aanmaken (=initialiseren) * zelfde naam als klasse Formele en actuele parameters - Formeel: naam van parameter in definitie van methode; - Actueel: feitelijke waarde van parameter indien methode wordt opgeroepen en uitgevoerd. (bvb. TicketCost is formeel, door gebruiker ingevulde '500' is actueel. Accesormethodes * retourneert informatie over toestand object *(heeft soms ook geen returnstatement) Mutatormethodes *veranderen velden van een object Abstracte Methode - abstracte methode komt voor in abstracte klasse; - implementatie door 1 of meerdere subklassen; - gebruik van aanroepen en overschrijving; - illustratie met voorbeeld. Wat bedoelt men met afhankelijkheid onderlinge verbondenheid van klassen. De mate van afhankelijk geeft aan hoe nauw deze klassen met elkaar verweven zijn. We streven naar een lage mate van afhankelijkheid = zwakke afhankelijkheid. Mate van afhankelijkheid bepaalt hoe lastig het is om veranderingen in een toepassing aan te passen. (elke klasse grotendeels onafhankelijk : communiceert met andere klassen via kleine goed gedefinierde interface. (+voorbeeld) Cohesie: Beschrijft hoe goed een stuk code verwijst naar een logische taak (methode), logisiche entiteit (klasse). Goed klassenontwerp = hoge mate van cohesie. Voordeel: aanpassen van één aspect toepassing blijft meestal beperkt tot dezelfde eenheid. Inkapseling alleen informatie over wat een klasse kan doen moet zichtbaar zijn, niet hoe. Zo is het makkelijk aanpasbaar. goede inkapseling zorgt voor verminderde afhankelijkheid. Verschil primitief, object DataType primitieve types zijn vooraf gedefinieerd in de taal Java. (bvb int, boolean) Objecttypes worden gedefiniëerd als klassen. (sommige door java-systeem bvb String) Kunnen allebei gebruikt worden als type, maar verschil in gedrag: Opslaan: - primitief: rechtstreeks in een variabele (soms omweg nodig via wrapperklassen om in lijsten te kunnen opslaan) (automatisch via autoboxing) - object: wordt opgeslagen in verwijzing naar object Goede elementen in antwoord examen: - Verschil uitleggen in manier waarop deze datatypes worden opgeslagen in geheugen (op locatie zelf of via referentie); - Verschil i.v.m. gebruik collecties. - Voorbeeldje geven van gebruik, bvb. copiëren variabelen met effect op opvraging waarde nadien. Overladen van constructors Klassendefinities hebben vaak verschillende versies van constructors of methodes die op verschillende manieren een bepaalde taak uitvoeren, door andere set parameters te gebruiken. -> new clockDisplay(); new clockDisplay(hour,minute); Generieke klasse - klassen die parameters van een ander type ontvangen bvb. ArrayList<String>; Generieke klassen definiëren niet één type maar kunnen meerdere types. Anoniem object - object zonder naam bvb. userList.add(new Lot(..,..)); Array - collectie met onveranderlijke omvang -> kan wel objecten of waarden van primitief type bevatten Static - met static worden klassenvariabelen gedefinieerd. Klassevariabelen zijn velden die opgeslagen zijn in een klasse zelf en niet in een object. -> Altijd slechts één exemplaar. - Ook klassenmethodes = statische methodes -klasse met enkel static methodes (bvb. Math, of zelf gedefinieerd - methoden die niet uitgevoerd worden op object; - illustratie met voorbeelden. Klassenmethodes - instantiemethodes - worden aangeroepen zonder een instantie, alleen de klasse volstaat. final - waarde mag niet meer veranderen Overerving - mechanisme waarmee gedupliceerde code kan worden vermeden. (klasse wordt gedefinieerd als uitbreiding van andere klasse. Subtypen/klassen/toekeningen _-> p 294-295 Substitutie Subtypeobjecten kunnen gebruikt worden wanneer er objecten van een supertype verwachtenworden. = substitutie Polymorfe variabelen Variabelen die objecttypes bevatten. De term polymorf slaat op het feit dat een variabele objecten van verschillende types kan bevatten (subtype of supertype). Casten Als men weet dat supertype subtypeobject bevat, kan mbv castoperator toch worden opgeslagen. Bvb Animal jos = new wolf(…); wolf Dadwolf = (wolf) jos; Statisch/Dynamische type Het gedeclareerde type van de variabele = statische type (want is gedeclareerd in de broncode) Type dat is opgeslagen in een variabele = dynamische type (afhankelijk van toekenning tijdens uitvoering programma). bvb. Vehicle v1 := new Car(); (Hierbij is Car subklasse van Vehicle) statische type van v1 is Vehicle. dynamische type van v1 is Car Bij controleren van type (in compiler) wordt statische type gebruikt, bij het uitvoeren worden methodes dynamische type gebruikt. Polymorfisme van methodes methodeaanroepen in Java zijn polymorf. Dezelfde methodeaanroep kan op verschillende tijstippen verschillende methodes aanroepen, afhankelijk van het dynamisch type van de gebruikte variabele voor die aanroep. (p 319) Overschrijven: Een subklasse kan de implementatie van een methode overschrijven. Om dat te doen declareert de subklasse een methode met dezelfde signatuur als de superklasse maar met een andere body. Deze nieuwe methode heeft een hogere prioriteit bij methodeaanroepen voor objecten van de subklasse. Objectgelijkheid (p324) Referentiegelijkheid (verwijzen naar zelfde object) == Inhoudelijke gelijkheid equals