Arbeiten mit .NET: Allgemeines: Codes/ Car.vb
Imports System Imports System.Drawing
Namespace Wikibooks.VBNet.Mein_neues_Auto <summary> Die Klasse Car beschreibt ein Auto. </summary> Public Class Car
#Region "Felder" Private m_id As Integer Private m_paint As Color Private m_type As String Private m_motortype As String Private m_isLeftSteered As Boolean Private m_numberOfSeats As Integer Private leftSignal As Boolean = False Private rightSignal As Boolean = False Private m_speed As Integer = 0 #End Region
#Region "Eigenschaften" <summary> ID liefert die Fabrikationsnummer des Wagens. </summary> Public ReadOnly Property ID() As Integer Get Return m_id End Get End Property
<summary> Paint ist die aktuelle Farbe der Lackierung oder legt diese fest. </summary> Public Property Paint() As Color Get Return m_paint End Get Set m_paint = value End Set End Property
<summary> Type ist der Typ des Autos (kann nur im Konstruktor festgelegt werden). </summary> Public ReadOnly Property Type() As String Get Return m_type End Get End Property
<summary> Motortype ist der Typ des eingebauten Motors. Er kann nur beim Konstruktor festgelegt oder mit SetMotortype geändert werden. </summary> Public ReadOnly Property Motortype() As String Get Return m_motortype End Get End Property
<summary> IsLeftSteered = true, wenn das Lenkrad links eingebaut ist, oder = false, wenn das Lenkrad rechts eingebaut ist. Kann nur im Konstruktor festgelegt werden. </summary> Public ReadOnly Property IsLeftSteered() As Boolean Get Return m_isLeftSteered End Get End Property
<summary> NumberOfSeats gibt die Anzahl der Sitze zurück oder legt diese fest. Es sind nur Zahlen von 1 bis 9 zulässig; der Standardwert ist 4. </summary> Public Property NumberOfSeats() As Integer Get Return m_numberOfSeats End Get Set If value >= 1 And value <= 9 Then m_numberOfSeats = value Else m_numberOfSeats = 4 End If End Set End Property
<summary> Gibt die aktuelle Geschwindkeit zurück. Änderungen sind nur mit Accelerate() und Delay() möglich. </summary> Public ReadOnly Property Speed() As Integer Get Return m_speed End Get End Property
#End Region
#Region "Konstruktoren" <summary> Der Standardkonstruktor ohne Parameter darf nicht benutzt werden. </summary> Private Sub New() End Sub
<summary> Dieser Konstruktor übernimmt die wichtigsten Werte und setzt zusätzlich Standardwerte: Linkslenkung, 4 Sitze, Farbe weiß </summary> <param name="type">Typ des Autos</param> <param name="motortype">Typ des Motors</param> <param name="id">Fabrikationsnummer</param> Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer) m_type = type m_motortype = motortype m_id = id m_isLeftSteered = True m_paint = Color.White NumberOfSeats = 4 End Sub
<summary> Dieser Konstruktor übernimmt sämtliche vorgesehenen Werte. </summary> <param name="type">Typ des Autos</param> <param name="motortype">Typ des Motors</param> <param name="id">Fabrikationsnummer</param> <param name="isLeft">Position des Lenkrads: true = links, false = rechts</param> <param name="numberofseats">Anzahl der Sitze</param> <param name="paint">Farbe der Lackierun</param> Public Sub New(ByVal type As String, ByVal motortype As String, ByVal id As Integer, _ ByVal isLeft As Boolean, ByVal numberofseats As Integer, ByVal paint As Color) m_type = type m_motortype = motortype m_id = id m_isLeftSteered = isLeft m_paint = paint NumberOfSeats = numberofseats End Sub #End Region
#Region "Public Methoden" <summary> Das Auto soll beschleunigt werden. </summary> <param name="diff">Betrag, um den die Geschwindkeit erhöht wird</param> Public Sub Accelerate(ByVal diff As Integer) If (diff > 0) Then speedChange(diff) End If End Sub
<summary> Das Auto soll verzögert werden. </summary> <param name="diff">Betrag, um den die Geschwindkeit verringert wird</param> Public Sub Delay(ByVal diff As Integer) If (diff > 0) Then speedChange(-diff) End If End Sub
<summary> Der linke Blinker wird betätigt. </summary> <param name="value">true = einschalten / false = ausschalten</param> Public Sub SetLeftSignal(ByVal value As Boolean) leftSignal = value rightSignal = False End Sub
<summary> Der rechte Blinker wird betätigt. </summary> <param name="value">true = einschalten / false = ausschalten</param> Public Sub SetRightSignal(ByVal value As Boolean) leftSignal = False rightSignal = value End Sub
<summary> Beide Blinker werden betätigt. </summary> <param name="value">true = einschalten / false = ausschalten</param> Public Sub SetBothSignals(ByVal value As Boolean) leftSignal = value rightSignal = value End Sub
<summary> Der Typ des Motors wird geändert. </summary> <param name="value">Der Name des neuen Motortyps.</param> Public Sub SetMotortype(ByVal value As String) If Not [String].IsNullOrEmpty(value) Then m_motortype = value End If End Sub #End Region
#Region "Private Methoden" Private Sub speedChange(ByVal diff As Integer) ' reagiere auf die Veränderung der Geschwindigkeit m_speed = m_speed + diff End Sub #End Region
#Region "Aktuelle Werte anzeigen" <summary> Diese Methode gibt alle wichtigen Informationen zur aktuellen Instanz zurück. </summary> <returns>Ein String mit den Informationen in zwei Zeilen</returns> Public Overloads Overrides Function ToString() As String Return String.Format("Car: ID={0}, Typ={1}, Motor={2}, {3}," _ & Environment.NewLine & "{4} Sitze, {5}", _ m_id, m_type, m_motortype, m_paint, m_numberOfSeats, _ IIf(Me.IsLeftSteered,"Linkssteuerung","Rechtssteuerung")) End Function
<summary> Diese Methode gibt den aktuellen Status von Geschwindkeit und Blinker an der Konsole aus. </summary> Public Sub ShowValues() Console.Write("Geschwindigkeit: ") Console.Write(m_speed) Console.Write(" km/h - ") Console.WriteLine(ShowSignals()) End Sub
<summary> Diese Methode gibt den aktuellen Status des Blinkers an. </summary> <returns>Texthinweis auf Warnblinker/Links/Rechts/Aus.</returns> Public Function ShowSignals() As String Dim result As String If leftSignal And rightSignal Then result = "Warnblinker ein" ElseIf leftSignal Then result = "Links blinken" ElseIf rightSignal Then result = "Rechts blinken" Else result = "Blinker aus" End If Return result End Function #End Region
End Class End Namespace