login  Naam:   Wachtwoord: 
Registreer je!
 Forum

vraag over containment (Opgelost)

Offline verhaba - 20/01/2009 10:47
Avatar van verhabaLid Hallo
Ik heb een vraag over containment. Containment is een relatie tussen twee entiteiten. Ik heb een stukje code, waarvan ik begrijp wat het doet. Maar net het containment gedeelte, dus waar het ene object een relatie heeft met het andere object, zie ik over het hoofd. Kan iemand me helpen aub?
Alvast bedankt
  1. Class Person
  2. Private m_Name As String
  3. Public Function GetName() As String
  4. GetName = m_Name
  5. End Function
  6. Public Sub SetName(ByVal value As String)
  7. m_Name = value
  8. End Sub
  9. Private m_Address As Address
  10. Public Function GetAddress() As Address
  11. GetAddress = m_Address
  12. End Function
  13. Public Sub SetAddress(ByVal value As Address)
  14. m_Address = value
  15. End Sub
  16. End Class
  17. Class Address
  18. Private m_Street As String
  19. Public Function GetStreet() As String
  20. GetStreet = m_Street
  21. End Function
  22. Public Sub SetStreet(ByVal value As String)
  23. m_Street = value
  24. End Sub
  25. Private m_Number As String
  26. Public Function GetNumber() As String
  27. GetNumber = m_Number
  28. End Function
  29. Public Sub SetNumber(ByVal value As String)
  30. m_Number = value
  31. End Sub
  32. Private m_ZipCode As String
  33. Public Function GetZipCode() As String
  34. GetZipCode = m_ZipCode
  35. End Function
  36. Public Sub SetZipCode(ByVal value As String)
  37. m_ZipCode = value
  38. End Sub
  39. Private m_City As String
  40. Public Function GetCity() As String
  41. GetCity = m_City
  42. End Function
  43. Public Sub SetCity(ByVal value As String)
  44. m_City = value
  45. End Sub
  46. End Class
  47. Module Client1
  48. Sub Main()
  49. Dim address1 As Address = New Address
  50. address1.SetStreet("Royal Avenue")
  51. address1.SetNumber("10")
  52. address1.SetZipCode("90210")
  53. address1.SetCity("Beverly Hills")
  54. '
  55. Dim person1 As Person = New Person
  56. person1.SetName("John")
  57. person1.SetAddress(address1)
  58. '
  59. Print(person1)
  60. '
  61. Console.ReadLine()
  62. End Sub
  63. Sub Print(ByVal person As Person)
  64. Console.WriteLine(person.GetName())
  65. If person.GetAddress() IsNot Nothing Then
  66. With person.GetAddress()
  67. Console.WriteLine(.GetNumber() & ", " & .GetStreet())
  68. Console.WriteLine(.GetCity() & " " & .GetZipCode())
  69. End With
  70. End If
  71. End Sub
  72. End Module

15 antwoorden

Gesponsorde links
Offline nemesiskoen - 20/01/2009 10:55
Avatar van nemesiskoen Gouden medaille

PHP expert
Er zit in de klasse person een variabele m_Address die de gegevens bijhoudt van een bepaald adres. Die variabele is dus de koppeling tussen persoon en adres. Ik begrijp niet echt goed wat er _niet_ aan te snappen valt.
Offline Ontani - 20/01/2009 10:55
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
binnen de Class Person staat een variabele:

  1. Private m_Address As Address


die wordt opgevuld met:
  1. Public Sub SetAddress(ByVal value As Address)
  2. m_Address = value
  3. End Sub


Dus met:
  1. Dim person1 As Person = New Person
  2. person1.SetAddress(address1)


wordt de relatie gelegd
Offline verhaba - 20/01/2009 11:02 (laatste wijziging 20/01/2009 11:03)
Avatar van verhaba Lid OK thanks mannekes... dat is al dat.
Tweede vraag: Hoe komt het dat geen error geeft want in

  1. Private m_Address as Address

is de Class Address toch nog niet geînitialiseerd?
Offline Wim - 20/01/2009 11:33
Avatar van Wim Crew algemeen Volgens mij is dat door dezelfde reden als dat je in php een functie kan gebruiken ookal wordt ze later in je code pas aangemaakt.

Even een kleine opmerking, je hebt veel get en set-functie's, VB.NET heeft daar ook properties voor waar je gebruik van kunt maken:
  1. Public Property Name() As String
  2. Get
  3. Return m_Name
  4. End Get
  5.  
  6.  
  7. Set(ByVal value As String)
  8. m_name = value
  9. End Set
  10.  
  11. End Property
