Arbeiten mit .NET: Allgemeines: Codes/ Die Klasse Car
Erscheinungsbild
Die folgenden Seiten enthalten zum Download eine exakte Kopie des nachstehenden Codes:
- Arbeiten mit .NET: Allgemeines: Codes/ Car.cs für C#
- Arbeiten mit .NET: Allgemeines: Codes/ Car.vb für VB
Wenn Sie den Code herunterladen und speichern wollen, dann drücken Sie mit Rechtsklick auf den Link und wählen "Ziel speichern unter...".
Die Klasse Car
C#-Quelltext
using System;
using System.Drawing;
namespace Wikibooks.CSharp.Mein_neues_Auto
{
/// <summary>
/// Die Klasse Car beschreibt ein Auto.
/// </summary>
public class Car
{
#region Felder
private int id;
private Color paint;
private string type;
private string motortype;
private bool isLeftSteered;
private int numberOfSeats;
private bool leftSignal = false;
private bool rightSignal = false;
private int speed = 0;
#endregion
#region Eigenschaften
/// <summary>
/// ID liefert die Fabrikationsnummer des Wagens.
/// </summary>
public int ID {
get { return id; }
}
/// <summary>
/// Paint ist die aktuelle Farbe der Lackierung oder legt diese fest.
/// </summary>
public Color Paint {
get { return paint; }
set { paint = value; }
}
/// <summary>
/// Type ist der Typ des Autos (kann nur im Konstruktor festgelegt werden).
/// </summary>
public string Type {
get { return type; }
}
/// <summary>
/// Motortype ist der Typ des eingebauten Motors. Er kann nur
/// beim Konstruktor festgelegt oder mit SetMotortype geändert werden.
/// </summary>
public string Motortype {
get { return motortype; }
}
/// <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 bool IsLeftSteered {
get { return isLeftSteered; }
}
/// <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 int NumberOfSeats {
get { return numberOfSeats; }
set
{
if (value >= 1 && value <= 9)
numberOfSeats = value;
else
numberOfSeats = 4;
}
}
/// <summary>
/// Gibt die aktuelle Geschwindkeit zurück.
/// Änderungen sind nur mit Accelerate() und Delay() möglich.
/// </summary>
public int Speed {
get { return speed; }
}
#endregion
#region Konstruktoren
/// <summary>
/// Der Standardkonstruktor ohne Parameter darf nicht benutzt werden.
/// </summary>
private Car()
{
}
/// <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 Car(string type, string motortype, int id)
{
this.type = type;
this.motortype = motortype;
this.id = id;
this.isLeftSteered = true;
this.paint = Color.White;
this.NumberOfSeats = 4;
}
/// <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 Car(string type, string motortype, int id, bool isLeft,
int numberofseats, Color paint)
{
this.type = type;
this.motortype = motortype;
this.id = id;
this.isLeftSteered = isLeft;
this.paint = paint;
this.NumberOfSeats = numberofseats;
}
#endregion
#region Public Methoden
/// <summary>
/// Das Auto soll beschleunigt werden.
/// </summary>
/// <param name="diff">Betrag, um den die Geschwindkeit erhöht wird</param>
public void Accelerate(int diff)
{
if (diff > 0)
speedChange(diff);
}
/// <summary>
/// Das Auto soll verzögert werden.
/// </summary>
/// <param name="diff">Betrag, um den die Geschwindkeit verringert wird</param>
public void Delay(int diff)
{
if (diff > 0)
speedChange(-diff);
}
/// <summary>
/// Der linke Blinker wird betätigt.
/// </summary>
/// <param name="value">true = einschalten / false = ausschalten</param>
public void SetLeftSignal(bool value)
{
leftSignal = value;
rightSignal = false;
}
/// <summary>
/// Der rechte Blinker wird betätigt.
/// </summary>
/// <param name="value">true = einschalten / false = ausschalten</param>
public void SetRightSignal(bool value)
{
leftSignal = false;
rightSignal = value;
}
/// <summary>
/// Beide Blinker werden betätigt.
/// </summary>
/// <param name="value">true = einschalten / false = ausschalten</param>
public void SetBothSignals(bool value)
{
leftSignal = value;
rightSignal = value;
}
/// <summary>
/// Der Typ des Motors wird geändert.
/// </summary>
/// <param name="value">Der Name des neuen Motortyps.</param>
public void SetMotortype(string value)
{
if (! String.IsNullOrEmpty(value) )
motortype = value;
}
#endregion
#region Private Methoden
private void speedChange(int diff)
{
// reagiere auf die Veränderung der Geschwindigkeit
speed = speed + diff;
}
#endregion
#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 override string ToString()
{
return String.Format("Car: ID={0}, Typ={1}, Motor={2}, {3},\r\n{4} Sitze, {5}",
id, type, motortype, paint, numberOfSeats,
this.IsLeftSteered ? "Linkssteuerung" : "Rechtssteuerung");
}
/// <summary>
/// Diese Methode gibt den aktuellen Status von Geschwindkeit und
/// Blinker an der Konsole aus.
/// </summary>
public void ShowValues()
{
Console.Write("Geschwindigkeit: ");
Console.Write(speed);
Console.Write(" km/h - ");
Console.WriteLine( ShowSignals() );
}
/// <summary>
/// Diese Methode gibt den aktuellen Status des Blinkers an.
/// </summary>
/// <returns>Texthinweis auf Warnblinker/Links/Rechts/Aus.</returns>
public string ShowSignals()
{
string result;
if (leftSignal && rightSignal)
result = "Warnblinker ein";
else if (leftSignal)
result = "Links blinken";
else if (rightSignal)
result = "Rechts blinken";
else
result = "Blinker aus";
return result;
}
#endregion
}
}
VB.NET-Quelltext
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