Klasser
Du har sikkert allerede opretet klasser tidligere på kurset, men lad os kigge lidt nærmere på det.
Klasser hører til en diciplin, der hedder objekt orienteret programmering og som man godt kan få lang tid til at gå med at studere. Det er derfor vigtigt for mig at pointere, at denne side ikke skal ses som en total indføring i objekt orienteret programmering, men blot et forsøg på at løfte en flig af emnet og præsentere nogle få begreber så det skulle være muligt at skrive og bruge nogle objekter i ASP.NET.
Objekt eller klasse
Objekt orienteret programmering handler - som navnet også antyder - om objekter så lad os kigge lidt på sådan et objekt. Et nærliggende eksempel på et objekt kunne være en kunde. Om sådan en kunde vil vi gerne vide navn, kontonummer, adresse, telefonnummer osv. - alle disse ting kalder vi egenskaber ved objektet. Men vi kunne måske også godt tænke os at kunne oprette en ordre fra kunden - det kalder vi en metode (noget objektet kan gøre for os). Metoder og egenskaber er altså begreber der knytter sig til et objekt!
For at beskrive vores kundeobjekts metoder og egenskaber laver vi det der hedder en class file - eller på dansk - en klasse fil. En klassefil på sådan et kundeobjekt kan se sådan her ud. Jeg har kun medtaget en enkelt egenskab og en enkelt metode for at gøre det mere overskueligt.
public class Kunde
{
public Kunde()
{
//Forklaring kommer senere
}
string _Navn;
public string Navn
{
get { return _Navn; }
set { _Navn = value;}
}
public void OpretOrdre()
{
// koden kommer senere
}
}
Public Class Kunde
Public Sub New()
' Forklaringen til dette kommer senere
End Sub
Dim _Navn As String
Public Property Navn() As String
Get
Return _Navn
End Get
Set(ByVal Value As String)
_Navn = Value
End Set
End Property
Public Sub OpretOrdre()
' Koden må komme senere
End Sub
Sådan en klasse fil er ikke i sig selv et objekt! - men en beskrivelse af, hvordan objektet skal opføre sig.
Rent praktisk laver man en klasse til i VS.NET ved at højreklikke i Solution Explorer og vælge Add Item og dernæst Add class. Og i filen der fremkommer skriver man sin klasse - det er ikke så svært.
Brug af klassen / instantiere et objekt
Nu har vi så fået beskrevet objektet - så skal vi til at bruge det! Det sker som regl i vores codebehind fil til en web-form.
Det vi skal gøre er at bede om at få oprettet et kundeobjekt, der opfører sig som beskrevet i vores klassefil - det hedder at instantiere objektet. Koden til det ser sådan her ud
Kunde objKunde = new Kunde();
Dim objKunde As Kunde = New Kunde()
For at dette kan virke skal ASP.NET lige have at vide, at vi faktisk har sådan en klasse - det gør man med linjen
using DitProjektNavn.Kunde;
Imports DitProjektNavn.Kunde
Når vi på denne måde har instanieret et kundeobjekt bliver der sat plads af i hukommelsen til objektet og de indre variable (i dette tilfælde _Navn) og vi kan arbejde mod fra vores kode:
objKunde.Navn = "Scient Data";
objKunde.OpretOrdre();
objKunde.Navn = "Scient Data"
objKunde.OpretOrdre
Vi kan lave endnu et kundeobjekt og bruge det til noget andet
Kunde objNyKunde = new Kunde();
objNyKunde.Navn = "Et nyt firma";
objNyKunde.OpretOrdre();
Dim objNyKunde As Kunder = New Kunde()
objNyKunde.Navn = "Et nyt firma"
objNyKunde.OpretOrdre
Det skulle være nogenlunde til at forstå. Lad os vende lidt tilbage til klasse filen.
Lidt mere om klasse filen
Jeg skrev tidligere
public class Kunde
{
public Kunde()
{
//Forklaring kommer senere
}
.
.
Public Class Kunde
Public Sub New()
' Forklaringen til dette kommer senere
End Sub
.
.
.
Den kode man skriver her, kan bruges til ting man gerne vil have lavet når objektet bliver instantieret - f.eks. hente nogle informationer op af en database. Læg mærke til, at man godt kan skrive flere metoder her:
public class Kunde
{
public Kunde()
{
// Opret kunde
}
public Kunde(int ID)
{
// Hent kunden med ID op af databasen
}
public Kunde(string Navn)
{
// Hent kunden med Navn op af databasen
}
Public Class Kunde
Public Sub New()
'
End Sub
Public Sub New(ByVal ID As Integer)
' Hent kunden med ID op af databasen
End Sub
Public Sub New(ByVal Navn As String)
' Hent kunden med Navn op af databasen
End Sub
.
.
Klassen finder selv ud af, hvilken af de 3 metoder der skal kaldes afhængigt af hvilken parameter der sendes med når objektet skal instantieres.
Andre objekt relaterede begreber
Ud over de begreber vi har kigget på her kan man også kigge på begreber som
- Samlinger
- Nedarvning
- Polymorfisme
- UML diagrammer
Men det må blive en anden gang - og måske på et kursus i objekt orienteret programmering (det kan være jeg skriver sådan ét en dag).