È lo stesso dire "istanziare una classe" e "istanziare un oggetto"? "Istanziare una classe" non significa creare una nuova classe? [chiuso]

3

Ho visto le frasi "istanziare un oggetto", "istanziare un oggetto quadrato" o "un oggetto Cat viene istanziato". (p.17, p.22 e p.26 di The Object-Oriented Thought Process, 4th Edition, Addison-Wesley).

E poi quando leggo Design Patterns (il libro di Gof), continuo a leggere "istanziare una classe", come in "deve istanziare una sottoclasse di glifo" o "Un modello di creatività di classe usa l'ereditarietà per variare la classe che viene istanziata" (p.48 e p.81, Design Patterns, Erich Gamma e altri, Addison-Wesley).

Ma poi, nello stesso libro, si dice, "Una linea tratteggiata punta di freccia indica una classe che crea un'istanza di oggetti di un'altra classe" (p.15) per significare "CreationTool crea oggetti LineShape" (p.364).

Intendono la stessa cosa? E se lo fanno, quale modo di dire è più corretto o preciso? È vero che in circostanze normali, non usiamo il codice in esecuzione per "creare" una nuova classe? (Ovvero, "creare un'istanza di una classe" non significa creare una nuova classe).

Ne parlo perché durante la lettura del libro Pattern Design di GoF, ho letto "istanziare un oggetto" e ho pensato, "ok, viene creato un oggetto", quindi nel capitolo del metodo factory, ho letto "istanziare una classe ", e ho pensato" hmm ... una classe viene creata? " e mi ha fatto venire le vertigini ...

    
posta 太極者無極而生 30.12.2015 - 17:49
fonte

4 risposte

4

Entrambi sono corretti e entrambi significano la stessa identica cosa. Gli oggetti sono istanze di classi. Sia che "istanziate la classe X [per creare un oggetto di classe X]" o "create un'istanza di un oggetto [della classe X]" sia solo un nocciolo semantico.

    
risposta data 30.12.2015 - 18:27
fonte
1

Is it more accurate to say "instantiate a class" or "instantiate an object"?

Webster definisce l'istanza :

to represent (an abstraction) by a concrete instance

Da questa definizione, potremmo usare "istanziare una classe" o "creare un'istanza di un oggetto". Potremmo anche semplicemente dire "istanziare" dato che "classe" (l'astrazione) e "oggetto" (l'istanza concreta) sono entrambi resi ridondanti dalla definizione di istanza.

Se volessimo essere più precisi, potremmo specificare l'oggetto che stiamo creando, ad esempio: "instantiate a Foo."

Informazioni di base:

Questo grafico dimostra che la parola "istanziata" non è stata utilizzata comunemente fino agli inizi degli anni '50 e ha raggiunto il picco di recente. origine .

Inoltre,questongramdimostrache"istanziare un oggetto" è molto più comune di "istanziare una classe".

    
risposta data 30.12.2015 - 18:50
fonte
-1

Istanziare qualcosa significa fornire una vera istanza di un concetto astratto . La classe è il concetto astratto. Un oggetto è un'istanza di una classe. Quando crei un nuovo oggetto, stai creando un'istanza della classe.

Se vedi "istanziare un oggetto Square ", di solito è una scorciatoia per "creare un nuovo oggetto creando un'istanza della classe Square ". Non è corretto al 100% ma trasmette lo stesso significato.

"Instantiate" e "create" non hanno lo stesso significato, quindi "creare una classe" ha un significato diverso da "creare un'istanza di una classe".

    
risposta data 30.12.2015 - 18:37
fonte
-2

Is it more accurate to say "instantiate a class" or "instantiate an object"?

Ecco una risposta per analogia:

Se un sarto ha uno schema per una camicia che è una camicia stile Oxford, diresti "fa uno schema" o "fa una maglietta" o "lui fa un Oxford?" "Fa uno schema" sembra un po 'fuori, perché in realtà non sta facendo un modello da cui poi può creare altre camicie. Sarebbe molto preciso dire che "Lui fa un Oxford", specialmente se, dal contesto, capisci che sta facendo una maglietta.

Allo stesso modo, è un po 'fuori per dire "istanziare una classe". È un oggetto che viene istanziato. Si sta istanziando un oggetto da la classe così come è definita. Sarà quindi un oggetto di quel tipo, ad esempio un Oxford, continuare con l'analogia. Tuttavia, dal contesto, capiamo cosa si intende e espandiamo internamente "istanziare una classe" per "istanziare un oggetto di classe Oxford". L'intento è chiaro dal contesto.

È corretto dire "istanziare un oggetto" perché è ciò che viene istanziato, un oggetto. Ma si può anche dire "istanziare una cosa", sarebbe altrettanto descrittivo, è solo che la "cosa" ha poco o nessun utilizzo nel contesto della programmazione, quindi questo è un po 'impreciso. Quindi questo è più accurato del dire "istanziare una classe".

È preciso e preciso dire "istanziare un Oxford" che sarebbe un tipo specifico di oggetto. È anche più descrittivo e informativo - presumendo che tu sappia che un Oxford è un oggetto (in questo caso una maglietta).

Se l'intento è la chiarezza della comunicazione, punterei ad essere sia preciso che preciso.

    
risposta data 30.12.2015 - 18:27
fonte

Leggi altre domande sui tag