Avatar billede hlt Juniormester
14. marts 2011 - 21:27 Der er 17 kommentarer og
1 løsning

Object eksempel

Hej,
Jeg er på udkig efter et eksempel i at oprette sine egne objekter, men jeg synes ikke rigtig at jeg kan finde noget, eller også leder jeg de forkerte steder.
Jeg vil gerne have muligheden for at oprette f.eks et firma object. Altså at jeg opretter et firma object, tilknytter data til objectet, så jeg kan hente dataerne ud når jeg skal bruge dem forskellige steder i min applikation. Så man på den måde får et databasekald hvor samtlige værdier som er gemt på et firma i stedet for flere forskellige kald. Det skal helst være i VB.net
på forhånd tak.
Avatar billede arne_v Ekspert
14. marts 2011 - 21:33 #1
Du definerer en klasse (Class) et sted i din kode.

Et andet sted i din kode kan du lave en instans / et objekt af den klasse med New.

Du kan enten manuelt læse data fra databasen og gemme i objektet eller hvis du bruger en ORM (O/R-Mapper) kan du få det gjordt for dig.

Der er lidt timers arbejde med at sætte sig ind i alt dette!

:-)
Avatar billede keysersoze Guru
14. marts 2011 - 21:56 #2
Som arne_v er lidt inde på får du en masse foræret ved at benytte en O/R-mapper - når du arbejder i .NET vil jeg anbefale dig at kigge på Entity Framework.
Avatar billede madand Nybegynder
14. marts 2011 - 22:09 #3
Her er et eksempel:

public class Contact
    {
        public string Email { get; set; }
        public string Firstname { get; set; }
        public string Lastname { get; set; }
        public string Company { get; set; }
        public string Comments { get; set; }
    }

Men ja ORM'ere klarer det for dig, men det er nok meget rart at vide hvad de egentlig laver bagom :)
Avatar billede hlt Juniormester
14. marts 2011 - 22:42 #4
Havde du et eksempel i vb?
Jeg ved ikke om jeg vil kaste mig over o/r mapper i første omgang. Hvis jeg kan få det til at virke med lidt simplere midler vil jeg nok fortrække det.
Avatar billede madand Nybegynder
14. marts 2011 - 22:48 #5
Ja, det er ikke lige så pænt i VB.NET.

Men her:

Public Class User

    Private _firstname As String
    Private _lastname As String

    Property Firstname() As String
        Get
          Return _firstname
        End Get
        Set(ByVal Value As String)
            _firstname = Value
        End Set
    End Property

    Property Lastname() As String
        Get
          Return _lastname
        End Get
        Set(ByVal Value As String)
            _lastname = Value
        End Set
    End Property
   
End Class
Avatar billede madand Nybegynder
14. marts 2011 - 22:49 #6
Avatar billede hlt Juniormester
15. marts 2011 - 08:20 #7
Ja det kan jeg godt se. Der skal en del mere kode til i VB.
Jeg takker. Kigger på det i løbet af dagen.
Avatar billede hlt Juniormester
15. marts 2011 - 09:27 #8
Det er det jeg har været på udkig efter. Jeg har lige et tillægs spørgsmål. Er der nogen der har styr på om det rent performance mæssigt er bedre at have f.eks 10 databasekald hvor man henter en information ud af gangen eller at man laver et databasekald og henter 10 informationer ud og gemmer i et object? Jeg synes jo selv at det er bedre med 1 databasekald, men hvis man har mange objecter, tager det så for meget hukommelse?
Avatar billede arne_v Ekspert
15. marts 2011 - 14:14 #9
Sammenligningen C# VB.NET er ikke helt fair - i VB.NET 2010 kan man skrive:

Public Class User
    Public Property Firstname As String
    Public Property Lasrname As String
End Class
Avatar billede arne_v Ekspert
15. marts 2011 - 14:16 #10
Lav et kald og hent en liste af objekter.

Lad os sige at et User objekt fylder 500 bytes.

Saa vil en liste med 10000 User objekter fylde 5 MB i memory.

Det er jo ingen ting.
Avatar billede hlt Juniormester
15. marts 2011 - 14:31 #11
Vil det sige at jeg kan nøjes med at skrive:
Public Property Firstname As String

Istedet for:
Property Firstname() As String
        Get
          Return _firstname
        End Get
        Set(ByVal Value As String)
            _firstname = Value
        End Set
    End Property

Og nu har jeg oprettet en Public Sub New som modtager et id som parameter. Hvor er det mest hensgitsmæssigt at tilføje data fra databasen? Skal det være i selvsamme class eller skal det være i codebehind filen?
Avatar billede arne_v Ekspert
15. marts 2011 - 14:49 #12
Ja, hvis du bruger 2010. Du skal heller ikke have backing field.
Avatar billede arne_v Ekspert
15. marts 2011 - 14:49 #13
Normalt vil man have koden som henter data i en separat klasse.
Avatar billede madand Nybegynder
16. marts 2011 - 11:01 #14
Tak for rettelsen Arne, det vidste jeg så ikke lige, at man kunne skrive det så simpelt i VB.NET. :)
Avatar billede arne_v Ekspert
16. marts 2011 - 15:36 #15
C# fik auto properties med .NET 3.5/VS2008, VB.NET fik det foerst med .NET 4.0/VS2010, men de har faaet det nu.
Avatar billede hlt Juniormester
17. marts 2011 - 23:17 #16
Tak for jeres svar. Jeg har fået det til at virke. Giver i et svar begge to, så kan I dele point.
Avatar billede arne_v Ekspert
17. marts 2011 - 23:23 #17
fra mig
Avatar billede hlt Juniormester
29. marts 2011 - 07:59 #18
Du var vist den eneste der gav et svar, så for at få lukket det her spørgsmål får du alle point.
Tak for hjælpen til jer alle.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester