Tracks
/
C#
C#
/
Ejercicios
/
Báscula
Báscula

Báscula

Ejercicio de aprendizaje

Introducción

Propiedades

Una propiedad en C# es un miembro de una clase que da acceso a los datos dentro de esa clase. Quienes la llaman pueden establecer o recuperar (get) los datos. Las propiedades pueden ser autoimplementadas o tener un campo de respaldo. Se componen de un descriptor de acceso set y/o un descriptor de acceso get. En algunos otros lenguajes, un «mutator» es más o menos equivalente a un descriptor de acceso set y un «accessor» es más o menos equivalente a un descriptor de acceso get, aunque la composición de la sintaxis es completamente diferente.

Al establecer una propiedad, el argumento se puede validar, formatear o manipular de alguna otra manera y, de hecho, se puede ejecutar cualquier operación programática a la que tenga acceso el código de la clase.

De manera similar, al recuperar una propiedad los datos se pueden calcular o formatear y, de nuevo, se puede ejecutar cualquier operación programática disponible para la clase.

Las propiedades tienen modificadores de acceso (public, private, etc.) igual que otros miembros de la clase, pero el descriptor de acceso set puede tener un nivel de acceso independiente del descriptor de acceso get y viceversa. Una propiedad no tiene que tener ambos descriptores de acceso, puede tener solo uno (ya sea get o set).

La sintaxis básica para expresar propiedades puede tomar dos formas:

Propiedades respaldadas por campo o expresión:

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

Propiedades autoimplementadas

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

La inicialización es opcional.

Instrucciones

En este ejercicio vas a modelar una báscula con kilogramos como unidad.

Tienes 6 tareas, y cada una requiere que implementes una o más propiedades:

1. Permite que la báscula tenga una precisión

Para adaptarnos a distintas necesidades, permitimos personalizar cada báscula con una precisión (la cantidad de dígitos después del separador decimal). Implementa la clase WeighingMachine para que tenga una propiedad Precision de solo lectura, establecida con el argumento precision del constructor:

var wm = new WeighingMachine(precision: 3);

//  => wm.Precision == 3

2. Permite establecer el peso en la báscula

Implementa la propiedad WeighingMachine.Weight para permitir obtener y establecer el peso:

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

//  => wm.Weight == 60.5

3. Asegúrate de que se rechace un peso de entrada negativo

Claramente, nadie puede tener un peso negativo. Agrega validación a la propiedad WeighingMachine.Weight para que lance una ArgumentOutOfRangeException cuando se intente asignarle un peso negativo:

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

4. Permite aplicar un ajuste de tara a la báscula

El ajuste de tara puede ser cualquier valor (incluso negativo, o un valor que haga que el peso mostrado sea negativo) Implementa la propiedad WeighingMachine.TareAdjustment para permitir establecer el ajuste de tara:

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

// => wm.TareAdjustment == -10.6

5. Asegúrate de que la báscula tenga un ajuste de tara predeterminado

Después de unas pruebas exhaustivas, parece que, debido a un problema de fabricación, todas las básculas tienen una tendencia a sobreestimar el peso en 5. Cambia la propiedad WeighingMachine.TareAdjustment para que su valor predeterminado sea 5.

var wm = new WeighingMachine(precision: 3);

// => wm.TareAdjustment == 5.0

6. Permite obtener el peso

Implementa la propiedad WeighingMachine.DisplayWeight, que debe devolver un string que muestre el peso después del ajuste de tara, con la precisión correcta aplicada y la unidad agregada. Ten en cuenta que: display-weight = input-weight - tare-adjustment

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

// => wm.DisplayWeight == "50.567 kg"
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar Báscula?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.