Balança

Balança

Exercício de aprendizagem

Introdução

Propriedades

Uma propriedade em C# é um membro de uma classe que dá acesso aos dados dessa classe. Quem chama pode definir ou recuperar (obter) os dados. As propriedades podem ser autoimplementadas ou ter um campo de apoio. Elas compreendem um acessador set e/ou um acessador get. Em algumas outras linguagens, um "mutator" equivale mais ou menos a um acessador set, e um "accessor" equivale mais ou menos a um acessador get, embora a composição da sintaxe seja completamente diferente.

Ao definir uma propriedade, o valor de entrada pode ser validado, formatado ou manipulado de outra forma; na verdade, qualquer operação programática acessível ao código da classe pode ser executada.

Da mesma forma, ao recuperar uma propriedade, os dados podem ser calculados ou formatados e, de novo, qualquer operação programática disponível para a classe pode ser executada.

Propriedades têm modificadores de acesso (public, private etc.) da mesma forma que outros membros da classe, mas o acessador set pode ter um nível de acesso independente do acessador de leitura (get), e vice-versa. Uma propriedade não precisa ter os dois acessadores: pode ter apenas um (get ou set).

A sintaxe básica para expressar propriedades pode assumir duas formas:

Propriedades com campo de apoio ou expressão:

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

Propriedades autoimplementadas

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

A inicialização é opcional.

Instruções

Neste exercício, você vai modelar uma balança usando Quilogramas como unidade.

Você tem 6 tarefas, e cada uma exige que você implemente uma ou mais propriedades:

1. Permita que a balança tenha uma precisão

Para atender a demandas diferentes, permitimos que cada balança seja personalizada com uma precisão (o número de dígitos depois do separador decimal). Implemente a classe WeighingMachine com uma propriedade Precision somente de leitura, definida a partir do argumento precision do construtor:

var wm = new WeighingMachine(precision: 3);

//  => wm.Precision == 3

2. Permita definir o peso na balança

Implemente a propriedade WeighingMachine.Weight para permitir ler e definir o peso:

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

//  => wm.Weight == 60.5

3. Garanta que um peso de entrada negativo seja rejeitado

Claramente, ninguém pode ter um peso negativo. Adicione validação à propriedade WeighingMachine.Weight para lançar uma ArgumentOutOfRangeException ao tentar defini-la com um peso negativo:

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

4. Permita aplicar um ajuste de tara à balança

O ajuste de tara pode ser qualquer valor (até negativo, ou um valor que deixe o peso exibido negativo) Implemente a propriedade WeighingMachine.TareAdjustment para permitir definir o ajuste de tara:

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

// => wm.TareAdjustment == -10.6

5. Garanta que a balança tenha um ajuste de tara padrão

Depois de alguns testes minuciosos, parece que, por um problema de fabricação, todas as balanças têm uma tendência a superestimar o peso em 5. Altere a propriedade WeighingMachine.TareAdjustment para que seu valor padrão seja 5.

var wm = new WeighingMachine(precision: 3);

// => wm.TareAdjustment == 5.0

6. Permita obter o peso

Implemente a propriedade WeighingMachine.DisplayWeight, que deve retornar uma string mostrando o peso depois do ajuste de tara, com a precisão correta aplicada e a unidade adicionada. Repare 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 via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar Balança?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.