Qué es una INSTANCIA en Programación — Ejemplos en Unity

Introducción

La pal­abra instan­cia en infor­máti­ca se uti­liza con dis­tin­tos sig­nifi­ca­dos, por ejem­p­lo podemos hablar de la instan­cia de un pro­gra­ma de com­puta­do­ra para referirnos al pro­gra­ma que se está eje­cu­tan­do. En este artícu­lo vamos a ver el con­cep­to de INSTANCIA en pro­gra­mación ori­en­ta­da a obje­tos, osea las instan­cias que se cre­an a par­tir de una deter­mi­na­da CLASE de Pro­gra­mación.

Qué es una INSTANCIA en programación

Antes de ent­ed­er el con­cep­to de INSTANCIA en pro­gra­mación es nece­sario saber qué es una clase en pro­gra­mación, puedes con­sul­tar el artícu­lo detal­la­do, pero para resumir­lo, una clase es una estruc­tura de datos donde se definen los cam­pos y fun­ciones que mod­e­lan el com­por­tamien­to de un deter­mi­na­do objeto. 

En este vídeo hablam­os sobre los con­cep­tos CLASE y OBJETOS en programación 

Por ejem­p­lo, si ten­emos una clase lla­ma­da "Gato" algunos de sus propiedades pueden ser el "Nom­bre" y el "Col­or del pela­je", mien­tras que algu­nas de sus fun­ciones podrían ser "Com­er" y "Maullar".

La clase Gato per­mi­tirá crear obje­tos tipo Gato y cada uno de estos obje­tos será una INSTANCIA de la clase Gato, en su inte­ri­or ten­drán definidos las propiedades y las fun­ciones que se definieron en la clase, pero la infor­ma­ción que haya en sus cam­pos será propia de cada INSTANCIA, es decir cada obje­to será una instan­cia inde­pen­di­ente con un esta­do pro­pio, esto hace que podamos ten­er por ejem­p­lo dos instan­cias de la clase Gato cada una con un nom­bre y pela­je distinto.

Los obje­tos de pro­gra­mación son entes abstrac­tos que exis­ten en la memo­ria de los orde­nadores, el con­cep­to es muy útil porque per­mite una gran abstrac­ción para solu­cionar problemas.

Constructores

Para crear una INSTANCIA de una clase se uti­lizan los lla­ma­dos "Con­struc­tores", fun­ciones que nos per­miten ingre­sar los datos del obje­to y nos devuel­ven como resul­ta­do la ref­er­en­cia del obje­to creado.

Un ejem­p­lo de un Con­struc­tor para la clase Gato en algunos lengua­jes de pro­gra­mación como Java y C# podría ser el siguiente:

pub­lic Gato(string name,Color col­or){
nombre=name;
colorDelPelaje=color;
}

Luego para con­stru­ir el obje­to se usa la instruc­ción "new", por ejem­p­lo de esta forma:

Gato unGa­to = new Gato("Charles",Color.white);

Esto creará un obje­to de la clase Gato con nom­bre "Charles" col­or blan­co y la ref­er­en­cia del obje­to la ten­dremos alma­ce­na­da en el cam­po "unGa­to".

Ejemplos de INSTANCIAS de objetos en Unity

En Uni­ty en la gran may­oría de los casos no nece­sitare­mos definir con­struc­tores para las clases ni usar la instruc­ción "new", ya que hay muchas cosas de las que se encar­ga el motor. En gen­er­al los Scripts que se cre­an en Uni­ty son MonoBe­hav­iours por lo que Uni­ty se encar­ga de crear estos obje­tos, nosotros sim­ple­mente ten­emos que indi­car­le cuán­do o dónde crearlos.

Vamos a ver el con­cep­to de Instan­cia en pro­gra­mación apli­ca­do al motor Uni­ty con el sigu­iente ejem­p­lo de la clase Gato, los nom­bres estarán en inglés pero en escen­cia es lo mis­mo que vimos al prin­ci­pio del artículo.

Definición de la clase Gato

