Frans, Roger Visual Basic.NET 2/2 / Roger Frans; Geel: Campinia Media vzw, 2004; 231 p; index; 25,5 cm; gelijmd. ISBN: 90.356.1192.6; NUGI 854; UDC 681.3.06 Wettelijk depot België: D/2004/3941/9 Campinia Media vzw Kleinhoefstraat 4 B 2440 GEEL (Belgium) Tel.: (+32) 014/59 09 59 Fax: (+32) 014/59 03 44 e-mail: <info@campiniamedia.be> URL: <www.campiniamedia.be> Copyright 2004: No part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher. Niets uit deze uitgave mag worden verveelvoudigd en/of openbaar gemaakt door middel van druk, fotokopie, print, microfilm of op welke andere wijze ook, zonder voorafgaande schriftelijke toestemming van de uitgever.
Inleiding Visual Basic.NET is een objectgeoriënteerde programmeertaal. De basiselementen van de programmeertaal zijn de begrippen klasse en object. De taal ondersteunt inkapseling (encapsulation), enkele overerving (inheritance) en polymorfisme (polymorphism). Het zijn noodzakelijke voorwaarden om te kunnen spreken van een volwaardige objectgeoriënteerde programmeertaal. En Visual Basic.NET is nu een volwaardige objectgeoriënteerde programmeertaal. In het eerste deel Leren programmeren in Visual Basic.NET 1/2 hebben we de begrippen klasse en object intuïtief aangebracht. We hebben in dat deel niet de klemtoon gelegd op het objectgeoriënteerd programmeren maar op de structuren die in elke programmeertaal worden gebruikt. Dit tweede deel van de cursus vertrekt van objectgeoriënteerd programmeren en illustreert de verschillende principes van objectgeoriënteerd programmeren in Visual Basic.NET, bv. aanmaken van eigen klassen, overerving en polymorfisme. We gaan in dit deel ook in op gegevensstructuren, het werken met bestanden, interactie met andere programma s, We gebruiken in deze cursus de geïntegreerde ontwikkelomgeving Visual Studio.NET 2003 met het.net Framework 1.1. Indien u een oudere versie van Visual Studio.NET hebt, kunnen sommige schermen lichtjes anders zijn. Net als het eerste deel is dit een doe-boek. U leert de materie terwijl u voor de computer zit. U werkt de voorbeelden mee uit en u maakt de oefeningen. Het is geen leesboek, ook geen manual Bij de cursus hoort een cd-rom. Op deze cd-rom vindt u in de map VbNet2_Vbn bestanden die u nodig hebt om de voorbeelden en oefeningen te kunnen uitwerken. U kopieert de map best naar de harde schijf. De voorbeelden uit de verschillende hoofdstukken staan in deze map VbNet2_Oef op de cd-rom. Op de cd-rom bevindt zich ook een bestand Lees mij.doc met last minute informatie. U kunt de inhoud van het bestand lezen door te dubbelklikken op het bestand. Ik hoop dat u na deze cursus de.net-microbe te pakken hebt en dat u verder duikt in de wereld van programmeren én.net. Indien u opmerkingen hebt die een latere uitgave kunnen verbeteren, kunt u die steeds kwijt aan de auteur. Roger Frans november 2004 Inleiding - 1
2 Leren programmeren in Visual Basic.NET 2/2
Inhoudsopgave INLEIDING...1 INHOUDSOPGAVE...3 1 OOP EN.NET...9 1.1 Inleiding... 9 1.2 Kwaliteit van een programma... 9 1.2.1 Correctheid en bruikbaarheid... 10 1.2.2 Robuustheid... 10 1.2.3 Portabiliteit... 10 1.2.4 Leesbaarheid en uitbreidbaarheid... 10 1.2.5 Modulariteit... 11 1.2.6 Efficiëntie... 11 1.2.7 Herbruikbaarheid... 11 1.3 Objectgeoriënteerd programmeren... 11 1.3.1 Een voorbeeld uit het echte leven... 11 1.3.2 Klasse (class)... 12 1.3.3 Object (object)... 12 1.3.4 Berichten... 13 1.3.5 Encapsulation... 13 1.3.6 Inheritance... 14 1.3.7 Polymorphism... 14 1.4 De visie.net... 14 1.5 Overzicht van het.net Framework... 15 1.5.1 Het.NET Framework... 15 1.5.2 Visual Studio.NET... 15 1.5.3 Schema van het.net Framework... 16 1.5.4 Programmeertalen in.net... 16 1.5.5 Toepassingen en gegevens... 17 1.5.6 Base Framework Classes... 17 1.5.7 Common Language Runtime... 18 1.6 Het.Net Compact Framework... 19 1.7 Namespaces... 19 1.8 Assembly... 20 1.9 Toepassingen in.net en Visual Studio.NET... 20 1.10 Oefeningen... 22 2 EIGEN KLASSEN AANMAKEN...23 2.1 Inleiding... 23 2.2 Option Explicit en Option Strict... 23 2.2.1 Option Explicit On... 23 2.2.2 Option Strict On... 23 2.2.3 Aanmaken van een project en de opties instellen... 23 2.3 Het voorbeeld Gebruiker01... 24 2.3.1 Probleemdefinitie... 24 2.3.2 Probleemanalyse... 25 2.4 Een klasse toevoegen aan een project... 25 2.5 Value Types en Reference Types... 26 2.5.1 Value type en reference type... 26 2.5.2 Refereren naar een reference type... 26 2.5.3 Eigenschappen en methoden... 29 2.6 Aanmaken van de klasse Gebruiker()... 29 2.6.1 Programmacode... 29 2.6.2 Instantievariabelen... 30 2.6.3 Methoden en constructor... 30 2.6.4 De andere methoden... 31 Inhoudsopgave - 3
2.7 Oproepen van de methoden van de klasse...32 2.8 Literals...34 2.9 Naamgeving...34 2.10 Eigenschappen (Properties)...35 2.10.1 Probleemstelling...35 2.10.2 Property-methode...36 2.10.3 Aanpassen voorbeeld...36 2.10.4 De eigenschappen ReadOnly en WriteOnly...37 2.11 Overloading...38 2.11.1 Methode overloading in een klasse van het framework...38 2.11.2 Methode overloading...38 2.11.3 Constructor overloading...40 2.12 Me...40 2.13 Het formulier als klasse...41 2.14 Enkele functies...42 2.15 Debuggen...42 2.16 Oefeningen...43 3 ARRAYS EN ZOEKMETHODEN... 45 3.1 Declaratie van een array...45 3.2 Een voorbeeld ter opfrissing...46 3.2.1 Probleemdefinitie (Array01)...46 3.2.2 Probleemanalyse...46 3.2.3 Schema...46 3.2.4 Bronprogramma en korte bespreking...46 3.2.5 Aanmaken van het project...47 3.2.6 Argumenten van event-handlers...48 3.3 Een keuzelijst...49 3.4 Arrays en procedures...49 3.4.1 Probleemdefinitie (Array02)...49 3.4.2 Probleemanalyse en schema...50 3.4.3 Bronprogramma en korte bespreking...50 3.4.4 Aanmaken van het project...52 3.5 For Each/Next...52 3.6 De methode ToString()...52 3.7 Inlezen van een array m.b.v. een invoervenster...53 3.7.1 Probleemdefinitie (Array03)...53 3.7.2 Bronprogramma...53 3.8 Zoeken in een (niet gesorteerde) array...54 3.8.1 Probleemdefinitie (Zoeken01)...54 3.8.2 Analyse...55 3.8.3 Schema...55 3.8.4 Bronprogramma...56 3.8.5 Ontwerp van het formulier...57 3.9 Willekeurige getallen...57 3.10 Sorteren van een array...58 3.10.1 Probleemdefinitie (Array04)...58 3.10.2 Bronprogramma...58 3.10.3 Een lijst sorteren...59 3.11 Binaire zoekmethode in een gesorteerde array...59 3.11.1 Probleemdefinitie (Zoeken02)...59 3.11.2 Probleemanalyse...59 3.11.3 Schema...60 3.11.4 Bronprogramma...61 3.11.5 Ontwerp van het formulier...62 3.12 Oefeningen...62 4 SORTEERALGORITMEN... 65 4.1 Inleiding...65 4.2 Omwisselen van de waarden van twee variabelen...65 4 Leren programmeren in Visual Basic.NET 2/2
4.2.1 Probleemdefinitie (Wisselen01)... 65 4.2.2 Probleemanalyse... 65 4.2.3 Schema... 66 4.2.4 Bronprogramma... 66 4.3 Sorteren van een array met de selectiemethode... 67 4.3.1 Sorteren van een array (Sorteren01)... 67 4.3.2 Probleemdefintie... 67 4.3.3 Probleemanalyse... 67 4.3.4 Schema... 68 4.3.5 Bronprogramma... 68 4.3.6 Ontwerp van het formulier... 69 4.4 Sorteren met het algoritme Bubble Sort... 70 4.4.1 Bubble Sort... 70 4.4.2 Probleemdefinitie (Sorteren02)... 71 4.4.3 Bronprogramma... 71 4.5 Recursie... 73 4.5.1 Recursie... 73 4.5.2 Probleemdefinitie (Recursie01)... 73 4.5.3 Uitwerking... 73 4.6 Quicksort... 74 4.6.1 Probleemdefinitie (Sorteren03)... 74 4.6.2 Probleemanalyse... 75 4.6.3 Bronprogramma... 76 4.7 Oefeningen... 79 5 WERKEN MET MEERDERE FORMULIEREN...81 5.1 Inleiding... 81 5.2 Een eenvoudig voorbeeld... 81 5.2.1 Probleemdefinitie (MeerFormulieren01)... 81 5.2.2 Uitwerking... 81 5.3 Uitwisselen van gegevens... 83 5.3.1 Probleemdefinitie... 83 5.3.2 Menustructuur... 84 5.3.3 Ontwerpen van het formulier FrmOefenen... 85 5.3.4 Ontwerpen van het formulier FrmWoorden... 85 5.3.5 Uitwerking van het formulier FrmWoorden... 86 5.3.6 Uitwerking van het formulier FrmOefenen... 87 5.3.7 Uittesten van het formulier... 89 5.4 Dialoogvensters... 89 5.4.1 Probleemdefinitie (MeerFormulieren03)... 89 5.4.2 Uitwerking van het project... 89 5.5 Gebeurtenissen bij formulieren... 91 5.5.1 Load... 91 5.5.2 Activate en Deactivate... 91 5.5.3 Close... 92 5.5.4 Resize... 93 5.6 Oefeningen... 93 6 SEQUENTIËLE BESTANDEN...97 6.1 Inleiding... 97 6.2 Sequentiële bestanden... 97 6.3 Records met velden met een vaste breedte... 98 6.3.1 Probleemdefinitie (Sequentieel01)... 98 6.3.2 Bronprogramma... 99 6.4 Lezen en schrijven van een sequentieel bestand... 101 6.4.1 Probleemdefinitie (Sequentieel02)... 101 6.4.2 Bronprogramma... 102 6.5 Stringfuncties... 105 6.5.1 Substring()... 105 6.5.2 PadLeft() en PadRight()... 105 6.5.3 IndexOf()... 106 Inhoudsopgave - 5
6.5.4 Trim(), TrimLeft(), TrimEnd()...106 6.5.5 Remove()...106 6.5.6 Insert()...106 6.6 De klassen FileReader, StreamReader en StreamWriter...106 6.6.1 Methoden van de klasse StreamReader...107 6.6.2 Methoden van de klasse StreamWriter...107 6.7 Bijkomend voorbeeld...108 6.7.1 Probleemdefinitie (Sequentieel03)...108 6.7.2 Bronprogramma en korte bespreking...108 6.7.3 Illustratie van de eigenschap Anchor...109 6.8 Tekstbestanden met items gescheiden door een komma...110 6.8.1 Probleemdefinitie (Sequentieel04)...110 6.8.2 Bronprogramma...111 6.9 FreeFile()...113 6.10 OpenFileDialog Control en SaveFileDialog Control...113 6.10.1 Klasse of control...113 6.10.2 Probleemdefinitie (Sorteren03)...113 6.10.3 Bronprogramma...116 6.11 Oefeningen...119 7 GEGEVENSSTRUCTUREN IN.NET... 123 7.1 Inleiding...123 7.2 Een enumerated type...123 7.2.1 Probleemdefinitie (Enum01)...123 7.2.2 Probleemanalyse...124 7.2.3 Bronprogramma...124 7.3 Voorbeeld Enum02...125 7.3.1 Probleemdefinitie...125 7.3.2 Probleemanalyse...126 7.3.3 Bronprogramma...126 7.3.4 Afdrukken stringwaarden van enumeratielijst...128 7.4 Een structuur...128 7.4.1 Wat is een structuur?...128 7.4.2 Aanmaken van een structuur...129 7.4.3 Voorbeeld van een structuur...129 7.5 ArrayList...131 7.5.1 Collecties...131 7.5.2 Probleemdefinitie (Collecties01)...131 7.5.3 Bronprogramma...132 7.5.4 Probleemdefinitie (Collecties02)...134 7.5.5 Bronprogramma...135 7.5.6 Meer informatie over een ArrayList...136 7.6 Collecties...136 7.6.1 Probleemdefinitie (Collecties03)...137 7.6.2 Bronprogramma...137 7.7 De collectie Controls...140 7.7.1 Probleemdefinitie (Collecties04)...140 7.7.2 Bronprogramma...141 7.7.3 Het type van het besturingselement...142 7.8 Oefeningen...142 8 OVERERVING... 145 8.1 Inleiding...145 8.2 Een afgeleide klasse...146 8.3 Een voorbeeld van overerving...146 8.3.1 Probleemdefinitie (Overerving01)...146 8.3.2 De klasse Punt()...146 8.3.3 Testprogramma...147 8.3.4 De klasse Cirkel...148 8.3.5 Testprogramma...150 8.4 Member access modifiers...150 6 Leren programmeren in Visual Basic.NET 2/2
8.5 Overridable en Overrides... 151 8.6 De klasse System.Object... 152 8.7 Visuele overerving... 153 8.7.1 Probleemdefinitie (Overerving03)... 153 8.7.2 Uitwerking... 153 8.8 Oefeningen... 155 9 POLYMORFISME, ABSTRACTE KLASSEN, INTERFACES...159 9.1 Inleiding... 159 9.2 Polymorfisme... 159 9.2.1 Interface polymorfisme... 159 9.2.2 Methode overloading is een vorm van polymorfisme... 160 9.2.3 Inheritance polymorfisme... 160 9.3 Polymorfisme, een voorbeeld... 160 9.3.1 Probleemdefinitie (Polymorfisme01)... 160 9.3.2 Uitwerking van het voorbeeld... 160 9.3.3 Exceptions... 164 9.4 Abstracte klassen... 164 9.4.1 Polymorfisme en abstracte klassen (Polymorfisme02)... 165 9.4.2 Uitwerking... 165 9.5 Interfaces... 172 9.6 Oefeningen... 175 10 INTERACTIE MET ANDERE APPLICATIES...177 10.1 Inleiding... 177 10.2 Automation... 177 10.3 De object browser... 177 10.4 Interactie met Excel... 180 10.4.1 Probleemdefinitie (Interactie01)... 180 10.4.2 Bronprogramma... 180 10.5 Gegevens lezen uit Excel... 182 10.5.1 Probleemdefinitie (Interactie02)... 182 10.5.2 Bronprogramma... 182 10.6 Interactie met Word... 184 10.6.1 Probleemdefinitie (Interactie03)... 184 10.6.2 De Word-sjabloon voorbereiden... 185 10.6.3 Uitwerking van het project... 186 10.7 Windows-toepassingen starten... 187 10.7.1 Probleemdefinitie (Starten01)... 187 10.7.2 Bronprogramma... 188 10.8 Oefeningen... 188 11 DATABASES...191 11.1 Inleiding... 191 11.2 Een databasesysteem... 191 11.3 De voorbeelddatabase TijdArtGeg... 192 11.3.1 De tabel tbltijdschriften... 192 11.3.2 De tabel tbltijdschriftartikelen... 192 11.3.3 De tabel tbltrefwoorden... 193 11.3.4 De tabel tbltijdschriftartikelentrefwoorden... 194 11.4 SQL... 194 11.4.1 Eenvoudige SELECT-query... 195 11.4.2 SELECT met WHERE-clausule... 195 11.4.3 SELECT met ORDER BY-clausule... 196 11.4.4 INNER JOIN... 196 11.4.5 Het INSERT-statement... 197 11.4.6 Het UPDATE-statement... 197 11.4.7 Het DELETE-statement... 197 11.5 ADO.NET... 197 11.6 Connection, DataAdapter, DataSet... 198 Inhoudsopgave - 7
11.6.1 Het Connection-object...198 11.6.2 Het DataAdapter-object...199 11.6.3 Het DataSet-object...199 11.7 Tekstvakken gekoppeld aan de velden van een tabel...199 11.7.1 Probleemdefinitie (Databases01)...199 11.7.2 Maken van een connectie met een database...199 11.7.3 Het DataAdapter-obect instellen...203 11.7.4 Instellen van het DataSet-object...206 11.7.5 Verbinding van een tekstvak met een veld uit de database...207 11.7.6 Gegevens in het DataSet-object...208 11.7.7 Navigatietoetsen...209 11.7.8 Uittesten van het formulier...209 11.8 Datagrid...210 11.8.1 Probleemdefinitie (Databases02)...210 11.8.2 Maken van connectie met een database...210 11.8.3 Het DataAdapter-object instellen...210 11.8.4 Instellen van het DataSet-object...211 11.8.5 Toevoegen en instellen van de datagrid...211 11.8.6 Update...212 11.9 Uitbreidingen bij de datagrid...213 11.9.1 Anchor...213 11.9.2 Eigenschappen van het raster...213 11.10 Oefeningen...213 12 EEN PROGRAMMA VERDELEN... 215 12.1 Inleiding...215 12.2 Een assembly...215 12.3 Een deployment-project maken...216 12.3.1 Het voorbeeld...216 12.3.2 Het deployment-project aanmaken...216 12.3.3 Instellingen van het deployment-project...221 12.3.4 De oplossing bouwen (Build)...221 12.4 Installeren van het programma...222 12.4.1 Installeren van het programma...222 12.4.2 Problemen?...224 12.4.3 Starten van het programma...225 12.5 Deïnstalleren van een programma...225 12.6 Het.NET Framework installeren...226 12.7 Oefeningen...226 TREFWOORDENREGISTER... 227 8 Leren programmeren in Visual Basic.NET 2/2