Zoals andere klassen hebben controls eigenschappen, methodes en gebeurtenissen. Omdat ze makkelijker te maken zijn, gaan we daar even mee beginnen.
Eén 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
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: 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. Gebruik