vererbung von Klassen vereinfacht erklärt

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    vererbung von Klassen vereinfacht erklärt

    Moin zusammen

    ich habe mit Hilfe eines Bekannten geschafft ein Problem zu lösen komme aber nicht weiter in Sachen Vererbung bzw bin gerade an einer Stellen wo ich von euch Hilfe brauche und zwar möchte ich mit 2 Form Anwendung auf einer Klasse zugreifen weis aber nicht genau wie ich da vor gehen soll weil er hat mir ein kleines Beispiel gegeben aber nur für eine Klasse für eine Form nun möchte ich aber mit 2 Formen und einer Klasse arbeiten sprich, mit 2 Formen möchte ich auf einer klasse zugreifen nur wie geht das??

    wäre schön wenn ihr mir da helfen könntet

    LG
    Bilder
    • Form 1 Licht und Hinweis auf die Lampen und Leistungsanzeige.JPG

      304,39 kB, 1.663×992, 151 mal angesehen
    • Klasse I.JPG

      164,61 kB, 1.666×1.049, 141 mal angesehen
    • Klasse II.JPG

      157,6 kB, 1.676×1.049, 140 mal angesehen
    • Klassenvorlage.JPG

      123,25 kB, 1.467×942, 111 mal angesehen
    • Form II.JPG

      136,03 kB, 1.645×900, 127 mal angesehen

    Der Laie schrieb:

    möchte ich mit 2 Form Anwendung auf einer Klasse zugreifen
    ich versteh nur bahnhof.
    was soll ich mir darunter vorstellen, unter "mit 2 Form Anwendung auf einer Klasse zugreifen"??
    Auf einer klasse kann man nicht zugreifen - man kann auf ein Objekt zugreifen.
    Mit einer Anwendung kann man nicht zugreifen - eine Anwendung startet man oder beendet sie.
    Was bedeutet überhaupt "zugreifen" bei dir?
    Bei mir ist das, wenn man eine Methode oder Property eines Objektes aufruft.

    und mit vererbung hat das alles nix zu tun.
    Schönen guten Abend, oder guten Morgen je nachdem

    Ich glaube du hast sitzt hier einem grundsätzlichen Missverständnis auf, was Klassen und Forms betrifft. Wenn ich deine Bilder (und ja es wäre besser den vb.net Code Tag zu benutzen) richtig verstehe möchtest du eigentlich erreichen das du von deiner "Form1" bestimmte Lampen schalten kannst und von deiner "Form2" ebenfalls. Parallel hättest du anscheinend gerne die Watt Anzahl und auch die Anzahl der Lampen sowohl in Form1 als auch in Form2 angezeigt.

    Ganz simpel ausgedrückt du versucht eigentlich von einer Form auf eine andere zuzugreifen und dort Werte abzuholen.
    Ohne dein ganzes Programm umzuschmeißen und die Struktur zu ändern wäre eventuell die Möglichkeit eine "Singleton" Klasse zu verwenden und dort deine Lampen, die Wattzahl und die Anzahl der aktiven Lampen Zentral zu speichern oder extrem Hardcore wäre ein Modul mit den beiden Variablen nutzen....
    Wobei das mit OOP eigentlich nichts mehr zu tun hat.

    Ein schnelles Beispiel auf Basis einer Singleton:

    VB.NET-Quellcode

    1. Public NotInheritable Class ZentraleLampenVerwaltung
    2. Private Shared ReadOnly vInstance As New Lazy(Of ZentraleLampenVerwaltung)(Function() New ZentraleLampenVerwaltung(), Threading.LazyThreadSafetyMode.ExecutionAndPublication)
    3. Private Sub New()
    4. End Sub
    5. Public Shared ReadOnly Property Instance As ZentraleLampenVerwaltung
    6. Get
    7. Return vInstance.Value
    8. End Get
    9. End Property
    10. 'Anzahl der aktiven Lampen:
    11. dim vAnzahlAktiv as integer = 0
    12. Public Property AnzahlAktiv = integer
    13. get
    14. return vAnzahlAktiv
    15. set(value as integer)
    16. vAnzahlAktiv = value
    17. end property
    18. 'Aktuelle Watt:
    19. dim vWattAktuell as integer = 0
    20. Public Property WattAktuell as integer
    21. get
    22. return vWattAktuell
    23. set(value as integer)
    24. vWattAktuell = value
    25. end property
    26. 'Hier kommen deine Lampen rein:
    27. Dim vLampe1Aktiv as Boolean = False
    28. Public Property Lampe1Aktiv as boolean
    29. get
    30. return vLampe1Aktiv
    31. set(value as boolean)
    32. vLampe1Aktiv = value
    33. end Property
    34. End Class


    Instanzieren kannst du dann diese Klasse in jeder deiner Forms bzw. auch in deinen Subroutinen:

    VB.NET-Quellcode

    1. dim vLampenZentrale as ZentraleLampenVerwaltung = ZentraleLampenVerwaltung.instance


    Dann kannst du in deinen Checkboxroutinen auf die aktuelle Watt und Anzahl der Lampen zugreifen...
    Code ist jetzt nur schnell aus dem Kopf geschrieben ohne direkte Kontrolle.
    Die Lösung ist nicht schön aber ein möglicher Ansatz.

    Ps: Hinsichtlich OOP wäre es schön eine Klasse "Lampen" zu haben mit den Properties: Name/Watt/Aktiv und diese dann entsprechend zu nutzen...
    mfG.
    Stephan
    Was ist mit dem Post #6 von @kaifreeman der zeigt dir doch da was auf.
    Hast du das nicht verstanden, überlesen oder etwas anderes?
    (PS. Ja ich weiß auch das die Lösung nicht die Optimalste ist aber es ist eine)
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Die Frage ist jetzt:
    Willst du was selber Programmieren ? Wenn ja dann hast du ja schon Tipps bekommen.
    Siehe Post 6. Ist sogar einmal Code und einmal noch am Ende wie man es OOP macht als Text.

    Wenn nein und jemand soll dir da was fertiges machen bist du im Marktplatz Bereich besser aufgehoben.
    Denn ich denke nicht das hier jemand dir einfach so deinen Code up2date bringt und dir dann auch noch
    im kleinsten Detail erklärt wohin mit dem Code. Das entspricht dann auch nicht mehr dem Sinn eines Forums.

    Denn hier geht das darum das du mit den Tipps / mit der Hilfestellung dir selbst eine Lösung erarbeitest daraus lernst und wir dir
    dann weiter helfen wie man da evtl noch was machen kann oder dir wieder Tipps / Links / Erklärungen geben was du
    wegen Fehler XY machen kannst.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hallo zusammen ich habe nach hin und her Google was zum Thema KLASSE gefunden, würde einer von euch mir helfen sie mir zu erklären damit ich sie auch verstehen würde das wäre echt lieb von euch ich kann euch auch den Code einfügen damit ihr auch mal gucken könnt ob es das richtige überhaupt wäre zum üben

    LG

    *Code steht zwei Postings weiter*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Nutze bitten den VB.NET BBCODE und pack diesen dann in einen Spoiler bei so langen Codes:

    Desweiteren bitte auch wenn das doof klingt, per PN geb ich hier keine Hilfe weil es dem Sinn des Forums nicht entspricht. Ich weiß nicht wie viele Leute du noch angeschrieben hast,
    aber ich denke da werden die meisten nicht drauf anspringen.
    Dann würde ich eher empfehlen anstatt dir bei Google Codes raus zu suchen das du dir nen Buch nimmst und das durch arbeitest ich weiß dieses öde "nimm dir nen Buch".
    Nur was bringt dir das nun wenn wir hier dir deine Klasse fertig machen und am Ende weißt du immer noch das selbe ?
    In den meisten Büchern gibt es zu den einzelnen Lektionen auch Übungsaufgaben damit man das auch in der Praxis macht.

    Im groben und ganzen hast du eine Klasse die mehrere Felder, Eigenschaften und Funktionen hat.
    Das heißt du kannst die Klasse instanzieren und mit ihr arbeiten ala:

    VB.NET-Quellcode

    1. Dim meinAuto As Car = New Car("typ", "motortype", 1) 'Ein neues Auto erzeugen
    2. meinAuto.NumberOfSeats = 4 'Anzahl der Sitze
    3. meinAuto.Accelerate(5) 'um 5 beschleunigen
    4. MessageBox.Show(meinAuto.Speed.ToString)


    Im Falle deiner Lampen hat die Klasse Lampe dann dinge wie: Watt, an/aus usw.

    Wie gesagt am besten mal nen Buch nehmen und das durch arbeiten hat noch nie jemanden geschadet.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Danke für die schnelle Antwort xChRoNiKx

    Spoiler anzeigen

    VB.NET-Quellcode

    1. VB.NET-Quelltext
    2. Imports System
    3. Imports System.Drawing
    4. Namespace Wikibooks.VBNet.Mein_neues_Auto
    5. ''' <summary>
    6. ''' Die Klasse Car beschreibt ein Auto.
    7. ''' </summary>
    8. Public Class Car
    9. #Region "Felder"
    10. Private m_id As Integer
    11. Private m_paint As Color
    12. Private m_type As String
    13. Private m_motortype As String
    14. Private m_isLeftSteered As Boolean
    15. Private m_numberOfSeats As Integer
    16. Private leftSignal As Boolean = False
    17. Private rightSignal As Boolean = False
    18. Private m_speed As Integer = 0
    19. #End Region
    20. #Region "Eigenschaften"
    21. ''' <summary>
    22. ''' ID liefert die Fabrikationsnummer des Wagens.
    23. ''' </summary>
    24. Public ReadOnly Property ID() As Integer
    25. Get
    26. Return m_id
    27. End Get
    28. End Property
    29. ''' <summary>
    30. ''' Paint ist die aktuelle Farbe der Lackierung oder legt diese fest.
    31. ''' </summary>
    32. Public Property Paint() As Color
    33. Get
    34. Return m_paint
    35. End Get
    36. Set
    37. m_paint = value
    38. End Set
    39. End Property
    40. ''' <summary>
    41. ''' Type ist der Typ des Autos (kann nur im Konstruktor festgelegt werden).
    42. ''' </summary>
    43. Public ReadOnly Property Type() As String
    44. Get
    45. Return m_type
    46. End Get
    47. End Property
    48. ''' <summary>
    49. ''' Motortype ist der Typ des eingebauten Motors. Er kann nur
    50. ''' beim Konstruktor festgelegt oder mit SetMotortype geändert werden.
    51. ''' </summary>
    52. Public ReadOnly Property Motortype() As String
    53. Get
    54. Return m_motortype
    55. End Get
    56. End Property
    57. ''' <summary>
    58. ''' IsLeftSteered = true, wenn das Lenkrad links eingebaut ist, oder
    59. ''' = false, wenn das Lenkrad rechts eingebaut ist.
    60. ''' Kann nur im Konstruktor festgelegt werden.
    61. ''' </summary>
    62. Public ReadOnly Property IsLeftSteered() As Boolean
    63. Get
    64. Return m_isLeftSteered
    65. End Get
    66. End Property
    67. ''' <summary>
    68. ''' NumberOfSeats gibt die Anzahl der Sitze zurück oder legt diese fest.
    69. ''' Es sind nur Zahlen von 1 bis 9 zulässig; der Standardwert ist 4.
    70. ''' </summary>
    71. Public Property NumberOfSeats() As Integer
    72. Get
    73. Return m_numberOfSeats
    74. End Get
    75. Set
    76. If value >= 1 And value <= 9 Then
    77. m_numberOfSeats = value
    78. Else
    79. m_numberOfSeats = 4
    80. End If
    81. End Set
    82. End Property
    83. ''' <summary>
    84. ''' Gibt die aktuelle Geschwindkeit zurück.
    85. ''' Änderungen sind nur mit Accelerate() und Delay() möglich.
    86. ''' </summary>
    87. Public ReadOnly Property Speed() As Integer
    88. Get
    89. Return m_speed
    90. End Get
    91. End Property
    92. #End Region
    93. #Region "Konstruktoren"
    94. ''' <summary>
    95. ''' Der Standardkonstruktor ohne Parameter darf nicht benutzt werden.
    96. ''' </summary>
    97. Private Sub New()
    98. End Sub
    99. ''' <summary>
    100. ''' Dieser Konstruktor übernimmt die wichtigsten Werte und setzt zusätzlich
    101. ''' Standardwerte: Linkslenkung, 4 Sitze, Farbe weiß
    102. ''' </summary>
    103. ''' <param name="type">Typ des Autos</param>
    104. ''' <param name="motortype">Typ des Motors</param>
    105. ''' <param name="id">Fabrikationsnummer</param>
    106. Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer)
    107. m_type = type
    108. m_motortype = motortype
    109. m_id = id
    110. m_isLeftSteered = True
    111. m_paint = Color.White
    112. NumberOfSeats = 4
    113. End Sub
    114. ''' <summary>
    115. ''' Dieser Konstruktor übernimmt sämtliche vorgesehenen Werte.
    116. ''' </summary>
    117. ''' <param name="type">Typ des Autos</param>
    118. ''' <param name="motortype">Typ des Motors</param>
    119. ''' <param name="id">Fabrikationsnummer</param>
    120. ''' <param name="isLeft">Position des Lenkrads: true = links, false = rechts</param>
    121. ''' <param name="numberofseats">Anzahl der Sitze</param>
    122. ''' <param name="paint">Farbe der Lackierun</param>
    123. Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer, _
    124. ByVal isLeft As Boolean, ByVal numberofseats As Integer, ByVal paint As Color)
    125. m_type = type
    126. m_motortype = motortype
    127. m_id = id
    128. m_isLeftSteered = isLeft
    129. m_paint = paint
    130. NumberOfSeats = numberofseats
    131. End Sub
    132. #End Region
    133. #Region "Public Methoden"
    134. ''' <summary>
    135. ''' Das Auto soll beschleunigt werden.
    136. ''' </summary>
    137. ''' <param name="diff">Betrag, um den die Geschwindkeit erhöht wird</param>
    138. Public Sub Accelerate(ByVal diff As Integer)
    139. If (diff > 0) Then
    140. speedChange(diff)
    141. End If
    142. End Sub
    143. ''' <summary>
    144. ''' Das Auto soll verzögert werden.
    145. ''' </summary>
    146. ''' <param name="diff">Betrag, um den die Geschwindkeit verringert wird</param>
    147. Public Sub Delay(ByVal diff As Integer)
    148. If (diff > 0) Then
    149. speedChange(-diff)
    150. End If
    151. End Sub
    152. ''' <summary>
    153. ''' Der linke Blinker wird betätigt.
    154. ''' </summary>
    155. ''' <param name="value">true = einschalten / false = ausschalten</param>
    156. Public Sub SetLeftSignal(ByVal value As Boolean)
    157. leftSignal = value
    158. rightSignal = False
    159. End Sub
    160. ''' <summary>
    161. ''' Der rechte Blinker wird betätigt.
    162. ''' </summary>
    163. ''' <param name="value">true = einschalten / false = ausschalten</param>
    164. Public Sub SetRightSignal(ByVal value As Boolean)
    165. leftSignal = False
    166. rightSignal = value
    167. End Sub
    168. ''' <summary>
    169. ''' Beide Blinker werden betätigt.
    170. ''' </summary>
    171. ''' <param name="value">true = einschalten / false = ausschalten</param>
    172. Public Sub SetBothSignals(ByVal value As Boolean)
    173. leftSignal = value
    174. rightSignal = value
    175. End Sub
    176. ''' <summary>
    177. ''' Der Typ des Motors wird geändert.
    178. ''' </summary>
    179. ''' <param name="value">Der Name des neuen Motortyps.</param>
    180. Public Sub SetMotortype(ByVal value As String)
    181. If Not [String].IsNullOrEmpty(value) Then
    182. m_motortype = value
    183. End If
    184. End Sub
    185. #End Region
    186. #Region "Private Methoden"
    187. Private Sub speedChange(ByVal diff As Integer)
    188. ' reagiere auf die Veränderung der Geschwindigkeit
    189. m_speed = m_speed + diff
    190. End Sub
    191. #End Region
    192. #Region "Aktuelle Werte anzeigen"
    193. ''' <summary>
    194. ''' Diese Methode gibt alle wichtigen Informationen zur aktuellen Instanz zurück.
    195. ''' </summary>
    196. ''' <returns>Ein String mit den Informationen in zwei Zeilen</returns>
    197. Public Overloads Overrides Function ToString() As String
    198. Return String.Format("Car: ID={0}, Typ={1}, Motor={2}, {3}," _
    199. & Environment.NewLine & "{4} Sitze, {5}", _
    200. m_id, m_type, m_motortype, m_paint, m_numberOfSeats, _
    201. IIf(Me.IsLeftSteered,"Linkssteuerung","Rechtssteuerung"))
    202. End Function
    203. ''' <summary>
    204. ''' Diese Methode gibt den aktuellen Status von Geschwindkeit und
    205. ''' Blinker an der Konsole aus.
    206. ''' </summary>
    207. Public Sub ShowValues()
    208. Console.Write("Geschwindigkeit: ")
    209. Console.Write(m_speed)
    210. Console.Write(" km/h - ")
    211. Console.WriteLine(ShowSignals())
    212. End Sub
    213. ''' <summary>
    214. ''' Diese Methode gibt den aktuellen Status des Blinkers an.
    215. ''' </summary>
    216. ''' <returns>Texthinweis auf Warnblinker/Links/Rechts/Aus.</returns>
    217. Public Function ShowSignals() As String
    218. Dim result As String
    219. If leftSignal And rightSignal Then
    220. result = "Warnblinker ein"
    221. ElseIf leftSignal Then
    222. result = "Links blinken"
    223. ElseIf rightSignal Then
    224. result = "Rechts blinken"
    225. Else
    226. result = "Blinker aus"
    227. End If
    228. Return result
    229. End Function
    230. #End Region
    231. End Class
    232. End Namespace
    Ich stimme @xChRoNiKx zu. Organisiere dir ein Buch und arbeite dieses gewissenhaft von vorne bis nach hinten durch. Hab ich vor einigen Jahren so gemacht. Hilft nix sich Zeig zusammen zu googlen. Kurzeitig bringt es dich zwar (so glaubt man zumindest) weiter, jedoch gelernt hat man dadurch nichts.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Danke für die schnelle Antwort xChRoNiKx,

    nur weiß ich nicht wie ich meinen Idee nun in die Klasse einfügen damit diese auch Funktioniert

    LG


    Spoiler anzeigen

    VB.NET-Quellcode

    1. VB.NET-Quelltext
    2. Imports System
    3. Imports System.Drawing
    4. Namespace Wikibooks.VBNet.Mein_neues_Auto
    5. ''' <summary>
    6. ''' Die Klasse Car beschreibt ein Auto.
    7. ''' </summary>
    8. Public Class Car
    9. #Region "Felder"
    10. Private m_id As Integer
    11. Private m_paint As Color
    12. Private m_type As String
    13. Private m_motortype As String
    14. Private m_isLeftSteered As Boolean
    15. Private m_numberOfSeats As Integer
    16. Private leftSignal As Boolean = False
    17. Private rightSignal As Boolean = False
    18. Private m_speed As Integer = 0
    19. #End Region
    20. #Region "Eigenschaften"
    21. ''' <summary>
    22. ''' ID liefert die Fabrikationsnummer des Wagens.
    23. ''' </summary>
    24. Public ReadOnly Property ID() As Integer
    25. Get
    26. Return m_id
    27. End Get
    28. End Property
    29. ''' <summary>
    30. ''' Paint ist die aktuelle Farbe der Lackierung oder legt diese fest.
    31. ''' </summary>
    32. Public Property Paint() As Color
    33. Get
    34. Return m_paint
    35. End Get
    36. Set
    37. m_paint = value
    38. End Set
    39. End Property
    40. ''' <summary>
    41. ''' Type ist der Typ des Autos (kann nur im Konstruktor festgelegt werden).
    42. ''' </summary>
    43. Public ReadOnly Property Type() As String
    44. Get
    45. Return m_type
    46. End Get
    47. End Property
    48. ''' <summary>
    49. ''' Motortype ist der Typ des eingebauten Motors. Er kann nur
    50. ''' beim Konstruktor festgelegt oder mit SetMotortype geändert werden.
    51. ''' </summary>
    52. Public ReadOnly Property Motortype() As String
    53. Get
    54. Return m_motortype
    55. End Get
    56. End Property
    57. ''' <summary>
    58. ''' IsLeftSteered = true, wenn das Lenkrad links eingebaut ist, oder
    59. ''' = false, wenn das Lenkrad rechts eingebaut ist.
    60. ''' Kann nur im Konstruktor festgelegt werden.
    61. ''' </summary>
    62. Public ReadOnly Property IsLeftSteered() As Boolean
    63. Get
    64. Return m_isLeftSteered
    65. End Get
    66. End Property
    67. ''' <summary>
    68. ''' NumberOfSeats gibt die Anzahl der Sitze zurück oder legt diese fest.
    69. ''' Es sind nur Zahlen von 1 bis 9 zulässig; der Standardwert ist 4.
    70. ''' </summary>
    71. Public Property NumberOfSeats() As Integer
    72. Get
    73. Return m_numberOfSeats
    74. End Get
    75. Set
    76. If value >= 1 And value <= 9 Then
    77. m_numberOfSeats = value
    78. Else
    79. m_numberOfSeats = 4
    80. End If
    81. End Set
    82. End Property
    83. ''' <summary>
    84. ''' Gibt die aktuelle Geschwindkeit zurück.
    85. ''' Änderungen sind nur mit Accelerate() und Delay() möglich.
    86. ''' </summary>
    87. Public ReadOnly Property Speed() As Integer
    88. Get
    89. Return m_speed
    90. End Get
    91. End Property
    92. #End Region
    93. #Region "Konstruktoren"
    94. ''' <summary>
    95. ''' Der Standardkonstruktor ohne Parameter darf nicht benutzt werden.
    96. ''' </summary>
    97. Private Sub New()
    98. End Sub
    99. ''' <summary>
    100. ''' Dieser Konstruktor übernimmt die wichtigsten Werte und setzt zusätzlich
    101. ''' Standardwerte: Linkslenkung, 4 Sitze, Farbe weiß
    102. ''' </summary>
    103. ''' <param name="type">Typ des Autos</param>
    104. ''' <param name="motortype">Typ des Motors</param>
    105. ''' <param name="id">Fabrikationsnummer</param>
    106. Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer)
    107. m_type = type
    108. m_motortype = motortype
    109. m_id = id
    110. m_isLeftSteered = True
    111. m_paint = Color.White
    112. NumberOfSeats = 4
    113. End Sub
    114. ''' <summary>
    115. ''' Dieser Konstruktor übernimmt sämtliche vorgesehenen Werte.
    116. ''' </summary>
    117. ''' <param name="type">Typ des Autos</param>
    118. ''' <param name="motortype">Typ des Motors</param>
    119. ''' <param name="id">Fabrikationsnummer</param>
    120. ''' <param name="isLeft">Position des Lenkrads: true = links, false = rechts</param>
    121. ''' <param name="numberofseats">Anzahl der Sitze</param>
    122. ''' <param name="paint">Farbe der Lackierun</param>
    123. Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer, _
    124. ByVal isLeft As Boolean, ByVal numberofseats As Integer, ByVal paint As Color)
    125. m_type = type
    126. m_motortype = motortype
    127. m_id = id
    128. m_isLeftSteered = isLeft
    129. m_paint = paint
    130. NumberOfSeats = numberofseats
    131. End Sub
    132. #End Region
    133. #Region "Public Methoden"
    134. ''' <summary>
    135. ''' Das Auto soll beschleunigt werden.
    136. ''' </summary>
    137. ''' <param name="diff">Betrag, um den die Geschwindkeit erhöht wird</param>
    138. Public Sub Accelerate(ByVal diff As Integer)
    139. If (diff > 0) Then
    140. speedChange(diff)
    141. End If
    142. End Sub
    143. ''' <summary>
    144. ''' Das Auto soll verzögert werden.
    145. ''' </summary>
    146. ''' <param name="diff">Betrag, um den die Geschwindkeit verringert wird</param>
    147. Public Sub Delay(ByVal diff As Integer)
    148. If (diff > 0) Then
    149. speedChange(-diff)
    150. End If
    151. End Sub
    152. ''' <summary>
    153. ''' Der linke Blinker wird betätigt.
    154. ''' </summary>
    155. ''' <param name="value">true = einschalten / false = ausschalten</param>
    156. Public Sub SetLeftSignal(ByVal value As Boolean)
    157. leftSignal = value
    158. rightSignal = False
    159. End Sub
    160. ''' <summary>
    161. ''' Der rechte Blinker wird betätigt.
    162. ''' </summary>
    163. ''' <param name="value">true = einschalten / false = ausschalten</param>
    164. Public Sub SetRightSignal(ByVal value As Boolean)
    165. leftSignal = False
    166. rightSignal = value
    167. End Sub
    168. ''' <summary>
    169. ''' Beide Blinker werden betätigt.
    170. ''' </summary>
    171. ''' <param name="value">true = einschalten / false = ausschalten</param>
    172. Public Sub SetBothSignals(ByVal value As Boolean)
    173. leftSignal = value
    174. rightSignal = value
    175. End Sub
    176. ''' <summary>
    177. ''' Der Typ des Motors wird geändert.
    178. ''' </summary>
    179. ''' <param name="value">Der Name des neuen Motortyps.</param>
    180. Public Sub SetMotortype(ByVal value As String)
    181. If Not [String].IsNullOrEmpty(value) Then
    182. m_motortype = value
    183. End If
    184. End Sub
    185. #End Region
    186. #Region "Private Methoden"
    187. Private Sub speedChange(ByVal diff As Integer)
    188. ' reagiere auf die Veränderung der Geschwindigkeit
    189. m_speed = m_speed + diff
    190. End Sub
    191. #End Region
    192. #Region "Aktuelle Werte anzeigen"
    193. ''' <summary>
    194. ''' Diese Methode gibt alle wichtigen Informationen zur aktuellen Instanz zurück.
    195. ''' </summary>
    196. ''' <returns>Ein String mit den Informationen in zwei Zeilen</returns>
    197. Public Overloads Overrides Function ToString() As String
    198. Return String.Format("Car: ID={0}, Typ={1}, Motor={2}, {3}," _
    199. & Environment.NewLine & "{4} Sitze, {5}", _
    200. m_id, m_type, m_motortype, m_paint, m_numberOfSeats, _
    201. IIf(Me.IsLeftSteered,"Linkssteuerung","Rechtssteuerung"))
    202. End Function
    203. ''' <summary>
    204. ''' Diese Methode gibt den aktuellen Status von Geschwindkeit und
    205. ''' Blinker an der Konsole aus.
    206. ''' </summary>
    207. Public Sub ShowValues()
    208. Console.Write("Geschwindigkeit: ")
    209. Console.Write(m_speed)
    210. Console.Write(" km/h - ")
    211. Console.WriteLine(ShowSignals())
    212. End Sub
    213. ''' <summary>
    214. ''' Diese Methode gibt den aktuellen Status des Blinkers an.
    215. ''' </summary>
    216. ''' <returns>Texthinweis auf Warnblinker/Links/Rechts/Aus.</returns>
    217. Public Function ShowSignals() As String
    218. Dim result As String
    219. If leftSignal And rightSignal Then
    220. result = "Warnblinker ein"
    221. ElseIf leftSignal Then
    222. result = "Links blinken"
    223. ElseIf rightSignal Then
    224. result = "Rechts blinken"
    225. Else
    226. result = "Blinker aus"
    227. End If
    228. Return result
    229. End Function
    230. #End Region
    231. End Class
    232. End Namespace
    Wie gesagt dafür am besten Buch nehmen und lernen.
    Es bringt dir null wenn ich dir nun sage was du wo rein machst wenn du den Sinn dahinter nicht verstehst.
    Du hast doch ein Buch da wie ich lese also arbeite das durch da sollte dann eine helle Erleuchtung kommen.

    Und du hast ja in Post #6 von kaifreeman auch schon Beispiele mit erklärung bekommen...
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Ganz ehrlich, Du bist Beratungsresistent.
    Du bettelst hier nach fertigen Code und nimmst Dir NICHTS von dem an was hier geraten wurde.
    Damit hast du es bei mir auf die Ignore-Liste geschafft.

    @xChRoNiKx
    Respekt das Du dabei noch so ruhig bleibst. :thumbsup:
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    @Der Laie ja sicherlich weiß ich wie ich das umsetzten würde.
    Wie ich aber auch schon gesagt habe wird es dir nicht viel bringen wenn dir einer das fertige Stück Code hier postet.
    Solltest du hier mal Ansätze einbringen wie du es versuchst und evtl nicht geklappt hat dann sieht die Sache wieder anders aus.
    Aber solange ich bzw auch andere nicht sehen das du etwas selber versuchst anhand der Beispiele bzw. auch Anhand deiner selbst
    geposteten Beispiel Klasse ist das eine Sache wo wir uns im Kreis drehen.

    Wenn du nichts bei lernen willst und es fertig haben willst dann Marktplatz biete eine Gegenleistung und dann macht das auch jemand.

    und @Akanel Nunja Aufregung bringt ja nichts und ist ungesund :) Irgendwann lohnt sich die mühe hier und das wird dann auch der TE einsehen
    sobald er dann unsere Tipps befolgt und mal ins Buch schaut und einfach probiert und so.
    Aber der Weg dahin kann auch mal steinig sein :P
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen