Waage

Waage

Lernübung

Einführung

Eigenschaften

Eine Eigenschaft in C# ist ein Member einer Klasse, das den Zugriff auf Daten innerhalb dieser Klasse ermöglicht. Aufrufer können die Daten setzen oder abrufen (get). Eigenschaften können entweder automatisch implementiert sein oder ein Backing-Field haben. Sie bestehen aus einem set-Accessor und/oder einem get-Accessor. In manchen anderen Sprachen entspricht ein „Mutator“ ungefähr einem set-Accessor und ein „Accessor“ ungefähr einem get-Accessor, obwohl der Aufbau der Syntax völlig anders ist.

Beim Setzen einer Eigenschaft kann der Eingabewert validiert, formatiert oder anderweitig bearbeitet werden. Tatsächlich kann jede programmatische Operation ausgeführt werden, auf die der Code in der Klasse zugreifen kann.

Ebenso können beim Abrufen einer Eigenschaft Daten berechnet oder formatiert werden, und auch hier kann jede programmatische Operation ausgeführt werden, die der Klasse zur Verfügung steht.

Eigenschaften haben Zugriffsmodifikatoren (public, private usw.) genauso wie andere Klassenmember. Der set-Accessor kann jedoch eine Zugriffsebene haben, die unabhängig vom get-Accessor ist, und umgekehrt. Eine Eigenschaft muss nicht beide Accessoren haben, sie kann auch nur einen besitzen (entweder get oder set).

Die grundlegende Syntax für Eigenschaften kann zwei Formen annehmen:

Feld-/ausdrucksbasierte Eigenschaften:

private int myField;
public int MyProperty
{
    get { return myField; }
    set { myField = value; }
}

Automatisch implementierte Eigenschaften

public int MyProperty { get; private set; } = 42;

Die Initialisierung ist optional.

Anleitung

In dieser Übung modellierst du eine Waage mit Kilogramm als Einheit.

Du hast 6 Aufgaben, für die du jeweils eine oder mehrere Eigenschaften implementieren musst:

1. Gib der Waage eine Genauigkeit

Um unterschiedlichen Anforderungen gerecht zu werden, lässt sich jede Waage mit einer Genauigkeit konfigurieren (die Anzahl der Nachkommastellen). Implementiere die Klasse WeighingMachine mit einer schreibgeschützten Eigenschaft Precision, die auf das Argument precision des Konstruktors gesetzt wird:

var wm = new WeighingMachine(precision: 3);

//  => wm.Precision == 3

2. Erlaube, dass das Gewicht der Waage gesetzt werden kann

Implementiere die Eigenschaft WeighingMachine.Weight so, dass das Gewicht abgerufen und gesetzt werden kann:

var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.5;

//  => wm.Weight == 60.5

3. Stelle sicher, dass ein negatives Gewicht als Eingabe abgelehnt wird

Natürlich kann niemand ein negatives Gewicht haben. Füge der Eigenschaft WeighingMachine.Weight eine Validierung hinzu, die eine ArgumentOutOfRangeException auslöst, wenn versucht wird, sie auf ein negatives Gewicht zu setzen:

var wm = new WeighingMachine(precision: 3);
wm.Weight = -10; // Throws an ArgumentOutOfRangeException

4. Erlaube, dass eine Tara-Anpassung auf die Waage angewendet wird

Die Tara-Anpassung kann jeder Wert sein (sogar negativ oder ein Wert, der das angezeigte Gewicht negativ macht). Implementiere die Eigenschaft WeighingMachine.TareAdjustment so, dass die Tara-Anpassung gesetzt werden kann:

var wm = new WeighingMachine(precision: 3);
wm.TareAdjustment = -10.6;

// => wm.TareAdjustment == -10.6

5. Stelle sicher, dass die Waage eine Standard-Tara-Anpassung hat

Nach einigen gründlichen Tests stellt sich heraus, dass alle Waagen aufgrund eines Herstellungsfehlers dazu neigen, das Gewicht um 5 zu überschätzen. Ändere die Eigenschaft WeighingMachine.TareAdjustment so, dass ihr Standardwert 5 ist.

var wm = new WeighingMachine(precision: 3);

// => wm.TareAdjustment == 5.0

6. Erlaube, dass das Gewicht abgerufen werden kann

Implementiere die Eigenschaft WeighingMachine.DisplayWeight, die einen String zurückgeben soll, der das Gewicht nach der Tara-Anpassung zeigt, mit der korrekten Genauigkeit und der angehängten Einheit. Beachte: display-weight = input-weight - tare-adjustment

var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.567;
wm.TareAdjustment = 10;

// => wm.DisplayWeight == "50.567 kg"
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Waage zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.