Objecten en klassen

Tot nog toe is de meeste code zeer praktijk gericht geweest, en hebben we bepaalde (wat meer theoretische) zaken genegeerd. Zo hebben we het wel al over eigenschappen en gebeurtenismethodes gehad, maar hebben we eigenlijk nog niet precies vertelt wat dat zijn en waar ze vandaan komen. Daar gaan we nu verandering in brengen.

Objecten

Alle onderdelen die we tot nog toe hebben gezien, zoals pagina's, server controls, variabelen, enz. zijn objecten. Hoewel deze objecten conceptueel zijn, hebben ze veel gemeen met objecten in de echte wereld. Laten we als voorbeeld een thermostaat van een verwarming nemen. De thermostaat heeft eigenschappen, zoals bijvoorbeeld de kleur, de vorm, maar ook de gewenste temperatuur. Dit geldt voor bijvoorbeeld een Label control ook, alleen heeft deze andere eigenschappen, namelijk tekst, lettertype, kleur enz. Niet alle eigenschappen hoeven altijd zichtbaar te zijn, sterker nog sommige eigenschappen zijn alleen bedoeld voor intern gebruik of alleen maar beschikbaar als de pagina wordt uigevoerd (run-time), niet als de pagina gemaakt wordt (design-time). In Web Matrix of Visual Studio .NET kunt u de eigenschappen die u tijdens design-time kunt manipuleren zien in het eigenschappenvenster (Properties). U ziet daarvan een voorbeeld in figuur 1. Een thermostaat heeft ook bepaalde functies, zoals het veranderen van de gewenste temperatuur. In objecten noemen we dergelijke functies methodes. Een voorbeeld daarvan hebben we gezien in Opdrachten meerdere keren uitvoeren, waar gebruik werd gemaakt van de Split methode die onderdeel is van een String. Met een object kunnen er ook gebeurtenissen plaatsvinden. Een gebeurtenis bij de thermostaat kan bijvoorbeeld zijn dat de temperatuur te laag wordt, zodat de theromostaat de verwarming aan moet zetten. Dit is vergelijkbaar met bijvoorbeeld een ListBox control waarin de selectie verandert. Op zo'n moment wordt een functie uitgevoerd die op de gebeurtenis reageert. We noemen dit daarom gebeurtenismethodes. Ook voor gebeurtenismethodes geldt dat sommige alleen voor intern gebruik zijn. De gebeurtenismethodes die u wel kunt gebruiken, kunt u zien in het eigenschappenvenster als u kiest voor Events door op het bliksem icoontje te klikken, zoals te zien is in figuur 2.


Figuur 1, Eigenschappen

Figuur 2, Gebeurtenismethoden

Klassen

Alle objecten maken deel uit van klassen. Een object klasse vertelt ons wat een object is en wat de basiseigenschappen daarvan zijn. Een voorbeeld van een klasse in de echte wereld is de klassen katten. De klasse katten maakt weer deel uit van de klasse kat-achtigen, die weer deel uit maakt van de klasse zoogdieren enzovoorts. Een object is in feite een instantie van een klasse. Door de hiδrarchie van klassen waar een object deel vanuit maakt, weten we wat de eigenschappen van dat object zijn, en weten we wat we er mee kunnen.

Naamruimten

Om het makkelijker te maken om met objecten te werken, zijn alle object klassen in het .NET Framework geclassificeerd in zogenaamde naamruimte (namespaces). Een naamruimte geeft aan waar een object klasse voor dient. Zo bevat de naamruimte System.IO (Input/Output) de klasse File die u kunt gebruiken om te werken met bestanden, en bevat de namespace System.Web alle klassen die te maken hebben met ASP.NET. Net als klassen zijn naamruimte hiδrarchisch, zodat u aan de volledige gespecificeerde klasse naam (dus inclusief de naamruimte) kunt zien wat de klasse doet en waar deze toe behoort. De twee basis naamruimten in het .NET Framework zijn System voor systeem klassen, en Microsoft voor klassen die specifiek tot Microsoft producten behoren. De System naamtuimte bevat o.a. Data (algemene gegevensbewerkingen), IO (input en output), Web (ASP.NET) en XML. System.Data bevat op zijn beurt o.a. SqlClient (voor SQL Server toegang) en OleDb (voor OleDb database toegang). Als u klassen uit een bepaalde naamruimte wilt gebruiken, kunt u de volledige naam specificeren, maar het is handiger om de naamruimte te importeren, zodat de klassen in de naamruimte direct bekend zijn. In een ASP.NET pagina importeert u een naamruimte door de volgende code meteen na de paginadeclaratie te zetten:

<%@ Import Namespace="Naamruimte" %>

⌐2002 Microsoft Nederland BV