Noties Informatica Hoofdstuk 1 Notie Betekenis Object In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst Klasse Een klasse beschrijft de aard van een object Methode Een actie waarmee een object gemanipuleerd wordt. Parameters Zijn de aanvullende informatie die ervoor zorgen dat de methode zijn taak goed uitwerkt *bestaat zoland de methode uitgevoerd wordt Type Bevat het soort data, maar niet de waarde Velden Zijn de eigenschappen van een object *bestaan zolang het object leeft Toestand Waarden die de velden van een object bevatten Compiler De compiler zet een hogere programmeertaal om in machine taal Resultaten (returnwaarde) Waarde die een methode van een object retourneerd Hoofdstuk 2 Notie Betekenis Constructor Deel van de broncode die het object aanmaakt (altijd zelfde naam als klasse) Bereik van variabele Is het deel van de broncode vanwaar de variabele kan worden benaderd Toekenningsstatement Regel die met een “=” de rechterwaarde opslaat in de variabele die genoemd word aan de linkerkant Formele parameter Naam in definitie van methode (vb “ticketkost”) Actuele parameter Doorgegeven waarde (vb “500”) Accessor methode Vraagt informatie op over toestand van object Mutator methode Wijzigt de toestand van een object Lokale variabele Een variabele die enkel binnen een methode bestaat. *bestaat zolang de methode uitgevoerd wordt Hoofdstuk 3 Notie Betekenis Abstractie Details negeren en het groter beeld oplossen Modularisatie Complex probleem opsplitsen in kleinere problemen Object type Als een variabele verwijst naar een feitelijk object Primitief type Als een variabele feitelijke data bevat Klassendiagram Diagram dat de klassen bevat van een toepassing en hun onderlinge relaties Objectdiagram Diagram dat de objecten en hun onderlinge relaties op een bepaald moment tijdens de uitvoering van een toepassing toont. Overlading Als een klasse meer dan een constructor of meer dan een methode met dezelfde naam bevat, maar met andere parameters Interne methodeaanroep Een methode roept een andere methode van de zelfde klasse aan Externe methodeaanroep Een methode roept een methode van een ander object aan met behulp van puntnotatie (vb “hours.increment()”) Hoofdstuk 4 Notie Betekenis Collectieobject Object die een willekeurig aantal andere objecten kan bevatten (vb “ArrayList”) Lus En implementatie die kan worden gebruikt om een reeks statement steeds opnieuw uit te voeren Eigenschappen while-lus • • • • Eigenschappen for-each-lus • Itereert over ALLE elementen van een collectie • kan alleen voor collecties gebruikt worden Eigenschappen for-lus • Handig als je weet hoeveel keer je moet itereren • Handig als je een lusteller wilt • Een paar elementen wil verwijderen: for-lus met iterator Iterator Object waarmee alle elementen van een collectie bekeken kunnen worden Hoeft niet gerelateerd te zijn aan een collectie Hoeft niet elk element te behandelen Geen expliciete index Alle elementen wil verwijderen: while-lus + iterator Notie Betekenis Casten Objecten omzetten in objecten van andere types Anonieme objecten Objecten zonder naam Array Type collectie waarin een onveranderlijk aantal elementen kan worden opgeslagen (vb “int[] hourcounts = new int[24]” van 0 tot 23) • elementen van een array gedragen zich als variabelen (vb “hourcounts[3]-2”) Hoofdstuk 5 Notie Betekenis Java-bibliotheek Bibliotheek dat veel handige klassen bevat Documentatie Bevat informatie over alle klassen in de bibliotheek(constructor, methodes,...), maar niet de implementatie Import-commando Regel die aangeeft welke bibliotheken we gebruiken Onveranderlijke objecten Inhoud of toestand van object niet veranderd kan worden (vb “String”) Map Collectie van paren {sleutel, waarde} Set Collectie waarin elk afzonderlijk element maar één keer opgeslagen kan worden, en heeft geen bepaalde volgorde Acces-modifier Sleutelwoord dat de zichtbaarheid van een veld, constructor of methode definieert. (public >< private) Informatie verbergen Principe dat zegt dat interne informatie van een klasse onzichtbaar moet zijn voor andere (beter voor modularisatie) Static Sleutelwoord dat een klassevariabele definieerd Klassenvariabele Een klasse variabele wordt maar een keer aangemaakt, onafhankelijk van het aantal instanties. Hoofdstuk 6 Notie Betekenis Syntax errors Fouten tegen de grammatica van de taal -> Compiler Logic errors Fouten tegen de logische uitvoering of bugs -> Meestal onduidelijk waar ze vandaan komen Notie Betekenis Testen Zien of er fouten aanwezig zijn Debuggen Zoeken waar de fout is (plaats oorzaak niet altijd plaats fout) en corrigeren Assertion Expressie voor een voorwaarde waarvan we verwachten dat die waar is Hoofdstuk 7 Notie Betekenis “Change or Die” Constant software aanpassen, dus kwaliteit code is verreist: Coupling en Cohesie Coupling (afhankelijkheid) Onderlinge verbondenheid. Als afhankelijkheid sterk is, moeten aanpassingen aan klasse 1 ook toegepast worden aan klasse 2. We streven naar een ZWAKKE afhanklijkheid Cohesie Beschrijft hoe goed een stuk code verwijst naar een logische taak. Sterke cohesie betekend dat elk stukje code verantwoordelijk is voor EEN goed afgebakende zaak (hoeveel taken krijgt de methode te verwerken?) Klassencohesie/Methodecohesie Refactoring • Klasse opnieuw bekijken en herschrijven om Cohesie te verhogen en afhankelijkheid te verlagen • Klasse opsplitsen in 2 of meerdere klassen • Methodes opsplitsen “Extreme programming” Met twee aan computer, Alle code heeft unit tests, Hoofdstuk 8 Notie Betekenis Overerving Structuur waarmee een klasse wordt gedefinieerd als een uitbreiding van een andere klasse Superklasse Klasse die uitgebreid wordt door een andere klasse Subklasse Klasse die een uitbreiding is (erft alle velden en methodes van de superklasse) Substitutie/Polymorphisme Objecten van subklassen kunnen worden gebruikt waar een superklasse verwacht wordt Polymorphisme Een variabel object kan verschillende types bevatten Hoofdstuk 9 Overerving tip : een subklasse erft over van een superklasse, maar de superklasse weet niks van zijn subklassen. (vb: “klasse Item met CD en DVD als subklassen. De klasse Item kan geen methode bevatten die afprint of het een CD of DVD is. Die methode moet in elk van de subklassen geïmplementeerd worden. Maar ook in superklasse! Beide methodes hebben dezelfde signatuur, en de methode van de superklasse voldoet aan de statische type-check, maar de subklasse versie wordt opgeroepen tijdens uitvoering”) Notie Betekenis Statische type Type zoals het gedeclareerd is in het declaratie statement van een variabele (vb: “Vehicle v1 = new Car(), statische type is Vehicle”) Dynamische type Type van het object dat opgeslagen is in de variabele (vb: “Vehicle v1 = new Car(), dynamische type is Car”) Overriding Zie “Overerving tip” boven • Overriding heeft altijd voorrang: machine zoekt eerst de methode in de klasse van de variabele, indien niet gevonden zoekt hij in zijn superklasse. Tot er geen superklassen meer zijn. Polymorfisme van methodes Methodeaanroepen in Java zijn polymorf. Dezelfde methodeaanroep kan op verschillende tijdstippen verschillende methodes aanroepen, afhankelijk van het dynamische type van de gebruikte variabele van die aanroep (vb: “in een for-each-lus van Vehicles, eens word de gewenste methode toegepast op een Car, eens op een Fiets. De methode kan in elk van die subklassen iets anders uitvoeren”) PROTECTED acces-modifier Betekend enkel zichtbaar voor subklassen Hoofdstuk 10 Notie Betekenis Abstracte Methode Signatuur van een methode zonder body (en sleutelwoord “abstract” staat ervoor. Het stuurt de methode door naar een subklasse Abstracte Klasse Klasse die niet bedoeld is om instanties van te maken, maar die als superklasse dient. Multiple Inherritance Situatie waarin een klasse van meerdere superklassen overerft. Wordt niet geaccepteerd in java, buiten voor interfaces Notie Interface Betekenis Specificatie voor een type (typenaam en een stel methodes) die geen implementatie voor de methode definieert. (vb: “public class callbackhandler implements CallBackHandler” :p”) => maakt meer eenvoudige overerving en is dus de voorkeur als de superklasse geen methodes moet implementeren Hoofdstuk 12 Notie Betekenis Exception Object dat informatie geeft over programmafout (word opgegooid en stopt de methode). Als het niet opgevangen wordt door en client stopt het programma. Ongecontroleerde exceptions Exceptions waarvoor geen controles van de compiler nodig zijn Gecontroleerde Exceptions Exceptions waarvoor wel controles van de compiler nodig zijn. Hier eist Java het gebruik van throwsclausules en try-blokken Exception-Handler Programmacode die statements bewaakt waarin een exception kan worden opgegooid Assertion (zie HS6) Bewering die bij normale uitvoering van het programma waar moet zijn (word gebruikt om fouten op te sporen gemakkelijker te maken) Hoofdstuk 13 Notie Betekenis CRC kaart Class - Responsabilities - Collaborators Diagram waarop deze elementen worden verduidelijkt (naam, methodes en klassen waarmee hij samenwerkt) Scenario (use-case) Geval dat wordt gebruikt om de interacties in een systeem inzichtelijker te maken Prototype Versie van een systeem waarin sommige functies nog niet volledig zijn (en gesimuleerd worden) Design Pattern Combinatie van een omschrijving van vaak voorkomende automatiseringsprobleem Aanvullingen Algoritmes Notie Betekenis Correctheid Formeel aan tonen van de juistheid van een algoritme. Het moet voldoen aan een aantal eigenschappen (meestal verband tussen invoer en resultaat, plus de eindigheid) Tijdscomplexiteit Bepaalt hoe de uitvoeringstijd zich verhoud tot de grootte van de invoer Ruimtecomplexiteit Bepaalt het geheugenverbruik Testen Uitstekende manier om fouten op te sporen, maar niet om de correctheid te bewijzen (vinden van een tegenvoorbeeld). Testen hebben meestal als eigenschap dat het programma een aantal keer dient uitgevoerd te worden Preconditie Een preconditie is een voorwaarde waaraan moet voldaan zijn vooraleer een welbepaald stuk code mag uitgevoerd worden. Postconditie Een postconditie is een voorwaarde waaraan zeker voldaan is nadat een stuk code werd uitgevoerd. Invariant Een invariant is een conditie waaraan op een bepaalde plaats in het programma steeds voldaan is. => Moet STEEDS waar zijn. (bv voor een lus: moet juist zijn voor de lus, en na elke opeenvolging van de lus) Extras • If tests: Boolean true of false of : < > <= >= == != && = logische “en” || = logische “of” ! = logische negatie !Valstrik!: Strings vergeleken met == is onbetrouwbaar. Gebruik “equals” • Polymorphisme: soms is een variabele van type veranderd, maar heeft de compiler het niet door. Het nieuwe type tussen haakjes zetten kan soms helpen: Vehicle c; Car c = new Car(); v=c; //correct c=v; //fout c = (Car) v; // OK