Referencias. Es una etiqueta en el mundo de los objetos y permite accesar las propiedades y metodos de un objeto creado. Una referencia puede hacerse sobre un objeto de un tipo no escalar o clase Una referencia es una variable (tambien puede ser un atributo de una clase) Una referencia puede tener dos valores. Cuando se declara, de inicio tiene valor nulo o vacia. Cuando se le asigna un objeto, tiene la etiqueta del objeto. Una referencia se declara como TipoOClase variableReferencia; esto se lee como una variable de tipo referencia que manipula un objeto de clase TipoOClase. Ejemplo String msg; En Java, el valor nulo de una referencia se representa como null. En el ejemplo anterior, msg tiene valor null Para asignar un valor a una referencia, se debe asignar un objeto, ya sea al momento de crearlo o como parte de una invocacion a un metodo de otro objeto. Ejemplo msg = new String("hola mundo"); Ejemplo2 : Punto p1;//p1 es una variable de tipo referencia //que contendra una etiqueta a un objeto de clase //Punto, en este momento su valor es null p1 = new Punto(3,4);//p1 adquiere el valor de la etiqueta //asignada en el mundo de los objetos Es incorrecto invocar un metodo o accesar una propiedad usando una referencia con valor null Via una referencia es posible manipular al objeto al cual se refiere. Las operaciones de manipulación consisten en accesar un atributo o invocar un método Esto se realiza como referencia.atributo o referencia.metodo() Una referencia puede pasarse como un parametro de una clase O recibirse como valor de retorno de un método Cuando una referencia se recibe en un parametro, se pasa por valor. (a diferencia de los tipos escalares, que se pasan por copia de valores) Un atributo de un objeto puede ser una referencia. Cuando se crea un objeto via la operación new, se crea un objeto de manera dinámica. Esto implica que se pide espacio para el objeto bajo demanda y es necesario tener alguna manera de limpiar dicho espacio cuando el objeto ya no se usa En algunos lenguajes (C++) es necesario definir un destructor y aplicar una operacion de destruccion. En otros lenguajes existe otra tecnica, denominada "recoleccion de basura" (garbage collector) que permite tener un flujo o "thread" encargado de detectar los objetos no utilizados y desasignar el espacio que ocupaban. Tarea: Escribir en C, el programa PuntoMain. En lugar de escribir la clase Punto, escribir un modulo en C que se denomine punto.c e incluir las rutinas para manipular un punto