protected static string LigaOrdens(string nomeDoAlgarismo, Ordem ordemAnterior)
        {
            const string conjuncao = " e ";
            var deveColocarConjuncao = ordemAnterior.Algarismo != 0;
            var ordemAnteriorPorExtenso = ((deveColocarConjuncao ? conjuncao : string.Empty) + ordemAnterior);
            var deveConcatenarComOrdemAnterior = (ordemAnterior.Algarismos.Sum() != 0);

            return nomeDoAlgarismo + (deveConcatenarComOrdemAnterior ? ordemAnteriorPorExtenso : string.Empty);
        }
 public Milhar(Ordem ordem, Classe classeAnterior = null)
 {
     Ordem = ordem;
     ClasseAnterior = classeAnterior ?? new PrimeiraClasse(new Centena(0));
 }
 public Unidade(int algarismo, Ordem anterior = null)
 {
     Algarismo = algarismo;
 }
 public Dezena(int algarismo, Ordem ordemAnterior = null)
 {
     OrdemAnterior = ordemAnterior ?? new Unidade(0);
     Algarismo = algarismo;
 }
 public Milhao(Ordem ordem, Classe classeAnterior = null)
 {
     Ordem = ordem;
     ClasseAnterior = classeAnterior ?? new Milhar(new Centena(0));
 }