16. oktober 2010 - 10:17Der er
16 kommentarer og 1 løsning
En rigtig god forklaring på denne kode?
Jeg er igang med at læse og lære vb.net og så er jeg kommet til et kapitel hvor jeg skal lave denne kode:
Module Module1
Sub Main() Dim kunde1 As kunde = New kunde(1, "Jens Jensen ") Dim kunde2 As kunde = New kunde(2, "Peter Petersen ", 12456.4)
Console.WriteLine(kunde1.navn & " " & kunde1.saldo) kunde1.koeb(4000) kunde1.navn = "Ove Jensen" Console.WriteLine(kunde1.ToString()) Console.WriteLine(kunde2.tostring()) Console.ReadLine() End Sub
End Module
Public Class kunde Private m_KundeNr As Integer Private m_Navn As String Private m_Saldo As Double
Public Sub New(ByVal kundenr As Integer, ByVal navn As String) m_KundeNr = kundenr m_Navn = New String(navn.ToCharArray())
End Sub
Public Sub New(ByVal kundenr As Integer, ByVal navn As String, ByVal saldo As Double) m_KundeNr = kundenr m_Navn = New String(navn.ToCharArray()) m_Saldo = saldo End Sub
ReadOnly Property saldo() As Double Get Return m_Saldo End Get End Property
Public Property navn() As String Get Return m_Navn End Get Set(ByVal value As String) m_Navn = New String(value.ToCharArray()) End Set End Property
Public Overrides Function ToString() As String Return m_KundeNr.ToString() & " " & m_Navn & " " & m_Saldo.ToString() End Function
Public Sub koeb(ByVal beloeb As Double) m_Saldo += beloeb End Sub
Public Sub inbetal(ByVal beloeb As Double) m_Saldo -= beloeb End Sub End Class
Den ender med at skrive:
Jens Jensen 0 1 Ove Jensen 4000 2 Peter Jensen 12456.4
Ret super program ik ;o) Jeg har læst kapitlet. Skrevet koden ind og læst kapitlet igen, men stadig forstår jeg ikke koden.
Synes lige bogen måske springer lidt for let hen over det ellers har jeg bare lidt for svært ved at fortå koden, men det der New som bliver brugt alle steder frem over i bogen er jeg ikke helt med på hvordan det virker.
Bare for at gøre en lang kode kort så den her:
Public Sub New(ByVal kundenr As Integer, ByVal navn As String) m_KundeNr = kundenr m_Navn = New String(navn.ToCharArray())
End Sub
Hvad sker der lige præcis der?
Er der nogen som kan give en rigtig god forklaring og et bedre eksempel og som er helt nede på jorden så selv et fjols som mig forstår det.
Hm men jeg er stadig ikke med på det der med new. Ja det står der godt nok noget om senere i bogen at tochararry ikke er nødvendig Hvis det skal lavs som arry kan man vel bare lave det som m_Navn =navn(1) eller noget i den stil?
Og hvad med m_KundeNr = kundenr hvorfor skal den så ikke hedde noget med m_KuneNr = new kundenr eller noget andet?
Har ikke forstået en meter af alt det der OOP so far... Synes da jeg forstår en del af det andet, men det der med New osv fatter ikke en bjælde huhu :o/
Kan du ik ud over min kode her skrive en hel ny kode. Så kort og simpel som muligt og gerne som consol kode hvor new bliver brugt så jeg måske forstår logikken i det med new og oop?
Public Class X Public a As Integer Public b As Integer Public c As Integer End Class
så vil den fylde 3 x 4 bytes i memory.
Hvis man nu udfører:
Dim o As X = New X()
så laver man en ny X d.v.s. at man allokerer 12 bytes i memory. De 3 felter a, b og c vil få værdien 0. Så laver man også en variabel o, som får en værdi som peger på (refererer til) den forekomst af X man lige har lavet. Og nu kan man bruge o.a, o.b og o.c til at hente og opdatere værdierne af felterne a, b og c i den nye X.
altså eks hvis jeg har et spil kort kan jeg lave noget i stil med?
dim ruder,klør,spar,hjerter as integer ' deres korts værdi
dim kort as kort =new kort()
kort.ruder og kort.klør osv?
og kort.ruder(1) ville så være ruder1 og kort.ruder(2) ville være ruder 2 rigtig?
Hm ser lidt forkert ud, men ret lige den kode og så gør det som et svar for jeg er umiddelbart godt tilfreds med din forklaring. Jeg skal bare igang med at arbejde med det for rigtig at forstå det tror jeg og bare rolig arne... Jeg vender også frygtelig tilbage med flere dumme spørgsmål ;o)
Nå men som sagt du smider bare et svar når du vil da du har gjort dig fortjent de de points. Med det som der står i bogen og det du skriver blandet sammen med lidt arbejde håber jeg nemlig på at forstå det.
Jeg vil prøve at lave et ultra simpel kortspil
du har 2 kort på bordert. og så en knap. Altså 2 pictureboxe og 1 knap.
Så når du trykker på denne knap så kommer der 1 kort i hver picture box fra stakken. og så kommer der en msgbox som siger hvilket kort er højest.
Det burde vel være en go start at prøve det? Det kræver vel bare at man tager alle kort og giver dem en værdi. En random funtion som blander kortene og så en if venstre kort er større end højer then msgbox "kortet i venstre side er størst" else msgbox "Det andet kort er størst"
Eller er det ikke helt så simpel og vil du foreslå jeg venter med det til jeg har forstået lidt mere?
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.