Offline Ontani - 20/01/2009 11:35
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Is een gedownload voorbeeld GDX, heeft ie nie zelf geschreven.
Offline verhaba - 20/01/2009 11:40
Avatar van verhaba Lid OK. thx vrienden. de tweede vraag was maar een detail, maar stelde ze gewoon maar effe uit curieusiteit. Ik zal ze mss best eens aan de leerkracht stellen... Ik hou jullie op de hoogte van het antwoord.
Thx.
Offline Mario - 20/01/2009 11:57 (laatste wijziging 20/01/2009 11:59)
Avatar van Mario Crew algemeen
verhaba schreef:
is de Class Address toch nog niet geînitialiseerd?


Bij het aanmaken van een Class is deze gekend in de ganse Solution, net zoals de class Form en duizenden andere classes in het .net framework.

Greetzzzz
RedThread
Offline verhaba - 20/01/2009 14:24 (laatste wijziging 20/01/2009 16:19)
Avatar van verhaba Lid Puik... Heel mooi... Man man man... er valt me nog veel te leren me dunkt.  

Er schiet me nu net iets te binnen. in plaats van procedures en/of functies te gebruiken in bovenstaande Class Person was het gebruik van een property toch ook toegestaan, of niet?
Offline Abbas - 20/01/2009 16:38 (laatste wijziging 20/01/2009 16:40)
Avatar van Abbas Gouden medaille

Crew .NET
Het is zelfs aangeraden het te gebruiken, daar dienen ze tenslotte voor, je hoeft het niet enkel voor de klasse Person te doen, maar je kan ze ook toepassen op de klasse Address. 
Offline verhaba - 20/01/2009 17:11
Avatar van verhaba Lid idd.. Het was enkel maar ter voorbeeld.
De leerkracht vb heeft er een andere visie over (denk ik). Hier is zijn oordeel:
' Property = toekennen van values aan velden (set). Ook heb je hier een onderdeel dat een teruugeefwaarde bevat (get). Meestal gebruik je hier geen bewerkingen

Sub = bewerking uitvoeren (mutator - manipulatie), zonder het resultaat terug naar de main te sturen. Wens je het toch terug te sturen, dan maak je gebruik van een functie

Functie = teruggeven van een waarde (result), meestal gekoppeld aan een bewerking. Het louter en alleen teruggeven van de waarde van een veld doe je met een property.'
Offline Abbas - 20/01/2009 17:24
Avatar van Abbas Gouden medaille

Crew .NET
Dat is in mijn ogen een foute visie want je haalt niet enkel een waarde op met een Property (Get), je kan ook perfect een waarde veranderen met een Property (Set). Zoals ik al zei: daar dienen ze voor. En wat betreft die Subs/Functions, binnen een klasse noemen ze zoiets Methods, klein voorbeeld:

  1. Imports System
  2. Imports System.Collections.Generic
  3. Imports System.ComponentModel
  4. Imports System.Data
  5. Imports System.Drawing
  6. Imports System.IO
  7. Imports System.Linq
  8. Imports System.Text
  9. Imports System.Windows.Forms
  10.  
  11. Class Persoon
  12.  
  13. 'Private velden (Fields)
  14. Private mNaam As String
  15. Private mGebJaar As Integer
  16.  
  17. 'Publieke eigenschappen (Properties)
  18. Public Property Naam() As String
  19. Get
  20. Return mNaam
  21. End Get
  22. Set(ByVal value as String)
  23. mNaam = value
  24. End Set
  25. End Property
  26. Public Property GeboorteJaar() As Integer
  27. Get
  28. Return mGebJaar
  29. End Get
  30. Set(ByVal value as Integer)
  31. mGebJaar = value
  32. End Set
  33. End Property
  34.  
  35. 'Publieke functies (Methods)
  36. Public Shared Function GetLeeftijd(Jaar) As Integer
  37. Return DateTime.Now.Year - Jaar
  38. End Function
  39.  
  40. End Class
Offline Ontani - 21/01/2009 00:34
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
De visie van je leerkracht is gebaseerd op Java waarin geen Properties bestaan en alles waar private variabele moeten worden opgevuld gedaan wordt met een Set en alles wat opgehaald moet worden met een Get.

Maar in VB.Net zoals titjes hierboven al aanhaald zijn daar Properties voor voorzien.
Offline Ontani - 21/01/2009 00:36
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
De visie van je leerkracht is gebaseerd op Java waarin geen Properties bestaan en alles waar private variabele moeten worden opgevuld gedaan wordt met een Set en alles wat opgehaald moet worden met een Get.

Maar in VB.Net zoals titjes hierboven al aanhaald zijn daar Properties voor voorzien.
Offline Abbas - 21/01/2009 00:37
Avatar van Abbas Gouden medaille

Crew .NET
Gaan we een beetje dubbelposten? ^^
Offline Ontani - 21/01/2009 08:11
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Lekker timeouten, dan gebeurd zoiets wel eens
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.202s