Questo è un esempio di Composizione?

2

Viene fornito il seguente codice:

class Warren
{
  private const int MaxRabbitsInWarren = 99;
  private Rabbit[] Rabbits;
  private int RabbitCount = 0;
  private int PeriodsRun = 0;
  private bool AlreadySpread = false;
  private int Variability;
  private static Random Rnd = new Random();

  public Warren(int Variability)
  {
    this.Variability = Variability;
    Rabbits = new Rabbit[MaxRabbitsInWarren];
    RabbitCount = (int)(CalculateRandomValue((int)(MaxRabbitsInWarren / 4), this.Variability));
    for (int r = 0; r < RabbitCount; r++)
    {
      Rabbits[r] = new Rabbit(Variability);
    }
  }
}
  • C'è un array chiamato Rabbits, di tipo Rabbit, che è un campo di classe Warren.
  • Il costruttore di Warren crea un numero casuale di "Conigli" inserito nell'array Rabbits.

Poiché l'array Rabbits è un membro della classe Warren, questo significa che il suo ciclo di vita è strettamente legato alla classe Warren? (cioè distruggendo un labirinto, distrugge l'array di conigli?)

    
posta user3396486 24.11.2016 - 11:53
fonte

1 risposta

5

Is this an example of composition?

Sì - un Warren "ha una" schiera di Conigli.

does this means that [the array of Rabbits'] lifecycle is tightly bound to the Warren class?

Non necessariamente. Le specifiche possono variare da una lingua all'altra (presumo che la tua lingua abbia una sorta di garbage collection automatica), ma se la matrice è condivisa al di fuori dell'istanza di Warren (e viene mantenuto un riferimento ad essa) sopravviverà anche dopo Warren. è distrutto.

    
risposta data 24.11.2016 - 12:22
fonte

Leggi altre domande sui tag