Noties Informatica

advertisement
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
Download