Comen­zamos cre­an­do un nue­vo Script hacien­do clic dere­cho sobre la car­pe­ta Assets, entran­do en "Cre­ate" y eligien­do "C# Script", le ponemos el nom­bre "Cat", este Script definirá la clase "Gato" de la que hablam­os antes.

Fig. 1.a: Creamos un nue­vo Script lla­ma­do "Cat" en Unity.

Al crear un nue­vo Script, Uni­ty se encar­ga de definir una clase que lleve ese mis­mo nom­bre, hará que herede de la clase MonoBe­hav­iour y definirá algu­nas fun­ciones útiles como Start y Update, en la figu­ra 1.b se ve el Script tal cual lo definió Unity.

Fig. 1.b: Script genéri­co crea­do por Uni­ty con algunos ele­men­tos definidos.

Vamos a mod­i­fi­car­lo de la sigu­iente manera:

definicion de una clase de programacion para crear instancias
Fig. 2: Cam­pos y méto­dos de la clase "Cat".

Como se obser­va en la figu­ra 2 se han definidos dos cam­pos, un string lla­ma­do "cat­Name" para el nom­bre del Gato y un Col­or lla­ma­do "fur­Col­or" para el col­or del pela­je. Además se han aña­di­do dos fun­ciones, Eat() que hace que el Gato coma y Meow() hace que el Gato emi­ta un maullido.

MIRA ESTE DESCABELLADO EXPERIMENTO

Crear INSTANCIAS de la clase Gato

La gran may­oría de Scripts que creemos en Uni­ty van a ser sim­i­lares a esto en el sen­ti­do en el que heredarán de la clase MonoBe­hav­iour. Para crear una INSTANCIA de este tipo de obje­tos bas­ta con añadir­los a algún GameOb­ject de la jer­ar­quía de Unity.

Comence­mos cre­an­do obje­tos vacíos que con­tendrán las INSTANCIAS de la clase Gato, en la figu­ra 3 se mues­tra cómo crear un GameOb­ject vacío.

Fig. 3: Creamos obje­tos vacíos para asig­nar instan­cias de la clase.

En la figu­ra 4 vemos dos GameOb­jects, uno lla­ma­do Cat1 y otro Cat2, ambos ten­drán una instan­cia de la mis­ma clase Gato.

Fig. 4: Dos GameOb­jects que ten­drán una instan­cia de la clase cada uno.

Para crear las INSTANCIAS de la clase Gato hay que añadir el Script en cuestión como una com­po­nente del GameOb­ject, esto se puede selec­cio­nan­do el GameOb­ject al que se le quiere añadir el com­po­nente y tomar el Script de la car­pe­ta Assets y arras­trar­lo al inspec­tor. Otra for­ma de añadir el com­po­nente es usan­do el botón "Add Com­po­nent" que aparece en el inspector.

En las fig­uras 5 y 6 se ve el inspec­tor de los GameOb­jects Cat1 y Cat2 de la figu­ra 4, como se obser­va, cada uno tiene una com­po­nente tipo "Cat", es decir cada uno tiene asig­na­da una INSTANCIA de la clase Cat. Obser­ven además como sus cam­pos "cat­Name" y "fur­Col­or" en cada caso tienen infor­ma­ción difer­ente, ya que cada INSTANCIA rep­re­sen­ta a un Gato individual.

una instancia de programacion de una clase asignada a un objeto en Unity
Fig. 5: Instan­cia de la clase "Cat" asig­na­da el GameOb­ject "Cat1".
una instancia de programacion de una clase asignada a un objeto en Unity
Fig. 6: Instan­cia de la clase "Cat" asig­na­da el GameOb­ject "Cat2".

Con esto hemos crea­do dos instan­cias de la clase Cat, como un detalle extra las instan­cias pueden estar asig­nadas al mis­mo GameOb­ject, como se mues­tra en la figu­ra 7.

dos instancias de una clase de programación asignadas al mismo GameObject en Unity
Fig. 7: Dos instan­cias de la clase "Cat" asig­nadas al mis­mo GameObject.

1 Comment
Inline Feedbacks
View all comments
YouTube
Scroll al inicio
Secured By miniOrange