SlideShare una empresa de Scribd logo
1 de 10
DATOS PREVIOS<br />Antes de pasar a revisar nuestro software primero son necesarios unos datos previos que utilizaremos durante su creación, así como también cuales son las herramientas necesarias para crear este software.<br />En primer lugar empezaremos describiendo la plataforma utilizada llamada Java development kit versión 1.6.0. El Java Development Kit, (JDK1.6.0) es un grupo de herramientas para el desarrollo de software provisto por Sun Microsystems, Inc.. Incluye las herramientas necesarias para escribir, testear, y depurar aplicaciones y applets de Java.   <br />En segundo lugar explicaremos términos que se necesitan saber para programar en java como por ejemplo: Qué es un paquete?, Qué es una clase?, Que tipos de datos existen?, Qué es un array?...etc. <br />Paquetes<br />Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes.<br />En los ficheros de código Java se usa la palabra reservada package para especificar a qué paquete pertenecen. Suele indicarse como primera sentencia:<br />package java.awt.event;<br />Para usar un paquete dentro del código se usa la declaración import. Si sólo se indica el nombre del paquete:<br />import java.awt.event.*;<br />Un paquete puede contener: clases, interfaces, tipos enumerados, anotaciones.<br />Clases<br />Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.<br />Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.<br />Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. <br />Tipos de Clase<br />Hasta ahora sólo se ha utilizado la palabra clase public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:<br />Abstract <br />Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.<br />Final <br />Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.<br />Public <br />Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.<br />Synchronizable <br />Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobrescriban.<br />VARIABLES Y METODOS DE INSTANCIA  <br />Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.<br />Por ejemplo, en el siguiente trozo de código podemos observarlo:<br />    public MiClase {<br />         int i;<br />         public MiClase() {<br />             i = 10;<br />             }<br />         public void Suma_a_i( int j ) {<br />             i = i + j;<br />             }<br />         }<br />La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ). <br />Array<br />En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.<br />Para crear un array en Java hay dos métodos básicos. Crear un array vacío:<br />    int lista[] = new int[50];<br />o se puede crear ya el array con sus valores iniciales:<br />    String nombres[] = {<br />        quot;
Juanquot;
,quot;
Pepequot;
,quot;
Pedroquot;
,quot;
Mariaquot;
<br />        };<br />Todos los arrays en Java son estáticos. <br />Separadores<br />Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:<br />() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.<br />{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.<br />[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.<br />; - punto y coma. Separa sentencias.<br />, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.<br />. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.<br />Métodos y Constructores<br />Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.<br />Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.<br />Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase:<br />    MiClase mc;<br />    mc = new MiClase();<br />La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto:<br />    mc.i++; // incrementa la instancia de i de mc<br />Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc:<br />    mc.Suma_a_i( 10 );<br />y ahora la variable mc.i vale 21.<br />Objetos<br />a.) Referencias a Objeto e Instancias<br />Los tipos simples de Java describían el tamaño y los valores de las variables. Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar igual que uno de los tipos simples. Por ello al declarar una nueva variable, se puede utilizar un nombre de clase como tipo. A estas variables se las conoce como referencias a objeto.<br />Todas las referencias a objeto son compatibles también con las instancias de subclases de su tipo. Del mismo modo que es correcto asignar un byte a una variable declarada como int, se puede declarar que una variable es del tipo MiClase y guardar una referencia a una instancia de este tipo de clase:<br />MiPunto p;<br />Esta es una declaración de una variable p que es una referencia a un objeto de la clase MiPunto, de momento con un valor por defecto de null. La referencia null es una referencia a un objeto de la clase Object, y se podrá convertir a una referencia a cualquier otro objeto porque todos los objetos son hijos de la clase Object.<br />b.) Constructores<br />Las clases pueden implementar un método especial llamado constructor. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación.<br />El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).<br />El constructor no devuelve ningún tipo, ni siquiera void. Su misión es iniciar todo estado interno de un objeto (sus atributos), haciendo que el objeto sea utilizable inmediatamente; reservando memoria para sus atributos, iniciando sus valores...<br />Por ejemplo:<br />MiPunto( ) {<br />inicia( -1, -1 );<br />}<br />Este constructor denominado constructor por defecto, por no tener parámetros, establece el valor -1 a las variables de instancia x e y de los objetos que construya.<br />El compilador, por defecto ,llamará al constructor de la superclase Object() si no se especifican parámetros en el constructor.<br />Este otro constructor, sin embargo, recibe dos parámetros:<br />MiPunto( int paraX, int paraY ) {<br />inicia( paramX, paramY );<br />}<br />La lista de parámetros especificada después del nombre de una clase en una sentencia new se utiliza para pasar parámetros al constructor.<br />Se llama al método constructor justo después de crear la instancia y antes de que new devuelva el control al punto de la llamada.<br />Así, cuando ejecutamos el siguiente programa:<br />MiPunto p1 = new MiPunto(10, 20);<br />System.out.println( quot;
p1.- x = quot;
 + p1.x + quot;
 y = quot;
 + p1.y );<br />Se muestra en la pantalla:<br />p1.- x = 10 y = 20<br />Para crear un programa Java que contenga ese código, se debe de crear una clase que contenga un método main(). El intérprete java se ejecutará el método main de la clase que se le indique como parámetro.<br />Para más información sobre cómo crear y ejecutar un programa, así como los tipos de programas que se pueden crear en Java, véase el capítulo quot;
II.12. Creación de programas Javaquot;
 de este tutorial.<br />c.) El operador new<br />El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese objeto. Por ejemplo:<br />MiPunto p2 = new MiPunto(2,3);<br />Este es un ejemplo de la creación de una instancia de MiPunto, que es controlador por la referencia a objeto p2.<br />Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian. De esta forma se pueden crear múltiples referencias al mismo objeto, como por ejemplo:<br />MiPunto p3 =p2;<br />Aunque tan sólo se creó un objeto MiPunto, hay dos variables (p2 y p3) que lo referencian. Cualquier cambio realizado en el objeto referenciado por p2 afectará al objeto referenciado por p3. La asignación de p2 a p3 no reserva memoria ni modifica el objeto.<br />De hecho, las asignaciones posteriores de p2 simplemente desengancharán p2 del objeto, sin afectarlo:<br />p2 = null; // p3 todavía apunta al objeto creado con new<br />Aunque se haya asignado null a p2, p3 todavía apunta al objeto creado por el operador new.<br />Cuando ya no haya ninguna variable que haga referencia a un objeto, Java reclama automáticamente la memoria utilizada por ese objeto, a lo que se denomina recogida de basura.<br />Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación. A este conjunto de variables se le denomina variables de instancia.<br />D. Acceso al objeto<br />a.) El operador punto (.)<br />El operador punto (.) se utiliza para acceder a las variables de instancia y los métodos contenidos en un objeto, mediante su referencia a objeto:<br />referencia_a_objeto.nombre_de_variable_de_instancia<br />referencia_a_objeto.nombre_de_método( lista-de-parámetros );<br />Hemos creado un ejemplo completo que combina los operadores new y punto para crear un objeto MiPunto, almacenar algunos valores en él e imprimir sus valores finales:<br />MiPunto p6 = new MiPunto( 10, 20 );<br />System.out.println (quot;
