Konstruktor, Getters und Setters

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Dancger.

    Konstruktor, Getters und Setters

    Hiho zusammen

    In Eclipse (Natürlich nicht für VB.Net ;) )gibt es die Möglichkeit sich die Setters, Getters und die Konstruktoren automatisch zu generieren.
    Nun wollt ich fragen: Ist es möglich dies auch unter VB08EE zu tun?

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dancger schrieb:

    Ist es möglich dies auch unter VB08EE zu tun?

    Ja. Jedenfalls, falls ich "automatisch" richtig verstehe ...
    Im englischen: Rechtsklick auf "View Class Diagram". Da kann man seine Klassen dann graphisch erzeugen, wobei der Code automatisch generiert wird.

    Falls du was anderes meinst:
    zb in 2010: Public Property Foo As Integer = 3
    -> man braucht kein get und set zu schreiben, das wird automatisch ergänzt. Ebenso wie eine private Membervariable mit dem Namen "_Foo". Ein Default Konstruktor wird ebenfalls automatisch erzeugt, wenn man selbst keinen schreibt.
    ich hab dafürn paar Snippets geschrieben, zB:

    XML-Quellcode

    1. <?xml version="1.0"?>
    2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    3. <CodeSnippet Format="1.0.0">
    4. <Header>
    5. <Title>FullProperty</Title>
    6. <Author>Eckard</Author>
    7. <Description>Public Property</Description>
    8. <Shortcut>ppr</Shortcut>
    9. <SnippetTypes>
    10. <SnippetType>Expansion</SnippetType>
    11. </SnippetTypes>
    12. </Header>
    13. <Snippet>
    14. <Imports>
    15. <Import>
    16. <Namespace>Microsoft.VisualBasic</Namespace>
    17. </Import>
    18. </Imports>
    19. <Declarations>
    20. <Literal>
    21. <ID>PropertyName</ID>
    22. <Type>String</Type>
    23. <Default>PropertyName</Default>
    24. </Literal>
    25. <Literal>
    26. <ID>PropType</ID>
    27. <Type>String</Type>
    28. <Default>PropType</Default>
    29. </Literal>
    30. </Declarations>
    31. <Code Language="VB" Kind="method body">
    32. <![CDATA[ Private _$PropertyName$ As $PropType$ = Nothing
    33. Public Property $PropertyName$() As $PropType$
    34. Get
    35. Return _$PropertyName$
    36. End Get
    37. Set(ByVal value As $PropType$)
    38. if _$PropertyName$ is value then return
    39. _$PropertyName$ = value
    40. End Set
    41. End Property]]></Code>
    42. </Snippet>
    43. </CodeSnippet>
    44. </CodeSnippets>

    Das haut eine Property hin, bei der man nachträglich noch Name und Typ ändern kann.

    ThuCommix schrieb:

    Wie automatisch? Die IDE kann doch nicht wissen was für Konstruktoren du für deine Klasse brauchst?

    Schonmal mit Eclipse gearbeitet? Eclipse öffnet ein Dialogfenster und du kannst auswählen welche Variablen erforderlich sind, falls Getters und Setters vorhanden sind, setzt er die Werte dann direkt über diese. Dann bestätigst du und Eclipse generiert dir den Konstruktor.

    Zur Veranschaulichung:


    picoflop schrieb:

    Im englischen: Rechtsklick auf "View Class Diagram". Da kann man seine Klassen dann graphisch erzeugen, wobei der Code automatisch generiert wird.

    Ich find diese Option nicht, sicher das es diese auch unter der Express Edition gibt und nicht nur im Studio?

    ErfinderDesRades schrieb:

    Das haut eine Property hin, bei der man nachträglich noch Name und Typ ändern kann.

    So wie ich das verstehe sollte ich statt spereaten Methoden (GetTest und SetTest) lieber eine Property nehmen?

    BTW: Sind Propertys Methoden die den Get und Set in einem beinhalten? Weil bis jetzt habe ich immer mit zwei einzelnen Methoden gearbeitet..

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Achso. Ist dieses (sinnlose) Beispiel aber richtig: ?

    Alt:

    VB.NET-Quellcode

    1. Private Sub SetTest(ByVal X As String)
    2. Me.x = X
    3. End Sub
    4. Private Function GetTest() As String
    5. Return Me.x
    6. End Function

    Neu:

    VB.NET-Quellcode

    1. Private Property Test() As String
    2. Get
    3. Return Me.x
    4. End Get
    5. Set(ByVal value As String)
    6. Me.x = value
    7. End Set
    8. End Property


    Wäre aber noch das Problem mit dem Konstruktor..

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dancger schrieb:

    Neu:

    Du meinst "halbneu". Denn in 2010 braucht man ja da gar nix mehr explizit selbst zu schreiben.

    Das mit dem Kontruktor erfordert vermutlich ein vermutlich kostenpflichtiges Addon wie ReFactor, Coderush etc.
    Einen überragenden Vorteil im graphischen Zusammenklicken eines Konstruktors sehe ich allerdings nicht.

    Wenn du irgendwo im Code eine Klasse Foo hast, ohne "passenden" ctor und du dann irgendwo "as new foo(1,2)" schreibst, meldet dir die IDE einen Fehler und erstellt auf Wunsch einen Stub mit der passenden Signatur. Theoretisch brauchst du dich um alle Methoden erst dann kümmern, wenn du sie im Code auch brauchst ;)
    Und wenn du irgendwo "as new foo(1,2,3)" schreibst und es gar kein "foo" gibt, erstellt dir die IDE die gesamte Klasse inklusive Konstruktor und private membervariablen ... ;)

    ErfinderDesRades schrieb:

    dieses Buch Lesen

    Ist IMO nicht sehr sinnvoll, sich sein Grundlagenwissen mit ForenPosts anzueignen.

    Das schmerzt in meinen Augen und verdirbt mir die Lust zum lesen..

    Meine Aussage: Learning by doing.

    picoflop schrieb:

    Du meinst "halbneu".

    Für mich neu ;)

    picoflop schrieb:

    Das mit dem Kontruktor erfordert vermutlich ein vermutlich kostenpflichtiges Addon wie ReFactor, Coderush etc.
    Einen überragenden Vorteil im graphischen Zusammenklicken eines Konstruktors sehe ich allerdings nicht.

    Ich werde ihn selber schreiben, dank den Properys wird mir schon ein grosses Geschreibsel abgenommen.

    Danke an alle Antworten :)

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...