12. juni 2005 - 16:07Der er
10 kommentarer og 1 løsning
Fordel ved at bruge klassemoduler frem for standardmoduler?
Hej! Jeg skal snart til eksamen i datalogi, men kan ikke forstå, hvorfor det er nødvendigt at kunne oprette selvdefinerede objekter ved hjælp af klassemoduler. Kan man ikke lave biblioteker lige så godt ved at implementere standardmoduler i sit projekt?
Kort og godt: Hvad er fordelen ved at bruge klassemoduler og hvad kan de, hvis det skal siges på godt dansk? Hvad kunne man ikke lave, hvis klassemoduler ikke fandtes i VB?
(Bogen, som er opgivet, omhandler VB 4.0...så det er noget gammelt efterhånden)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Event Status(intProcess As Integer) Public Event Complete()
Public Sub Test() Dim i As Integer For i = 0 To 100 RaiseEvent Status(i) Sleep 250 DoEvents Next RaiseEvent Complete End Sub '-------------------------------- clsClass --------------------------------
Private Sub Command1_Click() objClass.Test End Sub
Private Sub Form_Load() Set objClass = New clsClass End Sub
Private Sub Form_Unload(Cancel As Integer) Set objClass = Nothing End Sub
Private Sub objClass_Complete() MsgBox "Process er færtig." End Sub
Private Sub objClass_Status(intProcess As Integer) Me.Caption = intProcess & "%" End Sub '-------------------------------- Form1 --------------------------------
Hej! Problemet er nok mest af alt, at jeg ikke er sikker på, hvordan jeg skal forklare hvad et klassemodul er, og præcis hvorfor det er fordelagtigt at bruge klassemoduler i nogle situationer.
Desuden er jeg i tvivl om hvad egenskabs-procedurer kan bruges til. Er det kun i forbindelse med klassemoduler, at man bruger egenskabsprocedurer som:
private property let/get navn() ....... end property
Kan I også forklare mig hvordan man bruger let og get? Jeg ved, at let bruges når man sætter en egenskab, og get bruges, når man skal læse egenskaben, men kan I ikke uddybe det evt. med et eksempel?
så min spørgsmål er:
1. hvordan skal jeg forklare hvad et klassemodul er? 2. hvorfor er det fordelagtigt at bruge klassemoduler i nogle situationer? 3. hvad kan egenskabs-procedurer bruges til? 4. Er det kun i forbindelse med klassemoduler, at man bruger egenskabsprocedurer? 5. Hvordan bruges let/get i egenskabsprocedurerne?
1. Få fat i en vb6 -bog. 2. Moduler kan indeholde funktioner. 3. Et klassemodul er en "støbeform" til objekter.
Funktioner og Subroutiner er fine til ikke-sammenhængende procedurer. Altså data ind og data ud uden nogen form for tilstands sammenhæng globalt.
Et objekt er rigtigt godt hvis du skal sætte en masse parametre op som skal bevares for derefter at fyre en metode af for at starte selve behandlingen.
Et klassemodul kan forøvrigt kompileres til en dll eller ocx hvilket muliggør at andre programmer kan benytte sig af modulets procedurer enda i flere instandser.
Forskellen du spørger til er principielt forskellen på objektorienteret (OOP) og traditionel programmering (hvor objektorienteret er the-way-to-go)
Det er svært kort at fortælle om fordele ved OOP - det drejer sig basalt om en lidt anderledes måde at tænke på (at tænke i objekter, der hver lever deres eget liv, og som passer ind i det store hele). Men det ER smart - det vil du indse hvis du bruger noget tid på at læse i en bog om det. Der plejer man at kunne finde et eksempel på noget simpelt - f.eks. et kortspil, hvor hvert spillekort er et objekt, der har egenskaber som "farve" og "værdi", og events som "spilles ud", der afvikles når kortet spilles - hvis du finder et eksempel på et mindre program, vil du kunne se det geniale i OOP.
Et keyword om objektorienteret programmering er bl.a. "arv", og at man kan oprette en række instanser af samme objekt.
mange tak for hjælpen alle sammen. Jeg ved ikke med det der pointgivningssystem...har jeg ikke fundet ud af hvad er for noget. Men har jeg forstået det rigtigt, at der i:
Public Property Get Setting1() As String Setting1 = m_Setting1 End Property
så læser man simpelthen egenskaben med (objektnavn).setting1....så får man den værdi, der returneres i setting1 og den er sat til m_setting1, så det bliver m_setting1, der returneres?
ja - og m_ står sikkert for "member" - altså en variabel der kun lever i den kodestump... Nu er ovenstående meget simpel, men der kunne jo beregnes osv. på m_setting, før man satte setting = M_setting
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.