p6.- 1. X=quot;
 + p6.x + quot;
 , Y=quot;
 + p6.y);<br />p6.inicia( 30, 40 );<br />System.out.println (quot;
p6.- 2. X=quot;
 + p6.x + quot;
 , Y=quot;
 + p6.y);<br />Cuando se ejecuta este programa, se observa la siguiente salida:<br />p6.- 1. X=10 , Y=20<br />p6.- 2. X=30 , Y=40<br />Durante las impresiones (método println()) se accede al valor de las variables mediante p6.x y p6.y, y entre una impresión y otra se llama al método inicia(), cambiando los valores de las variables de instancia.<br />Este es uno de los aspectos más importantes de la diferencia entre la programación orientada a objetos y la programación estructurada. Cuando se llama al método p6.inicia(), lo primero que se hace en el método es sustituir los nombres de los atributos de la clase por las correspondientes variables de instancia del objeto con que se ha llamado. Así por ejemplo x se convertirá en p6.x.<br />Si otros objetos llaman a inicia(), incluso si lo hacen de una manera concurrente, no se producen efectos laterales, ya que las variables de instancia sobre las que trabajan son distintas.<br />b.) La referencia this<br />Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier método para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido llamado el método actual. Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo código, seleccionados a través de otras instancias, cada uno tiene su propio valor único de this.<br />Un refinamiento habitual es que un constructor llame a otro para construir la instancia correctamente. El siguiente constructor llama al constructor parametrizado MiPunto(x,y) para terminar de iniciar la instancia:<br />MiPunto() {<br />this( -1, -1 ); // Llama al constructor parametrizado<br />}<br />En Java se permite declarar variables locales, incluyendo parámetros formales de métodos, que se solapen con los nombres de las variables de instancia.<br />No se utilizan x e y como nombres de parámetro para el método inicia, porque ocultarían las variables de instancia x e y reales del ámbito del método. Si lo hubiésemos hecho, entonces x se hubiera referido al parámetro formal, ocultando la variable de instancia x:<br />void inicia2( int x, int y ) {<br />x = x; // Ojo, no modificamos la variable de instancia!!!<br />this.y = y; // Modificamos la variable de instancia!!!<br />}<br />E. La destrucción del objeto<br />a.) La destrucción de los objetos<br />Cuando un objeto no va a ser utilizado, el espacio de memoria de dinámica que utiliza ha de ser liberado, así como los recursos que poseía, permitiendo al programa disponer de todos los recursos posibles. A esta acción se la da el nombre de destrucción del objeto.<br />En Java la destrucción se puede realizar de forma automática o de forma personalizada, en función de las características del objeto.<br />b.) La destrucción por defecto: Recogida de basura<br />El intérprete de Java posee un sistema de recogida de basura, que por lo general permite que no nos preocupemos de liberar la memoria asignada explícitamente.<br />El recolector de basura será el encargado de liberar una zona de memoria dinámica que había sido reservada mediante el operador new, cuando el objeto ya no va a ser utilizado más durante el programa (por ejemplo, sale del ámbito de utilización, o no es referenciado nuevamente).<br />El sistema de recogida de basura se ejecuta periódicamente, buscando objetos que ya no estén referenciados.<br />c.) La destrucción personalizada: finalize<br />A veces una clase mantiene un recurso que no es de Java como un descriptor de archivo o un tipo de letra del sistema de ventanas. En este caso sería acertado el utilizar la finalización explícita, para asegurar que dicho recurso se libera. Esto se hace mediante la destrucción personalizada, un sistema similar a los destructores de C++.<br />Para especificar una destrucción personalizada se añade un método a la clase con el nombre finalize:<br />class ClaseFinalizada{<br />ClaseFinalizada() { // Constructor<br />// Reserva del recurso no Java o recurso compartido<br />}<br />protected void finalize() {<br />// Liberación del recurso no Java o recurso compartido<br />}<br />}<br />El intérprete de Java llama al método finalize(), si existe cuando vaya a reclamar el espacio de ese objeto, mediante la recogida de basura.<br />Debe observarse que el método finalize() es de tipo protected void y por lo tanto deberá de sobrescribirse con este mismo tipo.<br />
Datos previos
Datos previos
Datos previos
Datos previos
Datos previos
Datos previos
Datos previos
Datos previos
Datos previos

Más contenido relacionado

La actualidad más candente

Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instanciaRobert Wolf
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Programación orientada a objetos (I)
Programación orientada a objetos (I)Programación orientada a objetos (I)
Programación orientada a objetos (I)Cristian
 
Contructores en java(grupo 8)
Contructores en java(grupo 8)Contructores en java(grupo 8)
Contructores en java(grupo 8)Manuel Ch.
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc X
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaUCE
 
Fundamentos de Java II
Fundamentos de Java IIFundamentos de Java II
Fundamentos de Java IImartosfre
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 

La actualidad más candente (17)

Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instancia
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 
Aprendiendo objetos en c++
Aprendiendo objetos en c++Aprendiendo objetos en c++
Aprendiendo objetos en c++
 
Programación orientada a objetos (I)
Programación orientada a objetos (I)Programación orientada a objetos (I)
Programación orientada a objetos (I)
 
Semana 2 Clases y Objetos en Java
Semana 2   Clases y Objetos en JavaSemana 2   Clases y Objetos en Java
Semana 2 Clases y Objetos en Java
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Contructores en java(grupo 8)
Contructores en java(grupo 8)Contructores en java(grupo 8)
Contructores en java(grupo 8)
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salida
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Fundamentos de Java II
Fundamentos de Java IIFundamentos de Java II
Fundamentos de Java II
 
Unidad 2 clases y objetos
Unidad 2 clases y objetosUnidad 2 clases y objetos
Unidad 2 clases y objetos
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 

Destacado

Casos practicos business contacts relations. Azukre it Consulting.
Casos practicos business contacts relations. Azukre it Consulting.Casos practicos business contacts relations. Azukre it Consulting.
Casos practicos business contacts relations. Azukre it Consulting.José Javier Agote
 
Stratégie 360° moreau boucher
Stratégie 360° moreau boucherStratégie 360° moreau boucher
Stratégie 360° moreau boucherBlandine Boucher
 
Articulacion temporomandibular
Articulacion temporomandibularArticulacion temporomandibular
Articulacion temporomandibularNadia Ordenes
 
Discours de Création de la CECA - Robert Schuman fondation
Discours de Création de la CECA - Robert Schuman fondationDiscours de Création de la CECA - Robert Schuman fondation
Discours de Création de la CECA - Robert Schuman fondationFactaMedia
 
Boletín 46 de la Alcaldia de Palmira - febrero 27
Boletín 46 de la Alcaldia de Palmira - febrero 27Boletín 46 de la Alcaldia de Palmira - febrero 27
Boletín 46 de la Alcaldia de Palmira - febrero 27Luis Fernando Tascón Montes
 
VEGETABILIS Journée espaces verts 20151008 Arnaud Stas
VEGETABILIS Journée espaces verts 20151008 Arnaud StasVEGETABILIS Journée espaces verts 20151008 Arnaud Stas
VEGETABILIS Journée espaces verts 20151008 Arnaud StaspAscAL dEmAn
 
Fideos con caballa
Fideos con  caballaFideos con  caballa
Fideos con caballatururula
 
Catalogue wagara shoten 2014
Catalogue wagara shoten 2014Catalogue wagara shoten 2014
Catalogue wagara shoten 2014wagarashoten
 
Sample slide
Sample slideSample slide
Sample slideharryb0y
 
Programa analítico de ambientes específicos
Programa analítico de ambientes específicosPrograma analítico de ambientes específicos
Programa analítico de ambientes específicosLuis González
 
Comète Freedom Trail Report 2013
Comète  Freedom Trail Report 2013Comète  Freedom Trail Report 2013
Comète Freedom Trail Report 2013miked6631
 
ProcédurePrud'homme
ProcédurePrud'hommeProcédurePrud'homme
ProcédurePrud'hommeMaëva Laprie
 
Quelle fonction SI demain? | Club Informatique de l'Est
Quelle fonction SI demain? | Club Informatique de l'EstQuelle fonction SI demain? | Club Informatique de l'Est
Quelle fonction SI demain? | Club Informatique de l'EstVOIRIN Consultants
 
pharmaceurtical industry
pharmaceurtical industrypharmaceurtical industry
pharmaceurtical industrySHARE MIND
 
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...Clic et Site
 
Newsletter Pubeco
Newsletter PubecoNewsletter Pubeco
Newsletter Pubecoepmary
 

Destacado (20)

Election presidentielle en guinee
Election presidentielle en guineeElection presidentielle en guinee
Election presidentielle en guinee
 
Casos practicos business contacts relations. Azukre it Consulting.
Casos practicos business contacts relations. Azukre it Consulting.Casos practicos business contacts relations. Azukre it Consulting.
Casos practicos business contacts relations. Azukre it Consulting.
 
Stratégie 360° moreau boucher
Stratégie 360° moreau boucherStratégie 360° moreau boucher
Stratégie 360° moreau boucher
 
Articulacion temporomandibular
Articulacion temporomandibularArticulacion temporomandibular
Articulacion temporomandibular
 
Discours de Création de la CECA - Robert Schuman fondation
Discours de Création de la CECA - Robert Schuman fondationDiscours de Création de la CECA - Robert Schuman fondation
Discours de Création de la CECA - Robert Schuman fondation
 
Boletín 46 de la Alcaldia de Palmira - febrero 27
Boletín 46 de la Alcaldia de Palmira - febrero 27Boletín 46 de la Alcaldia de Palmira - febrero 27
Boletín 46 de la Alcaldia de Palmira - febrero 27
 
Les enjeux du noviciat à la vie consacrée
Les enjeux du noviciat à la vie consacréeLes enjeux du noviciat à la vie consacrée
Les enjeux du noviciat à la vie consacrée
 
VEGETABILIS Journée espaces verts 20151008 Arnaud Stas
VEGETABILIS Journée espaces verts 20151008 Arnaud StasVEGETABILIS Journée espaces verts 20151008 Arnaud Stas
VEGETABILIS Journée espaces verts 20151008 Arnaud Stas
 
Fideos con caballa
Fideos con  caballaFideos con  caballa
Fideos con caballa
 
Pp projet 2
Pp projet 2Pp projet 2
Pp projet 2
 
Catalogue wagara shoten 2014
Catalogue wagara shoten 2014Catalogue wagara shoten 2014
Catalogue wagara shoten 2014
 
Sample slide
Sample slideSample slide
Sample slide
 
Programa analítico de ambientes específicos
Programa analítico de ambientes específicosPrograma analítico de ambientes específicos
Programa analítico de ambientes específicos
 
Comète Freedom Trail Report 2013
Comète  Freedom Trail Report 2013Comète  Freedom Trail Report 2013
Comète Freedom Trail Report 2013
 
La grandeur de la chasteté chrétienne
La grandeur de la chasteté chrétienneLa grandeur de la chasteté chrétienne
La grandeur de la chasteté chrétienne
 
ProcédurePrud'homme
ProcédurePrud'hommeProcédurePrud'homme
ProcédurePrud'homme
 
Quelle fonction SI demain? | Club Informatique de l'Est
Quelle fonction SI demain? | Club Informatique de l'EstQuelle fonction SI demain? | Club Informatique de l'Est
Quelle fonction SI demain? | Club Informatique de l'Est
 
pharmaceurtical industry
pharmaceurtical industrypharmaceurtical industry
pharmaceurtical industry
 
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...
9h45 EMDay 2014 - Charte V2 du CPA : son fonctionnement et les nouvelles/futu...
 
Newsletter Pubeco
Newsletter PubecoNewsletter Pubeco
Newsletter Pubeco
 

Similar a Datos previos

Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5Joel Mieses
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Tarea 5
Tarea 5Tarea 5
Tarea 5ar qb
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completadoKai Exo
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf202100941c
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4K Manuel TN
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4K Manuel TN
 
8. técnicas de escritura de códigos
8. técnicas de escritura de códigos8. técnicas de escritura de códigos
8. técnicas de escritura de códigosHectorMamani
 
Introduccion
IntroduccionIntroduccion
Introduccionreivax
 

Similar a Datos previos (20)

Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Programacion
ProgramacionProgramacion
Programacion
 
Tarea 5
Tarea 5Tarea 5
Tarea 5
 
Leguaje de programacion C#
Leguaje de programacion C#Leguaje de programacion C#
Leguaje de programacion C#
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4
 
Intro Java
Intro JavaIntro Java
Intro Java
 
Unidad o informatica
Unidad o informaticaUnidad o informatica
Unidad o informatica
 
Benita ppp unidad 1
Benita ppp unidad 1Benita ppp unidad 1
Benita ppp unidad 1
 
8. técnicas de escritura de códigos
8. técnicas de escritura de códigos8. técnicas de escritura de códigos
8. técnicas de escritura de códigos
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
manual de C#
manual de C#manual de C#
manual de C#
 

Más de Luiggi Inga Barboza (14)

Propuesta sica
Propuesta sicaPropuesta sica
Propuesta sica
 
Logica de negocios
Logica de negociosLogica de negocios
Logica de negocios
 
Logica de negocios
Logica de negociosLogica de negocios
Logica de negocios
 
Presentacion
PresentacionPresentacion
Presentacion
 
Acceso a datos
Acceso a datosAcceso a datos
Acceso a datos
 
Entidades
EntidadesEntidades
Entidades
 
Entidades
EntidadesEntidades
Entidades
 
Entidades
EntidadesEntidades
Entidades
 
Parte Principal
Parte  Principal Parte  Principal
Parte Principal
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Para
ParaPara
Para
 
Para
ParaPara
Para
 
Tutorial 3
Tutorial 3Tutorial 3
Tutorial 3
 

Último

Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Datos previos

  • 1. DATOS PREVIOS<br />Antes de pasar a revisar nuestro software primero son necesarios unos datos previos que utilizaremos durante su creación, así como también cuales son las herramientas necesarias para crear este software.<br />En primer lugar empezaremos describiendo la plataforma utilizada llamada Java development kit versión 1.6.0. El Java Development Kit, (JDK1.6.0) es un grupo de herramientas para el desarrollo de software provisto por Sun Microsystems, Inc.. Incluye las herramientas necesarias para escribir, testear, y depurar aplicaciones y applets de Java. <br />En segundo lugar explicaremos términos que se necesitan saber para programar en java como por ejemplo: Qué es un paquete?, Qué es una clase?, Que tipos de datos existen?, Qué es un array?...etc. <br />Paquetes<br />Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes.<br />En los ficheros de código Java se usa la palabra reservada package para especificar a qué paquete pertenecen. Suele indicarse como primera sentencia:<br />package java.awt.event;<br />Para usar un paquete dentro del código se usa la declaración import. Si sólo se indica el nombre del paquete:<br />import java.awt.event.*;<br />Un paquete puede contener: clases, interfaces, tipos enumerados, anotaciones.<br />Clases<br />Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.<br />Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.<br />Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. <br />Tipos de Clase<br />Hasta ahora sólo se ha utilizado la palabra clase public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:<br />Abstract <br />Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.<br />Final <br />Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.<br />Public <br />Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.<br />Synchronizable <br />Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobrescriban.<br />VARIABLES Y METODOS DE INSTANCIA  <br />Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.<br />Por ejemplo, en el siguiente trozo de código podemos observarlo:<br /> public MiClase {<br /> int i;<br /> public MiClase() {<br /> i = 10;<br /> }<br /> public void Suma_a_i( int j ) {<br /> i = i + j;<br /> }<br /> }<br />La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ). <br />Array<br />En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array.<br />Para crear un array en Java hay dos métodos básicos. Crear un array vacío:<br /> int lista[] = new int[50];<br />o se puede crear ya el array con sus valores iniciales:<br /> String nombres[] = {<br /> quot; Juanquot; ,quot; Pepequot; ,quot; Pedroquot; ,quot; Mariaquot; <br /> };<br />Todos los arrays en Java son estáticos. <br />Separadores<br />Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:<br />() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.<br />{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.<br />[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.<br />; - punto y coma. Separa sentencias.<br />, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.<br />. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.<br />Métodos y Constructores<br />Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.<br />Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.<br />Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase:<br /> MiClase mc;<br /> mc = new MiClase();<br />La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto:<br /> mc.i++; // incrementa la instancia de i de mc<br />Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc:<br /> mc.Suma_a_i( 10 );<br />y ahora la variable mc.i vale 21.<br />Objetos<br />a.) Referencias a Objeto e Instancias<br />Los tipos simples de Java describían el tamaño y los valores de las variables. Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar igual que uno de los tipos simples. Por ello al declarar una nueva variable, se puede utilizar un nombre de clase como tipo. A estas variables se las conoce como referencias a objeto.<br />Todas las referencias a objeto son compatibles también con las instancias de subclases de su tipo. Del mismo modo que es correcto asignar un byte a una variable declarada como int, se puede declarar que una variable es del tipo MiClase y guardar una referencia a una instancia de este tipo de clase:<br />MiPunto p;<br />Esta es una declaración de una variable p que es una referencia a un objeto de la clase MiPunto, de momento con un valor por defecto de null. La referencia null es una referencia a un objeto de la clase Object, y se podrá convertir a una referencia a cualquier otro objeto porque todos los objetos son hijos de la clase Object.<br />b.) Constructores<br />Las clases pueden implementar un método especial llamado constructor. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación.<br />El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).<br />El constructor no devuelve ningún tipo, ni siquiera void. Su misión es iniciar todo estado interno de un objeto (sus atributos), haciendo que el objeto sea utilizable inmediatamente; reservando memoria para sus atributos, iniciando sus valores...<br />Por ejemplo:<br />MiPunto( ) {<br />inicia( -1, -1 );<br />}<br />Este constructor denominado constructor por defecto, por no tener parámetros, establece el valor -1 a las variables de instancia x e y de los objetos que construya.<br />El compilador, por defecto ,llamará al constructor de la superclase Object() si no se especifican parámetros en el constructor.<br />Este otro constructor, sin embargo, recibe dos parámetros:<br />MiPunto( int paraX, int paraY ) {<br />inicia( paramX, paramY );<br />}<br />La lista de parámetros especificada después del nombre de una clase en una sentencia new se utiliza para pasar parámetros al constructor.<br />Se llama al método constructor justo después de crear la instancia y antes de que new devuelva el control al punto de la llamada.<br />Así, cuando ejecutamos el siguiente programa:<br />MiPunto p1 = new MiPunto(10, 20);<br />System.out.println( quot; p1.- x = quot; + p1.x + quot; y = quot; + p1.y );<br />Se muestra en la pantalla:<br />p1.- x = 10 y = 20<br />Para crear un programa Java que contenga ese código, se debe de crear una clase que contenga un método main(). El intérprete java se ejecutará el método main de la clase que se le indique como parámetro.<br />Para más información sobre cómo crear y ejecutar un programa, así como los tipos de programas que se pueden crear en Java, véase el capítulo quot; II.12. Creación de programas Javaquot; de este tutorial.<br />c.) El operador new<br />El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese objeto. Por ejemplo:<br />MiPunto p2 = new MiPunto(2,3);<br />Este es un ejemplo de la creación de una instancia de MiPunto, que es controlador por la referencia a objeto p2.<br />Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian. De esta forma se pueden crear múltiples referencias al mismo objeto, como por ejemplo:<br />MiPunto p3 =p2;<br />Aunque tan sólo se creó un objeto MiPunto, hay dos variables (p2 y p3) que lo referencian. Cualquier cambio realizado en el objeto referenciado por p2 afectará al objeto referenciado por p3. La asignación de p2 a p3 no reserva memoria ni modifica el objeto.<br />De hecho, las asignaciones posteriores de p2 simplemente desengancharán p2 del objeto, sin afectarlo:<br />p2 = null; // p3 todavía apunta al objeto creado con new<br />Aunque se haya asignado null a p2, p3 todavía apunta al objeto creado por el operador new.<br />Cuando ya no haya ninguna variable que haga referencia a un objeto, Java reclama automáticamente la memoria utilizada por ese objeto, a lo que se denomina recogida de basura.<br />Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación. A este conjunto de variables se le denomina variables de instancia.<br />D. Acceso al objeto<br />a.) El operador punto (.)<br />El operador punto (.) se utiliza para acceder a las variables de instancia y los métodos contenidos en un objeto, mediante su referencia a objeto:<br />referencia_a_objeto.nombre_de_variable_de_instancia<br />referencia_a_objeto.nombre_de_método( lista-de-parámetros );<br />Hemos creado un ejemplo completo que combina los operadores new y punto para crear un objeto MiPunto, almacenar algunos valores en él e imprimir sus valores finales:<br />MiPunto p6 = new MiPunto( 10, 20 );<br />System.out.println (quot; p6.- 1. X=quot; + p6.x + quot; , Y=quot; + p6.y);<br />p6.inicia( 30, 40 );<br />System.out.println (quot; p6.- 2. X=quot; + p6.x + quot; , Y=quot; + p6.y);<br />Cuando se ejecuta este programa, se observa la siguiente salida:<br />p6.- 1. X=10 , Y=20<br />p6.- 2. X=30 , Y=40<br />Durante las impresiones (método println()) se accede al valor de las variables mediante p6.x y p6.y, y entre una impresión y otra se llama al método inicia(), cambiando los valores de las variables de instancia.<br />Este es uno de los aspectos más importantes de la diferencia entre la programación orientada a objetos y la programación estructurada. Cuando se llama al método p6.inicia(), lo primero que se hace en el método es sustituir los nombres de los atributos de la clase por las correspondientes variables de instancia del objeto con que se ha llamado. Así por ejemplo x se convertirá en p6.x.<br />Si otros objetos llaman a inicia(), incluso si lo hacen de una manera concurrente, no se producen efectos laterales, ya que las variables de instancia sobre las que trabajan son distintas.<br />b.) La referencia this<br />Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier método para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido llamado el método actual. Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo código, seleccionados a través de otras instancias, cada uno tiene su propio valor único de this.<br />Un refinamiento habitual es que un constructor llame a otro para construir la instancia correctamente. El siguiente constructor llama al constructor parametrizado MiPunto(x,y) para terminar de iniciar la instancia:<br />MiPunto() {<br />this( -1, -1 ); // Llama al constructor parametrizado<br />}<br />En Java se permite declarar variables locales, incluyendo parámetros formales de métodos, que se solapen con los nombres de las variables de instancia.<br />No se utilizan x e y como nombres de parámetro para el método inicia, porque ocultarían las variables de instancia x e y reales del ámbito del método. Si lo hubiésemos hecho, entonces x se hubiera referido al parámetro formal, ocultando la variable de instancia x:<br />void inicia2( int x, int y ) {<br />x = x; // Ojo, no modificamos la variable de instancia!!!<br />this.y = y; // Modificamos la variable de instancia!!!<br />}<br />E. La destrucción del objeto<br />a.) La destrucción de los objetos<br />Cuando un objeto no va a ser utilizado, el espacio de memoria de dinámica que utiliza ha de ser liberado, así como los recursos que poseía, permitiendo al programa disponer de todos los recursos posibles. A esta acción se la da el nombre de destrucción del objeto.<br />En Java la destrucción se puede realizar de forma automática o de forma personalizada, en función de las características del objeto.<br />b.) La destrucción por defecto: Recogida de basura<br />El intérprete de Java posee un sistema de recogida de basura, que por lo general permite que no nos preocupemos de liberar la memoria asignada explícitamente.<br />El recolector de basura será el encargado de liberar una zona de memoria dinámica que había sido reservada mediante el operador new, cuando el objeto ya no va a ser utilizado más durante el programa (por ejemplo, sale del ámbito de utilización, o no es referenciado nuevamente).<br />El sistema de recogida de basura se ejecuta periódicamente, buscando objetos que ya no estén referenciados.<br />c.) La destrucción personalizada: finalize<br />A veces una clase mantiene un recurso que no es de Java como un descriptor de archivo o un tipo de letra del sistema de ventanas. En este caso sería acertado el utilizar la finalización explícita, para asegurar que dicho recurso se libera. Esto se hace mediante la destrucción personalizada, un sistema similar a los destructores de C++.<br />Para especificar una destrucción personalizada se añade un método a la clase con el nombre finalize:<br />class ClaseFinalizada{<br />ClaseFinalizada() { // Constructor<br />// Reserva del recurso no Java o recurso compartido<br />}<br />protected void finalize() {<br />// Liberación del recurso no Java o recurso compartido<br />}<br />}<br />El intérprete de Java llama al método finalize(), si existe cuando vaya a reclamar el espacio de ese objeto, mediante la recogida de basura.<br />Debe observarse que el método finalize() es de tipo protected void y por lo tanto deberá de sobrescribirse con este mismo tipo.<br />