




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento ilustra el uso de clases anónimas en Java mediante ejemplos prácticos. Las clases anónimas son útiles para la implementación de interfaces y la creación de objetos en tiempo de ejecución. El documento incluye ejemplos de clases anónimas que implementan interfaces y heredan de clases, así como la sobrecarga de métodos estáticos.
Tipo: Apuntes
1 / 182
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Java es un lenguaje de programaci´on de alto nivel, orientado a obje- tos, multi-hebra, usado para escribir tanto programas autocontenidos como “applets”, estos ´ultimos como parte de los documentos HTML (hypertext markup language) que se encuentran disponibles en p´aginas WWW. Los ap- plets permiten a las p´aginas de red tener un contenido ejecutable accesible con un navegador habilitado con Java.
Java tiene varias ventajas y caracter´ısticas ´utiles para el programador:
Una vez que el compilador e int´erprete de Java han sido portados a una nueva plataforma, un programa Java puede ejecutarse en tal plataforma sin cambios. Java es un lenguaje fuertemente tipificado: el compilador hace varias verificaciones, tal como comparar los tipos de los argumentos que se pasan a los m´etodos para asegurar que se ajustan a los tipos de los par´ametros formales. El int´erprete hace muchas verificaciones durante el tiempo de ejecu- ci´on, tal como asegurar que el ´ındice de un arreglo no salga de sus limites, o que una referencia a un objeto no sea nula. No son posibles ni “fugas de memoria” (memory leak, un bloque de memoria que todav´ıa se considera reservado en memoria aun cuando no haya referencias a ´el) ni “apuntadores colgantes” (dangling point- ers, una referencia a un bloque de memoria que ha sido liberado), ya que el recolector de basura (garbage collector) de Java recolecta toda la memoria ocupada por objectos inalcanzables. No es necesario un procedimiento free(), susceptible a errores.
No hay aritm´etica de apuntadores: las ´unicas operaciones permitidas sobre las referencias a un objeto son asignaci´on de otra referencia a objeto y comparaci´on con otra referencia. Por lo tanto, el programador tiene menor posibilidad de escribir c´odigo susceptible a errores que modifique un apuntador.
Java viene acompa˜nado de una biblioteca de herramientas para la creaci´on de ventanas, conocida como AWT, que se utiliza por apli- caciones y applets para la implementaci´on de interfaces gr´aficas de usuario.
Se encuentran disponibles muchos libros que describen el lenguaje Java (y que se han usado como referencias para las presentes notas) como son:
Varios vienen acompa˜nados de un CD-ROM que contiene los ejemplos de los programas del libro y una copia del Java Development Kit (JDK) de Sun Microsystems. M´as aun, el JDK y su documentaci´on asociada pueden obtenerse en forma gratuita en el sitio ftp.javasoft.com, mantenido por JavaSoft, que es una subsidiaria de Sun Microsystems.
El JDK consiste de un compilador, un int´erprete (JVM o Java Vir- tual machine), y las bibliotecas de clases del sistema. Existen varias ver- siones de JDK para los m´as populares y conocidos sistemas operativos (MS-Windows, Linux, Solaris, MacOS System, etc.). Para informaci´on sobre nuevos desarrollos sobre JDK puede hallarse en la p´agina de JavaSoft, en: http://www.javasoft.com y http://www.sun.com.
2.1. Codificaci´on Java
Un programa en Java consiste de una serie de declaraciones de clases e interfaces, cada una de las cuales se compone de declaraciones de m´etodos y variables. Estas declaraciones se presentan formando un texto o c´odigo que es almacenado en un archivo fuente. Aun cuando las declaraciones de varias clases y/o interfaces pueden ser almacenadas en el mismo archivo fuente, t´ıpicamente cada declaraci´on se almacena en un archivo separado. Esto no se debe solo a preferencia, sino que tambi´en se relaciona con la forma en que las clases de Java se cargan cuando un programa se ejecuta.
Los archivos fuente siempre tienen nombres con la terminaci´on .java. La primera parte del nombre del archivo es el nombre de la clase o interfaz declarada en el propio archivo. Por ejemplo, una clase Test se almacenar´ıa en un archivo Test.java. Si un archivo contiene la declaraci´on de m´as de una clase o interfaz, el archivo debe ser nombrado a partir de una de ellas, la cual debe ser la ´unica clase o interfaz p´ublica (public) en el archivo.
Los comentarios en Java tienen tres formas:
// Este es un comentario de una sola linea /* Este es un comentario multilinea */
@deprecated No sera disponible en siguientes versiones
Idealmente, @deprecated debe seguirse de una etiqueta @see que diri- ja al lector al punto de reemplazo. Esta etiqueta es adicionalmente reconocida por el compilador de Java, lo que genera un mensaje de advertencia (warning) si el c´odigo se utiliza.
@exception. Provee de informaci´on sobre las excepciones que pueden arrojarse a partir de un m´etodo. Un nombre de excepci´on puede apare- cer despu´es de la etiqueta seguida de un comentario de texto.
@exception IndexOutOfBoundsException Intento de accesar un elemento invalido
Un comentario para documentaci´on puede contener varias etiquetas @exception.
@param. Provee informaci´on sobre par´ametros de m´etodos y construc- tores. La etiqueta es seguida del nombre del par´ametro y de un co- mentario:
@param size Tamano de una estructura de datos
Estas etiquetas solo deben aparecer en comentarios precediendo m´eto- dos y constructores. Idealmente, debe haber una etiqueta por cada par´ametro, present´andose en el mismo orden de los par´ametros.
@return. Documenta el valor de retorno de un m´etodo.
@return El indice de un elemento identificado
El comentario es texto simple. Un comentario para documentaci´on debe solo contener una etiqueta @return, ya que solo puede haber un solo valor de retorno.
@see. Provee una referencia cruzada a otra clase, interfaz, m´etodo, variable o URL. Las siguientes son referencias v´alidas:
@see java.lang.Integer @see Integer @see Integer#intValue @see Integer#getInteger(String) @see Vease aqui para mayor informacion
Las clases e interfaces pueden ser referenciadas tanto por su nom- bre como por el nombre completo del paquete al que pertenecen. Las variables y m´etodos miembro pueden referenciarse mediante a˜nadir su nombre al nombre de la clase siguiendo el s´ımbolo #. Los URLs pueden aparecer si se hace un formato utilizando las etiquetas ... de HTML. M´ultiples etiquetas @see pueden aparecer en el mismo comen- tario.
@since. Se usa para establecer cu´ando una caracter´ıstica particular fue incluida (por ejemplo, desde cuando se ha hecho disponible). La etiqueta se sigue por un texto dando la informaci´on requerida:
@since JDK1.
@version. Se utiliza para dar informaci´on sobre la versi´on de la re- visi´on actual del c´odigo siendo comentado. El formato para la infor- maci´on sobre la versi´on no est´a especificada, y se deja al programador. Una convenci´on no oficial que se est´a utilizando cada vez m´as es aqu´ella en que el n´umero de la versi´on se sigue por la fecha de liberaci´on (re- lease date):
@version 1.2 20.8.
Solo una etiqueta de versi´on puede aparecer dentro de un comentario.
El texto incluido en un comentario para documentaci´on puede tambi´en marcarse con etiquetas HTML usadas para controlar la apariencia del tex- to, incluyendo ... (que delimita el texto utilizando la letra para c´odigo de programaci´on), y
(que indica el comienzo de un nuevo p´arrafo, y que se utiliza frecuentemente tambi´en como delimitador de la for- ma
...
). Cons´ultese libros sobre HTML para detalles referentes a la notaci´on de ese lenguaje.La siguiente declaraci´on de una clase ilustra el uso de los comentarios para documentaci´on:
2.2. Identificadores
Un identificador (o simplemente un nombre) en Java es b´asicamente una se- cuencia de caracteres alfab´eticos o d´ıgitos que comienza con un caracter alfab´etico. Los identificadores pueden incluir tambi´en el subrayado (underscore: ) y $ (aun cuando $ no debe ser utilizado en c´odigo normal).
Ejemplos son: result, PI, xyz123, unNombreMuyLargoQueResultaDificilDeEscribir Los identificadores no pueden incluir espacios ni ser ninguna de las palabras clave o literales de Java, ya que tales palabras clave o literales tienen un significado particular dentro del lenguaje. Estas son:
abstract default implements protected throws boolean do import public transient break double instanceof return try byte else int short void case extends interface static volatile catch final long super while char finally native switch class float new synchronized const for package this continue if private throw
Algunos compiladores de Java tambi´en reconocen const y goto como palabras clave o reservadas. Adem´as, unos cuantos valores literales tienen nombres que deben considerarse tambi´en como reservados. Estos son true, false y null.
2.3. Valores
Los valores en Java pueden ser de los siguientes tipos: N´umeros enteros: int y long N´umeros de punto flotante: float y double Valores booleanos: boolean Caracteres: char Cadenas de caracteres: String Referencia nula: null Un valor puede ser utilizado en cualquier expresi´on donde su uso sea del tipo correcto.
Los valores decimales de tipo int (32 bits) pueden escribirse como sigue: 0, 123, -456, 555665, 2354545, - Los valores octales de tipo int son precedidos por un cero ( 0 ), seguido por d´ıgitos en el rango de 0 a 7:
00, 0123, 0777, -045233, 023232, - Los valores hexadecimales del tipo int se preceden por 0x o 0X. Los d´ıgitos hexadecimales pueden representarse por cifras del 0 al 9 y de A a F (o a a f):
0x0, 0X12F, -0xffed, 0XFFFF, 0x12def1, 0xff Los valores de tipo long (64 bits) se denotan por a˜nadirles una L o l a cualquier representaci´on de un entero:
0L, 0l, 1223434545L, 0xffeeL, 077L, -34543543l, -045l, -0XC0B0L
La representaci´on de n´umeros de punto flotante incluyen un punto decimal. Por defecto, todo n´umero con punto decimal se considera de tipo double:
1.2345, 1234.432353, 0.1, 3.4, .3, 1., -23. S´olo si el n´umero cuenta con el sufijo F o f ser´a de tipo float: 1.23f, 2.34F, 0f, .2F, -4.5687F, -4423.223f
Los valores de cadenas de caracter se encierran en comillas dobles, y se almace- nan como objetos String cuando el programa se ejecuta. Pueden incluir caracteres especiales (com´unmente, la l´ınea aparte):
"Esta es una cadena", "Hola Mundo\n", "Uno\tDos\tTres"
Este valor aparece simplemente como null, y como los valores booleanos, se considera efectivamente como una palabra reservada.
2.4. Tipos
Un tipo es un nombre que representa un conjunto de valores. Java tiene dos categor´ıas de tipos: tipos primitivos y tipos de referencia. Por cada tipo hay un conjunto de operadores para los valores de tal tipo (por ejemplo, +, - , *, etc.).
Java es un lenguaje fuertemente tipificado, lo que significa que toda expresi´on, valor y objeto debe tener un tipo, y que el uso de tipos debe ser consistente. El com- pilador de Java refuerza el uso correcto de tipos mediante una rigurosa verificaci´on de tipos.
Los tipos primitivos reflejan los tipos b´asicos que se soportan directamente por el procesador de una computadora t´ıpica, haci´endolos los tipos m´as eficientes a ser usados. Las operaciones sobre estos tipos usualmente se mapean directamente a instrucciones del procesador. Dicho eso, Java define cuidadosamente una repre- sentaci´on est´andar para cada uno de estos tipos, de tal modo que se comporten exactamente igual en cualquier m´aquina que soporte la M´aquina Virtual de Java (Java Virtual Machine, o JVM). La mayor´ıa de los procesadores actuales consideran tales representaciones directamente. Los tipos primitivos se representan como sigue:
boolean. El tipo boolean simplemente tiene dos valores: true y false. byte. Enteros de 8 bits signados con complemento a 2, con rango de valores entre -128 y 127. short. Enteros de 16 bits signados con complemento a 2, con rango de valores entre -32768 y 32767. int. Enteros de 32 bits signados con complemento a 2, con rango de valores entre -2147483648 y 2147483647. long. Enteros de 64 bits signados con complemento a 2, con rango de valores entre -9223372036854775808 y 9223372036854775807. char. Valores de 16 bits no signados, de 0 a 65535, representando caracteres Unicode. float. Valores de punto flotante de precisi´on sencilla, con formato IEEE 754 de 32 bits, con un rango de valores entre 1.40239846e-45 y 3.40282347e+38. double. Valores de punto flotante de doble precisi´on, con formato IEEE 754 de 64 bits, con un rango de valores entre 4.9406564581246544e-324 y 1.79769313486231570e+ Hay otros tres valores especiales de tipo flotante: “infinito positivo” (positive infinity), “infinito negativo” (negative infinity) y “no un n´umero” (not a number, o NaN). Estos se generan cuando una operaci´on de punto flotante sobrepasa la capacidad de la computadora (overflow), u ocurre una divisi´on entre cero.