A C#-ban a tulajdonság egy osztály olyan tagja, amely hozzáférést biztosít az osztályon belüli adatokhoz. A hívók beállíthatják vagy lekérdezhetik (get) az adatokat. A tulajdonságok vagy automatikusan implementáltak, vagy háttérmezővel rendelkeznek. Egy set és/vagy egy get hozzáférőt tartalmaznak. Más nyelvekben a „mutátor” nagyjából egy set hozzáférővel egyenértékű, a „hozzáférő” pedig nagyjából egy get hozzáférővel, bár a szintaxis felépítése teljesen más.
Egy tulajdonság beállításakor a bemeneti érték validálható, formázható vagy más módon manipulálható, sőt valójában bármilyen programozási művelet végrehajtható, amely az osztályban lévő kódból elérhető.
Hasonlóképpen egy tulajdonság lekérdezésekor az adatok kiszámíthatók vagy formázhatók, és ismét bármilyen programozási művelet végrehajtható, amely az osztály számára elérhető.
A tulajdonságoknak ugyanúgy vannak hozzáférés-módosítóik (public, private stb.), mint más
osztálytagoknak, de a set hozzáférő hozzáférési szintje független lehet a lekérdező (get)
hozzáférőétől, és fordítva. Egy tulajdonságnak nem kell mindkét hozzáférővel rendelkeznie; lehet csak az egyik (vagy get, vagy set).
A tulajdonságok kifejezésének alapvető szintaxisa kétféle formát ölthet:
private int myField;
public int MyProperty
{
get { return myField; }
set { myField = value; }
}
public int MyProperty { get; private set; } = 42;
Az inicializálás nem kötelező.
Ebben a feladatban egy mérleget fogsz modellezni, amelynek mértékegysége a kilogramm.
Hat részfeladatot kapsz, amelyek mindegyikében egy vagy több tulajdonságot kell megvalósítanod:
A különböző igények kiszolgálása érdekében minden mérleg testre szabható egy pontossággal (a tizedesjel utáni számjegyek száma).
Valósítsd meg a WeighingMachine osztályt úgy, hogy legyen egy csak olvasható Precision tulajdonsága, amely a konstruktor precision argumentumának értékét veszi fel:
var wm = new WeighingMachine(precision: 3);
// => wm.Precision == 3
Valósítsd meg a WeighingMachine.Weight tulajdonságot úgy, hogy a súly lekérdezhető és beállítható legyen:
var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.5;
// => wm.Weight == 60.5
Nyilvánvaló, hogy valakinek nem lehet negatív a súlya.
Adj hozzá ellenőrzést a WeighingMachine.Weight tulajdonsághoz, hogy ArgumentOutOfRangeException kivételt dobjon, amikor negatív súlyra próbálják állítani:
var wm = new WeighingMachine(precision: 3);
wm.Weight = -10; // Throws an ArgumentOutOfRangeException
A tára-beállítás bármilyen érték lehet (akár negatív, vagy olyan érték, amely negatívvá teszi a kijelzett súlyt).
Valósítsd meg a WeighingMachine.TareAdjustment tulajdonságot, hogy a tára-beállítás beállítható legyen:
var wm = new WeighingMachine(precision: 3);
wm.TareAdjustment = -10.6;
// => wm.TareAdjustment == -10.6
Alapos tesztelés után úgy tűnik, hogy egy gyártási hiba miatt minden mérleg hajlamos 5-tel túlbecsülni a súlyt.
Módosítsd a WeighingMachine.TareAdjustment tulajdonságot úgy, hogy az alapértelmezett értéke 5 legyen.
var wm = new WeighingMachine(precision: 3);
// => wm.TareAdjustment == 5.0
Valósítsd meg a WeighingMachine.DisplayWeight tulajdonságot, amely visszaad egy stringet, amely a tára-beállítás utáni súlyt mutatja, a megfelelő pontossággal és a hozzáadott mértékegységgel.
Vedd figyelembe, hogy:
display-weight = input-weight - tare-adjustment
var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.567;
wm.TareAdjustment = 10;
// => wm.DisplayWeight == "50.567 kg"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.