Deel
SYNTRA-WEST
Cursus OOP
Syntra-West
voorheen VORMINGSINSTITUUT VOOR KMO
Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00• Fax 056/22.81.07
i
Inhoudsopgave SYNTRA-WEST............................................................................................................................................................ 0 CURSUS OOP................................................................................................................................................................ 0 JBUILDER X ................................................................................................................................................................. 0 0.
INLEIDING.......................................................................................................................................................... 2 0.1 0.2 0.2.1 0.2.2 0.2.3 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.5
1.
OBJECTEN EN KLASSEN ................................................................................................................................ 8 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10
2.
OBJECT GEORIËNTEERDE PROGRAMMEERTALEN............................................................................................... 3 GEGROEID UIT 3DE GENERATIE ......................................................................................................................... 3 Visual Basic............................................................................................................................................... 3 C++........................................................................................................................................................... 3 Delphi ........................................................................................................................................................ 3 PURE OBJECT GEORIËNTEERDE TALEN .............................................................................................................. 3 Smalltalk.................................................................................................................................................... 3 Java ........................................................................................................................................................... 4 C# .............................................................................................................................................................. 4 VB.Net........................................................................................................................................................ 4 GESCHIEDENIS .................................................................................................................................................. 5 CURSUS INLEIDING ........................................................................................................................................... 6
OBJECTEN EN KLASSEN ..................................................................................................................................... 8 OBJECTEN CREËREN.......................................................................................................................................... 8 METHODES AANROEPEN ................................................................................................................................... 9 PARAMETERS .................................................................................................................................................. 10 DATATYPES .................................................................................................................................................... 10 VERSCHILLENDE INSTANTIES .......................................................................................................................... 11 TOESTAND ...................................................................................................................................................... 11 WAT ZIT ER IN EEN OBJECT ?........................................................................................................................... 12 INTERACTIE TUSSEN OBJECTEN ....................................................................................................................... 13 BRONCODE ..................................................................................................................................................... 14
KLASSEDEFINITIES....................................................................................................................................... 16 2.1 2.1.1 2.2 2.3 2.3.1 2.3.2 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15
KAARTAUTOMATEN ........................................................................................................................................ 16 Verkenning van het gedrag van een eenvoudige kaartautomaat............................................................. 16 EEN KLASSEDEFINITIE..................................................................................................................................... 16 VELDEN, CONSTRUTORS EN METHODES .......................................................................................................... 16 Velden...................................................................................................................................................... 17 Constructors ............................................................................................................................................ 19 GEGEVENS GEBRUIKEN MET BEHULP VAN PARAMETERS ................................................................................. 20 TOEKENNINGSSTATEMENTS ............................................................................................................................ 21 ACCESSORMETHODES ..................................................................................................................................... 22 MUTATORMETHODES ...................................................................................................................................... 23 AFDRUKKEN MET BEHULP VAN METHODES ..................................................................................................... 25 SAMENVATTING VAN DE EENVOUDIGE KAARTAUTOMAAT .............................................................................. 26 OVERPEINZINGEN BIJ HET ONTWERP VAN DE KAARTAUTOMAAT..................................................................... 26 KEUZES MAKEN: HET CONDITIONELE STATEMENT .......................................................................................... 26 NOG EEN VOORBEELD VAN EEN CONDITIONEEL STATEMENT........................................................................... 29 LOKALE VARIABELEN ..................................................................................................................................... 29 VELDEN, PARAMETERS EN LOKALE VARIABELEN ............................................................................................ 30 SAMENVATTING VAN DE VERBETERDE KAARTAUTOMAAT .............................................................................. 31
3.
INTERACTIE VAN OBJECTEN .................................................................................................................... 33 3.1 HET KLOKVOORBEELD .................................................................................................................................... 33 3.2 ABSTRACTIE EN MODULARISATIE ................................................................................................................... 33 3.3 ABSTRACTIE IN SOFTWARE ............................................................................................................................. 34 3.4 MODULARISATIE IN HET KLOKVOORBEELD ..................................................................................................... 34 3.5 MET KLOKDISPLAY IMPLEMENTEREN ............................................................................................................. 35 3.6 KLASSEDIAGRAMMEN VERSUS OBJECTDIAGRAMMEN ..................................................................................... 35 3.7 PRIMITIEVE TYPES EN OBJECTTYPES ............................................................................................................... 36 3.8 DE BRONCODE VAN CLOCKDISPLAY............................................................................................................... 38 3.8.1 De klasse NumberDisplay ....................................................................................................................... 38 3.8.2 Aaneenschakelen van strings................................................................................................................... 39 3.8.3 De modulo-operator ................................................................................................................................ 40 3.8.4 De klasse ClockDisplay........................................................................................................................... 40 3.9 OBJECTEN DIE OBJECTEN MAKEN .................................................................................................................... 42 3.10 MEERDERE CONSTRUCTORS ............................................................................................................................ 43 3.11 METHODEAANROEPEN .................................................................................................................................... 44 3.11.1 Interne methodeaanroepen...................................................................................................................... 44 3.11.2 Externe methodeaanroepen ..................................................................................................................... 44 3.11.3 Samenvatting van het klokdisplay ........................................................................................................... 45 3.11.4 Een voorbeeld van een e-mailsysteem ..................................................................................................... 46 3.11.5 Het begrip this........................................................................................................................................ 46
4.
OBJECTEN GROEPEREN .............................................................................................................................. 49 4.1 4.2 4.3 4.3.1 4.4 4.5 4.6 4.7 4.7.1 4.7.2 4.7.3 4.8 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6
5.
OBJECTEN GROEPEREN IN COLLECTIES MET VERANDERLIJKE AFMETINGEN .................................................... 49 EEN ORGANIZER ............................................................................................................................................. 49 EEN KENNISMAKING MET BIBLIOTHEEK KLASSEN ........................................................................................... 49 Een voorbeeld van het gebruik van een bibliotheek.............................................................................. 50 OBJECTSTRUCTUREN MET COLLECTIES ........................................................................................................... 51 NUMMEREN BINNEN COLLECTIES .................................................................................................................... 53 EEN ITEM UIT EEN COLLECTIE VERWIJDEREN .................................................................................................. 53 EEN COMPLETE COLLECTIE VERWERKEN ........................................................................................................ 54 De while-lus............................................................................................................................................. 55 Een collectie doorzoeken......................................................................................................................... 56 Indexnummers versus iteratoren ............................................................................................................. 57 SAMENVATTING VAN HET ORGANIZERVOORBEELD ......................................................................................... 57 COLLECTIES MET EEN VASTE OMVANG ........................................................................................................... 57 Een analyseprogramma voor een logbestand ......................................................................................... 58 Arrayvariabelen declareren .................................................................................................................... 60 Arrayobjecten maken............................................................................................................................... 60 Werken met arrayobjecten....................................................................................................................... 61 Een analyse van het logbestand maken ................................................................................................... 61 De for-lus................................................................................................................................................. 62
GEAVANCEERDERE WERKING ................................................................................................................. 65 5.1 5.2 5.3 5.4 5.5 5.5.1 5.5.2 5.6 5.7 5.8 5.8.1 5.8.2 5.9 5.9.1
DOCUMENTATIE VOOR BIBLIOTHEEKKLASSEN ................................................................................................ 65 KLASSEDOCUMENTATIE LEZEN ....................................................................................................................... 65 GELIJKWAARDIGHEID VAN STRINGS CONTROLEREN ....................................................................................... 67 PACKAGES EN IMPORT .................................................................................................................................... 67 MAPS GEBRUIKEN VOOR KOPPELINGEN .......................................................................................................... 68 Het concept van een map......................................................................................................................... 68 Een HashMap gebruiken ......................................................................................................................... 68 SETS GEBRUIKEN ............................................................................................................................................ 69 STRINGS OPSPLITSEN ...................................................................................................................................... 70 PUBLIC VERSUS PRIVATE ................................................................................................................................ 70 Verbergen van informatie........................................................................................................................ 71 Private methodes en public velden .......................................................................................................... 72 KLASSEVARIABELEN EN CONSTANTEN............................................................................................................ 72 Het begrip static ...................................................................................................................................... 73
5.9.2 6.
Constanten............................................................................................................................................... 74
CORRECT WERKENDE OBJECTEN........................................................................................................... 76 6.1 TESTEN EN DEBUGGEN IN BLUEJ..................................................................................................................... 76 6.1.1 Inspectors gebruiken. .............................................................................................................................. 76 6.1.2 Debuggen in BlueJ .................................................................................................................................. 77 6.1.3 Debuggen in JBuilder.............................................................................................................................. 79
7.
KLASSEN ONTWERPEN ................................................................................................................................ 80 7.1 INLEIDING ....................................................................................................................................................... 80 7.2 INLEIDING TOT AFHANKELIJKHEID EN COHESIE ............................................................................................... 80 7.3 DUPLICEREN VAN CODE .................................................................................................................................. 81 7.4 INKAPSELING GEBRUIKEN OM DE AFHANKELIJKHEID TE VERMINDEREN .......................................................... 81 7.5 ONTWERPEN OP BASIS VAN VERANTWOORDELIJKHEDEN ................................................................................ 82 7.6 WIJZIGINGEN TRACEREN................................................................................................................................. 82 7.7 COHESIE ......................................................................................................................................................... 83 7.7.1 Cohesie van methodes ............................................................................................................................. 83 7.8 HERSCHIKKEN ................................................................................................................................................ 84 7.8.1 Herschikken en testen .............................................................................................................................. 84 7.9 ONTWERPRICHTLIJNEN ................................................................................................................................... 84 7.10 KLASSEMETHODES EN DE MAIN-METHODE NADER BEKEKEN .......................................................................... 85 7.10.1 Klassemethodes ....................................................................................................................................... 85 7.10.2 De methode main..................................................................................................................................... 85 7.10.3 Beperkingen van klassemethodes ............................................................................................................ 85
8.
DE STRUCTUUR VERBETEREN MET OVERERVING (INHERITANCE) ........................................... 87 8.1 8.1.1 8.1.2 8.1.3 8.2 8.3 8.4 8.4.1 8.4.2 8.5 8.6 8.7 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.9 8.9.1 8.9.2 8.9.3 8.10
9.
HET DOME-VOORBEELD ................................................................................................................................ 87 DoME-klassen en -objecten..................................................................................................................... 88 De broncode van DoME.......................................................................................................................... 90 Bespreking van de DoME-toepassing ..................................................................................................... 94 WERKEN MET OVERERVING ............................................................................................................................ 95 OVERERVINGSHIËRARCHIEËN ......................................................................................................................... 96 OVERERVING IN JAVA ..................................................................................................................................... 96 Overerving en toegangsrechten............................................................................................................... 97 Overerving en initialisering .................................................................................................................... 97 DOME: ANDERE SOORTEN ITEMS .................................................................................................................... 99 VOORDELEN VAN OVERERVING (TOT NU TOE) .............................................................................................. 100 SUBTYPES ..................................................................................................................................................... 101 Subklassen en subtypes.......................................................................................................................... 102 Subtypes en toekenningen...................................................................................................................... 102 Subtypes en doorgeven van parameters ................................................................................................ 103 Polymorfe variabelen ............................................................................................................................ 104 DE KLASSE OBJECT ....................................................................................................................................... 104 POLYMORFE COLLECTIES .............................................................................................................................. 105 Elementtypes.......................................................................................................................................... 105 Nog een keer: casten ............................................................................................................................. 106 Wrapperklassen ..................................................................................................................................... 107 DE COLLECTIEHIËRARCHIE ........................................................................................................................... 108
MEER OVER OVERERVING....................................................................................................................... 110 9.1 9.2 9.2.1 9.3 9.4 9.5 9.6 9.7 9.8
HET PROBLEEM: DE METHODE PRINT VAN DOME ......................................................................................... 110 STATISCHE EN DYNAMISCHE TYPES .............................................................................................................. 111 De methode print aanroepen vanuit de klasse database ....................................................................... 112 OVERSCHRIJVEN ........................................................................................................................................... 113 DYNAMISCHE METHODE-LOOKUPS ............................................................................................................... 115 EEN SUPER-AANROEP IN METHODES.............................................................................................................. 117 POLYMORFISME VAN METHODES .................................................................................................................. 118 METHODES VAN DE KLASSE OBJECT: TOSTRING ........................................................................................... 118 AFGESCHERMDE TOEGANG ........................................................................................................................... 120