Zoals andere klassen hebben controls eigenschappen, methodes en gebeurtenissen. Omdat ze makkelijker te maken zijn, gaan we daar even mee beginnen.
Een aandachtspuntje: van zodra je de control gemaakt hebt, verschijnt hij in de Toolbox. Je moet echter compileren voor je hem ook effectief kan gebruiken in je programma.
Als voorbeeld nemen we een eenarmige bandiet, een gokspel waarbij een aantal figuren willekeurig worden getoond. De speler wint als er drie keer dezelfde tekening wordt getoond. Zie verder hier.
Andere voorbeelden:
Alles in VB .NET zijn klassen. We stellen hieronder enkele noties van objectoriëntatie voor:
Encapsulatie
Gegevens en code worden ingepakt één klasse, en onzichtbaar maken wat niet gezien moet worden
Velden
Velden zijn gegevens (variabele, integer, string, ...) die deel uitmaken van een klasse. Ze kunnen min of meer publiek toegankelijk zijn.
Public Class MijnKlasse Public
intVeld as Integer 'publiek toegankelijk Meestal werkt men met eigenschappen. Eigenschappen Eigenschappen zijn waarden
die kunnen opgevraagd of ingesteld worden.
De syntaxis ziet er als volgt uit: [Readonly] Property name As
type De editor maakt onmiddellijk het Get
/ Set paar
aan. Soms willen we niet dat de eigenschap kan ingesteld of
afgelezen worden: de leeftijd moet berekend worden, die
kunnen we niet laten instellen. Uit dit voorbeeld blijkt ook
onmiddellijk dat er soms bereking
moet gebeuren vlak voor het opvragen.
Soms
moet er ook een controle gebeuren
bij het instellen van eigenschap: de zijde van
een vierkant kan niet negatief zijn, bij voorbeeld. Constructoren Constructoren zijn stukjes code om object te
initialiseren. Ze kunnen een parameter hebben. Ze worden gebruikt om
bv. noodzakelijke eigenschap in te stellen die nadien niet meer kan
veranderen, zoals de naam of geboortedatum van een persoon. Methodes Een methode is een stukje code dat je
kan oproepen via een klasse of uitvoeren op
een object van die klasse. Bijvoorbeeld: een klasse mens
waarin je die mens zijn naam laat zeggen. Functioneel kan men twee types onderscheiden:
Functies geven iets terug, Subs
geven niets terug. Events / Gebeurtenissen Er gebeurt iets in een klasse, en dan kan een ander stuk van
het programma iets ondernemen. Dat kan door een event.
Verlies niet uit het oog dat zo'n event moet gedeclareerd worden aan
het begin van de klasse. Een ander voorbeeld zou kunnen zijn het wijzigen
van een waarde, of de verjaardag van een persoon. Om zo'n gebeurtenis in je programma te kunnen
gebruiken (om er code voor te kunnen schrijven) als je zo'n klasse
gebruikt, moet je een object (instantiatie) van die klasse declareren
in de algemene sectie de klasse van het formulier (buiten een Sub,
dus),
Daarna vind je het object (met zijn naam) en zijn
gebeurtenissen in de werkomgeving.
Dim WithEvents t As New
Timer Op een klasse kan je ook operatoren defini&;ren. We
hebben een voorbeeldje uitgewerkt met breuken. Inheritance / overerving Een klasse kan van een andere overerven, en neemt dan de
eigenschappen, events en methoden over Ze kan die uitbreiden.
Bijvoorbeeld: dier heeft een naam, en een kat
heeft ook
specifiek geluid. Public Class childclass
: Inherits baseclass
Eigenschappen, methodes en events worden overgenomen.
Constructoren moet je nog eens extra oproepen. Een voorbeeld: dier
heet bij verstek
"beestje", kat
heet bij verstek "poes"
en heeft als geluid "miauw". Overloading Je kan een klasse twee methoden hebben met
dezelfde naam maar een andere signatuur (type van terugkeerwaarde,
aantel en type van parameters). Een klassiek voorbeeld is een
constructor met en zonder parameter. Op die manier kan je een
verstekwaarde geven: Interfaces Interfaces zijn klassen zonder code die niets meer doen dan
een framewerk defini�ren. Klassen kunnen zo'n Interface overerven en
invullen. Het resultaat zijn een aantal klassen die op dezelfde manier
werken - die dezelfde interface hebben. Een en ander kunnen we toelichten met deze code: Namespaces Namespaces zijn ruimten
waarbinnen klassen gedefinieerd kunnen worden.
Er ontstaan geen conflicten tussen
verschillende namespaces. Namespace eerste Namespace tweede Je kan een namespace importeren aan het begin van
een module / klasse. Imports
Microsoft.VisualBasic.Constants Je kan de klassen
in actie zien en het
project downloaden. De klassen met * zijn niet inbegrepen en
kan je apart downloaden. Je kan de controls
in actie zien en het project
downloaden. De controls met * zijn niet inbegrepen en kan je
apart downloaden. Wat kan je met die klassen en controls doen?
Friend strVeld as String 'zichtbaar in deze assembly
Private blnVeld as Boolean 'zichtbaar in deze klasse
Protected strAnderVeld as Boolean 'zichtbaar in deze klasse en
afgeleide (overge�rfde) klassen
Soms moet je dit ook gebruiken om een default waarde (verstekwaarde) in
te stellen. Bij breuken bijvoorbeeld is het belangrijk dat de teller op
1 staat van bij het begin, want anders kan er een deling door nul
gebeuren.

Public Class test
'...
End Class
End Namespace
Public Class test
'...
End Class
End NamespaceVoorbeelden / oefeningen
Een persoon heeft een naam, geboortedatum,
geslacht, leeftijd.
Van een jaar berekenen we of het een
schrikkeljaar is, de eeuw, en de weekdag waarop Kerstmis valt.
In graden C of F.
Je kan zien dat het werken met klassen het programmeren een stuk
eenvoudiger kan maken.
Een vierkant heeft een zijde, oppervlakte,
omtrek.
Een breuk heeft een teller,
noemer, waarde. We moeten vereenvoudigen als teller en
noemer door hetzelfde getal deelbaar zijn.
Variant op de vorige toepassing. Geen vereenvoudiging meer, maar je
moet kunnen optellen bij de teller (het behaald aantal punten) en bij
de noemer (het maximum van de te verdienen punten).
Een belegging heeft een waarde, een percentage (eigenschappen) en een
vervaldag waarop de intrest wordt bijgeteld. Indien het een belegging
in euro is, is de waarde in BEF alleen-lezen.
We gaan rekenen met graden in een .NET klasse. We voorzien de waarde in
graden en radialen, en de eigenschappen sinus, cosinus en tangens. We
voorzien ook de mogelijkheid om bij een hoek een andere hoek op te
tellen, vereenvoudiging (geen negatieve hoeken, geen hoeken groter dan
360°) en de weergave met minuten en seconden.
Je kan in VB uren tellen, maar uren zijn daar delen van een dag. We
bouwen een klasse om met uren te rekenen en uren weer te geven met
minuten en seconden.
Een getal heeft een decimale en een binaire notatie. Maar eens de
binaire notatie gefinieerd is, kan je rekenen in het binair.Gebruik