Di cosa si tratta una struttura dati di un certo tipo?

1

Cercherò di mantenere tutto ciò che è indipendente dal linguaggio, ma darò gli esempi in C # poiché ora so come risolverlo in quel linguaggio.

La domanda mi è venuta in mente quando stavo pensando a come creare istanze di molti oggetti dello stesso tipo.

Diciamo che volevo creare un rettangolo, vorrei fare:

Rectangle rect1 = new Rectangle()

Ora, se volessi creare 2, lo farei.

Rectangle rect1 = new Rectangle()
Rectangle rect2 = new Rectangle()

Questo ovviamente non è efficiente quando devi creare molti rettangoli.

Il problema è che non ho potuto usare loop in quel modo per creare molti rettangoli:

for (int i = 0; i < 100; i++){
    Rectangle rect1 = new Rectangle()
}

Ovviamente questo non raggiunge ciò che sto cercando dato che creerei solo il 100% di% di% dei nostri.

Mi è stato fatto notare che potresti fare qualcosa del genere: Thanks mootinator

var rectangles = new Rectangle[100];
for (int i = 0; i < 100; i++){
  rectangles[i] = new Rectangle();
}

Per quello che ho capito, il codice crea una struttura dati (Array? ArrayList?) di cui digita rect1 dentro di fatto "archivia" Rettangoli.

La cosa più difficile per me è stata porre una domanda per questo .

Quindi le domande sono:

  1. Come si chiama?
  2. Questo standard / "comune" è presente nella maggior parte delle lingue basate su OOP? La domanda in realtà è arrivata in ActionsScript 3, ma è utile / necessaria in qualsiasi lingua possa sembrare.
  3. È questo il modo migliore per farlo considerando che vorrei, ad esempio, eseguire il loop di questo array e applicare un metodo Rectangle .
  4. Ci sono? e quali sono le altre opzioni per farlo.
posta Trufa 20.09.2011 - 00:44
fonte

2 risposte

5

Stai creando un array, che è qualcosa incorporato nella lingua, nel caso di C #. Se si desidera un oggetto di raccolta piacevole, è possibile creare la raccolta desiderata, ad esempio ArrayList o, meglio, ArrayList < Rettangolo > e chiama il metodo Add () in un ciclo, aggiungendo un nuovo rettangolo ogni volta.

Le specifiche variano da lingua a lingua, ma nulla ti fa scrivere rettangolo1, rettangolo2, ... rettangolo100000, poiché ciò non sarebbe pratico. In generale, chiameresti "un gruppo di oggetti che non hanno bisogno di avere un nome univoco" una collezione. L'array a volte è un concetto di linguaggio incorporato speciale, mentre altre raccolte sono spesso implementate su di esse, ma a volte altri tipi di raccolte (dizionario, elenco) sono la base incorporata per altre raccolte.

    
risposta data 20.09.2011 - 00:55
fonte
1

È una matrice di oggetti. Altre implementazioni potrebbero essere un elenco collegato o un albero che simula un array ma che consente l'espansione / eliminazione: l'infame ArrayList. Consiglierei un libro su Data Structures in quanto più conosci, meglio è. Per quanto riguarda ciò che memorizzi nella struttura dati stessa? Non importa, gli oggetti sono un costrutto di codice in questo senso. Assumendo oggetti di prima classe, puoi quindi passarli avanti e indietro in qualsiasi struttura dati.

Beh, certo. Tecnicamente stai trasmettendo un messaggio a quella struttura dati per creare un nuovo oggetto dentro se stesso che corrisponde all'oggetto "passato" come argomento. Per usare l'esempio di auto che faccio sempre, il messaggio dice alla struttura dati di "memorizzare questa macchina" e la struttura dei dati costruisce una macchina e la memorizza.

    
risposta data 20.09.2011 - 00:55
fonte

Leggi altre domande sui tag