Arbeiten mit .NET: Allgemeines: Codes/ Car.cs

Aus Wikibooks

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

} }