Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Objekt orienterat med collections ?

Postades av 2003-02-27 21:13:30 - Joacim Ahlberg, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 484 personer

Hej, jag har ett litet problem med att lösa ett objekt problem som ju är lätt i andra mer oo språk.

Jag har en class, som innehåller flera objekt och bland annat en collection av en class som i sin tur innehåller bl.a. en collection av en annan class. Jag skulle vilja plocka ut en sträng ur barnbarnet till huvudobjektet.
Tänkbart laddar jag orderobjektet så här:

<code>
' Orderhuvud
Dim order As OrderHuvud
Set order = New OrderHuvud
order.KundNr = "4500"
order.OrderDatum = Now()
order.OrderNr = "C2010"

' Loopar igenom Orderhuvudets Orderrader och skapar OrderRads objekt
Dim rad1 As OrderRad
Set rad1 = New OrderRad
rad1.OrderRadNr = 1
rad1.VaruNr = "radde1"

' Loopar igenom OrderRadens MaterialRader och skapar MaterialRads objekt
Dim mtrl1 As MaterialRad
Set mtrl1 = New MaterialRad
mtrl1.MaterialRadNr = 1
mtrl1.VaruNr = "matte1"

Dim mtrl2 As MaterialRad
Set mtrl2 = New MaterialRad
mtrl2.MaterialRadNr = 2
mtrl2.VaruNr = "matte2"

' Lägger till Materialraderna till Orderrads objektet
rad1.MaterialRader.Add mtrl1
rad1.MaterialRader.Add mtrl2

Dim rad2 As OrderRad
Set rad2 = New OrderRad
rad2.OrderRadNr = 2
rad2.VaruNr = "radde2"

Dim rad3 As OrderRad
Set rad3 = New OrderRad
rad3.OrderRadNr = 3
rad3.VaruNr = "radde3"

' Loopar igenom och samlar upp Orderns OrderRader
order.OrderRader.Add rad1
order.OrderRader.Add rad2
order.OrderRader.Add rad3
</code>

Jag önskar att jag enkelt skulle kunna skriva:

xxx = order.OrderRader.Item(0).MaterialRader.Item(1).Value t.ex.

Kedjan bryts tidigt vid första barnet... Jag ser enorm spaghettiloop framför mig, för att nysta ut en enda sträng, som jag skulle vilja slippa. Finns det ett enklare sätt att se på problemet?

Joacim



Svara

Sv: Objekt orienterat med collections ?

Postades av 2003-02-27 22:10:50 - Andreas Hillqvist

Vad är problemet?

Hoppas du bara laddar akuell order. OO är ineffektivt om man lässer in all data. Man ska bara läsa in det man behöver.

T.Ex. När man startar applikationen och laddar alla odrar kommer tiden öka för varje ordrar man länger in. När man jobbat ett tag kommer man inte starta programmet friviligt. Det är då bättre att dynamisk skapa objekt när det anropas. Lägga till metoder för att t.ex. retunera Readonly rs till Listor. Objektet behövs ju bara för att kapsla koden som läser, redigerar, validerar och spara enskilda "poster".

Så jag uppfattat det. Uppskattar gäran asynpunkter.


Svara

Sv: Objekt orienterat med collections ?

Postades av 2003-02-27 22:32:45 - Niklas Jansson

>OO är ineffektivt om man lässer in all data.

Helt ologiskt. Objektorientering har ju inget med det att göra - oo är ett synsätt som skiljer sig markant mot äldre - som strukturell programmering och funktionsbaserad. Den är inte tänta att användas i något visst tillfälle och är inte heller (i stort sett)mindre effektiv i sig. Det är ju precis lika ineffektivt även om man inte ser det objektorienterat.

Sedan är enskilda lösningar rörande tidpunkten då man läser in informationen inte på något som helst kopplat till OO - det gör det bara lite lättare att ha större kontroll.

Förresten... jag tycker ditt uttryckssätt verkar lite konstigt, jag hade intrycket att du verkligen hade hajat OO. Objekt är inte till för att kapsla in kod - objekt är separata enheter som skall representera ting i programmet. Nu kan man visserligen inte följa detta lika starkt i VB som i t.ex. C++, men det är fortfarande fel att säga att objekt bara är till för en kapsling av kod.

/Niklas Jansson


Svara

Sv: Objekt orienterat med collections ?

Postades av 2003-02-27 22:59:56 - Andreas Hillqvist

Jag kanske formulerar mig luddigt. Är ju inte här för att förklara hur OO fungerar. Eller tvinga folk göra på något specilet sätt.

Vill bara dela med mig av exempel jag råkat ut för. vilket, vid start, laddar alla objekt från databasen. Vilket jag anser är fel sätt att tillämpa OO. Jag ansera ska bara ladda det enheter/objekt man behöver för tillfället.

Att ladda objekten kan ge en snabbare accesstid. Men till vilken kostnad. Förbrukar minne och resurser. Ger problem då flera använder systemet .

Har man index i databasen tar det inte lång tid att slå upp poster när man laddar dem. Ofta behövs inte alla information från databasen. Utan en mycket liten del.

Jag tycker OO är underbar. Vilket man bör tillämpa det på ett korrekt sätt.


Svara

Sv: Objekt orienterat med collections ?

Postades av 2003-02-27 23:11:42 - Joacim Ahlberg

Jo, jag kan tillägga att jag bara plockar upp en order och sedan skickar orderobjektet till en funktion som stoppar in det i ett annat system. Detta anrop är inte resurskritiskt eller betungande på något vis... för att klargöra att det inte rör sig om något gigantiskt.

Frågan är hur jag på ett bra sätt kan plocka ihop och isär detta orderobjekt.
Jag tappar tråden till barnbarnen så jag måste göra något galet.
Jag undrar bara hur jag sätter ihop ordern på ett bättre sätt än det ovan eller om ni ser någon brist som jag bör tänka på.

Ett utklipp ur OrderRad klassen:

<code>
Private mvarOrderRadNr As Integer 'local copy
Private mvarVaruNr As String 'local copy
Private mvarMaterialRader As Collection


Public Property Get MaterialRader() As Collection
If mvarMaterialRader Is Nothing Then
Set mvarMaterialRader = New Collection
End If


Set MaterialRader = mvarMaterialRader
End Property


Public Property Set MaterialRader(vData As MaterialRader)
Set mvarMaterialRader = vData
End Property
Private Sub Class_Terminate()
Set mvarMaterialRader = Nothing
End Sub
...
</code>

Kan det vara att tråden tappas pga att jag använder en allmän collection ?


mvh

Joacim


Svara

Sv: Objekt orienterat med collections ?

Postades av 2003-02-27 23:36:30 - Joacim Ahlberg

Det löste sig av sig självt... :)
Jag antog att det inte fungerade eftersom jag inte fick hjälp av objekt browsern.
De fanns där hela tiden ändå...

<code>
For Each rad In order.OrderRader
MsgBox rad.VaruNr
For Each mtrlRad In rad.MaterialRader
MsgBox mtrlRad.VaruNr
Next
Next
</code>

Tackar för bollplankningen ... ibland behöver man bara skriva av sig lite för att det skall fungera igen :)

mvh

Joacim


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 169
27 953
271 705
925
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies