diff options
Diffstat (limited to 'poo')
| -rw-r--r-- | poo/n.lyx | 266 | ||||
| -rw-r--r-- | poo/n1.lyx | 235 | ||||
| -rw-r--r-- | poo/n2.lyx | 1168 | ||||
| -rw-r--r-- | poo/n3.lyx | 959 | ||||
| -rw-r--r-- | poo/n4.lyx | 3827 | ||||
| -rw-r--r-- | poo/n5.lyx | 926 | ||||
| -rw-r--r-- | poo/n6.lyx | 771 | ||||
| -rw-r--r-- | poo/na.lyx | 1500 | ||||
| -rw-r--r-- | poo/nb.lyx | 743 |
9 files changed, 10395 insertions, 0 deletions
diff --git a/poo/n.lyx b/poo/n.lyx new file mode 100644 index 0000000..ff15b9e --- /dev/null +++ b/poo/n.lyx @@ -0,0 +1,266 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Programación Orientada a Objetos +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2018} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Programación Orientada a Objetos, anónimo (Curso 2018–2019). +\end_layout + +\begin_layout Itemize +Java™ Platform, Standard Edition 8, API Specification ( +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://docs.oracle.com/javase/8/docs/api/ +\end_layout + +\end_inset + +). +\end_layout + +\begin_layout Chapter +Introducción +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Clases y objetos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Herencia +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n3.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Genericidad +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n4.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Programación funcional +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n5.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Excepciones +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n6.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +\start_of_appendix +Algo más de la API +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "na.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Despliegue de software Java +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "nb.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/poo/n1.lyx b/poo/n1.lyx new file mode 100644 index 0000000..4ab7e7c --- /dev/null +++ b/poo/n1.lyx @@ -0,0 +1,235 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La evolución de los lenguajes de programación va ligada al crecimiento de + la complejidad en aplicaciones y a la mejora de la capacidad del hardware, + y busca acercarse a los conceptos del dominio de la aplicación ( +\series bold +abstracción +\series default +). + Un +\series bold +paradigma de programación +\series default + es una serie de conceptos que guían la forma de pensar acerca de los programas, + construirlos y estructurarlos. + Los lenguajes de programación reflejan uno o varios de estos paradigmas. +\end_layout + +\begin_layout Standard +El paradigma +\series bold +orientado a objetos +\series default + organiza el software como una colección de objetos que se relacionan y + proveen la funcionalidad de un sistema. + Este paradigma nos permite: +\end_layout + +\begin_layout Itemize + +\series bold +Abstracción +\series default +: Centrarse en las propiedades de los tipos y no en la implementación. +\end_layout + +\begin_layout Itemize + +\series bold +Modularidad +\series default +: Descomponer el software en componentes que se combinan entre sí. +\end_layout + +\begin_layout Itemize + +\series bold +Encapsulación +\series default +: Juntar la estructura de un tipo de datos con sus operaciones. +\end_layout + +\begin_layout Itemize + +\series bold +Ocultación de información +\series default +: Diferenciar la parte pública de un módulo de la privada. +\end_layout + +\begin_layout Itemize + +\series bold +Herencia +\series default +: Definir clases a partir de otras. +\end_layout + +\begin_layout Itemize + +\series bold +Polimorfismo +\series default +: Permitir que una entidad haga referencia a objetos de distintos tipos. +\end_layout + +\begin_layout Standard +En 1985 se crean el +\series bold +C++ +\series default +, extensión orientada a objetos de C muy popular que ayudó a difundir el + paradigma, y +\series bold +Eiffel +\series default +, creado por Bertrand Meyer tras un profundo estudio del paradigma pero + considerado +\begin_inset Quotes fld +\end_inset + +teórico +\begin_inset Quotes frd +\end_inset + + y poco usado. +\end_layout + +\begin_layout Standard +En 1995, Sun Microsystems (adquirido por Oracle en 2009) crea +\series bold +Java +\series default +, un lenguaje OO puro popularizado por su uso en la web y con numerosas + bibliotecas de código, y en el año 2000 Microsoft crea +\series bold +C# +\series default +, que combina C++ y Java, junto con su plataforma +\series bold +.NET +\series default +. +\end_layout + +\begin_layout Standard +El compilador de Java genera un +\series bold +código intermedio +\series default + o +\emph on +bytecode +\emph default +, independiente de la plataforma, e interpretado o compilado en el momento + (compilación +\series bold +JIT +\series default +, +\emph on +Just In Time +\emph default +) por la máquina virtual de Java (JVM), con lo que el código se puede ejecutar + en cualquier máquina que tenga instalado el entorno de ejecución de Java + y la máquina virtual, independientemente de la arquitectura del procesador + y el sistema operativo. +\end_layout + +\begin_layout Standard +Java presenta una sintaxis sencilla, parecida a C++ pero eliminando las + características complejas, y es robusto al ser fuertemente tipado (el compilado +r detecta muchos problemas del código), soportar excepciones (para gestión + de errores en tiempo de ejecución) y proveer +\begin_inset Quotes fld +\end_inset + +recogida de basura +\begin_inset Quotes frd +\end_inset + + (hace innecesaria la gestión de punteros). + Aprenderemos Java 1.8. +\end_layout + +\end_body +\end_document diff --git a/poo/n2.lyx b/poo/n2.lyx new file mode 100644 index 0000000..e22fece --- /dev/null +++ b/poo/n2.lyx @@ -0,0 +1,1168 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Java los tipos de datos se implementan como +\series bold +clases +\series default +, cada una dentro de un fichero y con nombre normalmente en +\emph on +CamelCase +\emph default +, que a su vez se organizan en +\series bold +paquetes +\series default + que agrupan código relacionado +\emph on +, +\emph default + con nombres en +\emph on +lowerCamelCase +\emph default + +\begin_inset Foot +status open + +\begin_layout Plain Layout +Ese término me lo he inventado. +\end_layout + +\end_inset + +, que pueden a su vez estar en otros. + Los elementos de la ruta de un paquete, clase, etc. + se separan con +\begin_inset Quotes fld +\end_inset + + +\family typewriter +. +\family default + +\begin_inset Quotes frd +\end_inset + +. + Los ficheros de clase contienen: +\end_layout + +\begin_layout Itemize +Declaración del paquete en el que está la clase: +\family typewriter +package +\emph on +ruta.del.paquete +\emph default +; +\family default +. +\end_layout + +\begin_layout Itemize +Importación de clases de paquetes distintos al de la clase o a +\family typewriter +java.lang +\family default +, para poder referirnos a ellas sin indicar la ruta completa: +\family typewriter +import +\emph on +ruta.de.Clase +\emph default +; +\family default +. + También se pueden importar constantes +\begin_inset Newline newline +\end_inset + +definidas en clases con +\family typewriter +import static ruta.de.Clase. +\family default +[ +\family typewriter +CONSTANTE +\family default +| +\family typewriter +* +\family default +] +\family typewriter +; +\family default +. +\end_layout + +\begin_layout Itemize +Definición de la clase: [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter +class +\emph on +NombreClase +\family default +\emph default +[ +\family typewriter +< +\family default +... +\family typewriter +> +\family default +] [ +\family typewriter +extends +\emph on +Clase +\family default +\emph default +] [ +\family typewriter +implements +\emph on +Interfaz1 +\emph default +, +\family default +...] +\family typewriter +{ +\family default +... + +\family typewriter + } +\family default +, donde se define la clase. + La visibilidad es +\family typewriter +public +\family default + para que la clase sea visible fuera del paquete; por defecto solo lo es + dentro de este. +\end_layout + +\begin_layout Standard +Los elementos de una clase (dentro de +\family typewriter +{ +\family default +... + +\family typewriter + } +\family default +) pueden tener visibilidad pública ( +\family typewriter +public +\family default +, accesible fuera del paquete), privada ( +\family typewriter +private +\family default +, accesible solo dentro la clase) o a nivel de paquete (por defecto, accesible + solo dentro del paquete). + Estos son: +\end_layout + +\begin_layout Itemize + +\series bold +Atributos +\series default +: Los campos de la estructura: [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter +\emph on +Tipo nombre +\emph default + +\family default +[ +\family typewriter += +\emph on +expr +\family default +\emph default +] +\family typewriter +; +\family default +. + Siempre privados según las buenas prácticas. + Cuando una clase +\begin_inset Formula $A$ +\end_inset + + declara un atributo cuyo tipo es otra clase +\begin_inset Formula $B$ +\end_inset + +, decimos que +\begin_inset Formula $A$ +\end_inset + + es +\series bold +cliente +\series default + de +\begin_inset Formula $B$ +\end_inset + + ( +\series bold +relación de clientela +\series default +). +\end_layout + +\begin_layout Itemize + +\series bold +Métodos +\series default +: Operaciones aplicables sobre los objetos: +\begin_inset Newline newline +\end_inset + +[ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] [ +\family typewriter +\emph on +TipoDevuelto +\family default +\emph default +| +\family typewriter +void +\family default +] +\family typewriter +\emph on + nombre +\emph default +( +\family default +[ +\family typewriter +final +\family default +] +\family typewriter +\emph on +Tipo parámetro +\emph default +, +\family default +... + [ +\family typewriter +, +\family default +[ +\family typewriter +final +\family default +] +\family typewriter + +\emph on +Tipo +\emph default +... + +\emph on +array +\family default +\emph default +] +\family typewriter +) +\family default +[ +\family typewriter +throws +\emph on +Excepción1 +\emph default +, +\family default +...] +\family typewriter + { +\family default +(implementación) +\family typewriter + } +\family default +. + Si se incluye el parámetro +\family typewriter +\emph on +array +\family default +\emph default +, su tipo es +\family typewriter +\emph on +Tipo +\emph default +[] +\family default + (ver abajo), y recibe la lista de todos los parámetros después de los obligator +ios si son de tipo +\family typewriter +\emph on +Tipo +\family default +\emph default +, o el (único) parámetro des +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pués de los obligatorios si es de tipo +\family typewriter +\emph on +Tipo +\emph default +[] +\family default +. + Puede haber varios métodos con el mismo nombre, siempre que tengan distinto + número de parámetros o alguno tenga distinto tipo y estos sean disjuntos + ( +\series bold +sobrecarga de métodos +\series default + u +\series bold +\emph on + +\series default +overloading +\emph default +). +\begin_inset Newline newline +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +sremember{IP} +\end_layout + +\end_inset + +Llamamos +\series bold +parámetros formales +\series default + a los parámetros de una acción ( +\begin_inset Formula $par_{1},\dots,par_{n}$ +\end_inset + +) y +\series bold +argumentos +\series default + o +\series bold +parámetros reales +\series default + a los valores con los que se invoca la acción, mediante la notación +\begin_inset Quotes cld +\end_inset + + +\emph on +nombre +\emph default +( +\begin_inset Formula $expr_{1},\dots,expr_{n}$ +\end_inset + +) +\begin_inset Quotes crd +\end_inset + +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +eremember{} +\end_layout + +\end_inset + + +\end_layout + +\end_inset + +Para acceder a los atributos se pueden usar +\series bold +métodos de acceso +\series default + ( +\emph on +getters +\emph default +, normalmente +\family typewriter +public +\emph on +Tipo +\emph default + get +\emph on +Atributo +\emph default +() +\family default +) y +\series bold +métodos de modificación +\series default + ( +\emph on +setters +\emph default +, normalmente +\family typewriter +public void set +\emph on +Atributo +\emph default +( +\emph on +Tipo atributo +\emph default +) +\family default +), lo que permite más tarde cambiar la estructura manteniendo la interfaz + compatible. + Otras veces se accede a los atributos de otras formas más apropiadas para + su significado concreto, o se añaden métodos de acceso para propiedades + calculadas. +\end_layout + +\begin_layout Itemize + +\series bold +Constructores +\series default +: Operaciones encargadas de inicializar correctamente un objeto. + Se definen como los métodos pero sin el tipo devuelto, y el nombre es el + de la clase. + Si no se define ninguno se crea un +\series bold +constructor por defecto +\series default +, que no toma ningún parámetro y deja todos los atributos con su valor por + defecto. +\end_layout + +\begin_layout Standard +Los modificadores ( +\family typewriter +\emph on +mods +\family default +\emph default +) son: +\end_layout + +\begin_layout Itemize + +\family typewriter +static +\family default +: Indica que un atributo es global para todos los objetos de la clase (atributo + +\series bold +de clase +\series default +), o que un método es de clase, y por tanto no se llama a través de un objeto + y en principio solo puede acceder a atributos de clase. +\end_layout + +\begin_layout Itemize + +\family typewriter +final +\family default +: Indica que el valor de un atributo (o variable local) solo puede ser estableci +do en su declaración o, en su caso, en un constructor. + No se les asigna un valor por defecto. + Puede combinarse con +\family typewriter +static +\family default + para definir constantes, que no hace falta hacerlas privadas. + +\end_layout + +\begin_layout Standard +Tipos de datos en Java: +\end_layout + +\begin_layout Itemize +Primitivos. +\end_layout + +\begin_deeper +\begin_layout Itemize +Enteros con signo: +\family typewriter +byte +\family default + (8 bits), +\family typewriter +short +\family default + (16), +\family typewriter +int +\family default + (32), +\family typewriter +long +\family default + (64). + Por defecto: +\family typewriter +0 +\family default +. +\end_layout + +\begin_layout Itemize +Reales: +\family typewriter +float +\family default + (IEEE-854, 32 bits), +\family typewriter +double +\family default + (64). + Por defecto: +\family typewriter +0 +\family default +. +\end_layout + +\begin_layout Itemize +Caracteres: +\family typewriter +char +\family default +. + Por defecto: +\family typewriter +' +\backslash +u000' +\family default +. +\end_layout + +\begin_layout Itemize +Booleano: +\family typewriter +boolean +\family default +. + Valores +\family typewriter +false +\family default + (por defecto) y +\family typewriter +true +\family default +. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Objetos +\series default +. + +\series bold +Instancias +\series default + de una clase, representadas por una estructura en memoria con un campo + por cada atributo, que para tipos primitivos contiene el valor y para el + resto contiene un identificador de objeto ( +\emph on +oid +\emph default +), o el valor +\family typewriter +null +\family default +, su valor por defecto, que no indica ningún objeto. + El +\series bold +estado +\series default + de un objeto es el valor de estos campos. +\begin_inset Newline newline +\end_inset + +Los objetos en Java se manejan por referencia (a través del +\emph on +oid +\emph default +). + Esto permite la compartición de objetos con integridad referencial, es + más eficiente para objetos complejos, permite estructuras recursivas e + implica que los objetos se crean cuando se construyen y no en su declaración. + El inconveniente es el +\series bold +\emph on +aliasing +\series default +\emph default +, pues al asignar el valor de una variable a otra no se copia el objeto + sino su identificador, lo cual es importante tener en cuenta en métodos + de acceso a atributos mutables para no comprometer la integridad del objeto. +\end_layout + +\begin_deeper +\begin_layout Itemize +Las cadenas de caracteres son objetos inmutables de clase +\family typewriter +String +\family default +. +\end_layout + +\begin_layout Itemize +Los +\series bold +enumerados +\series default + son clases definidas de forma especial, con la sintaxis [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] +\family typewriter +enum +\emph on +Nombre +\emph default + { +\emph on +VALOR_1 +\emph default +, +\emph on +VALOR_2 +\emph default +, +\family default +... + +\family typewriter + } +\family default +. + Incluyen una constante del propio tipo para cada valor, y estas definen + el dominio de valores de la clase, así como métodos +\family typewriter +public int ordinal() +\family default + que devuelve el índice del valor y +\family typewriter +public static +\emph on +Tipo +\emph default +[] values() +\family default + que devuelve una lista con todas los valores posibles. +\end_layout + +\begin_layout Itemize +Los +\series bold +\emph on +arrays +\series default +\emph default + son objetos que contienen un número fijo de elementos de otro tipo. + Su tipo es +\family typewriter +\emph on +TipoElemento +\emph default +[] +\family default +... +\family typewriter +[] +\family default + (pueden tener varias dimensiones). + Su tamaño puede consultarse mediante el atributo +\family typewriter +public final int length +\family default +. +\end_layout + +\end_deeper +\begin_layout Standard +El operador +\family typewriter +== +\family default + comprueba si dos elementos de un tipo primitivo son iguales o si dos referencia +s apuntan al mismo objeto (igual +\emph on +oid +\emph default +), y en particular si dos elementos de un tipo enumerado tienen el mismo + valor (devuelve un booleano). +\end_layout + +\begin_layout Standard +Los objetos se comunican entre sí mediante +\series bold +mensajes +\series default +, formados por un +\series bold +objeto receptor +\series default + (si no es un método de clase), un +\series bold +identificador de método +\series default + y los +\series bold +argumentos +\series default +. + Enviar un mensaje es llamar al método, definido en la clase del objeto, + con la sintaxis +\family typewriter +\emph on +objeto +\emph default +. +\emph on +método +\emph default +( +\emph on +args +\emph default +, +\family default +... +\family typewriter +) +\family default + o, si es un método de clase, con +\family typewriter +\emph on +Clase +\emph default +. +\emph on +método +\emph default +( +\emph on +args +\emph default +, +\family default +... +\family typewriter +) +\family default +. + Los argumentos se pasan por valor. + Este método (si no es de clase) puede acceder al objeto sobre el que se + llama (la +\series bold +instancia actual +\series default +) por la palabra reservada +\family typewriter +this +\family default +. + Además, puede referirse a los métodos y atributos de la instancia actual + (si no es un método de clase) o de la propia clase sin especificar la instancia + actual o la clase, siempre que no haya un parámetro o variable local del + mismo nombre. + Un constructor puede invocar a otro mediante +\family typewriter +this( +\emph on +args +\emph default +, +\family default +... +\family typewriter +); +\family default +. +\end_layout + +\begin_layout Standard +Dentro de un método, la sentencia +\family typewriter +\emph on +Tipo var +\emph default + +\family default +[ +\family typewriter += +\emph on +expr +\family default +\emph default +] +\family typewriter +; +\family default + declara una variable local y le asigna opcionalmente un valor, y la expresión + +\family typewriter +new +\emph on +Clase +\emph default +( +\emph on +arg +\emph default +, +\family default +... +\family typewriter +) +\family default + asigna el espacio para la estructura de un objeto, le asigna un identificador, + inicializa los campos con su valor por defecto, llama al constructor corrspondi +ente y devuelve dicho objeto. + Para crear un +\emph on +array +\emph default + se usa +\family typewriter +new +\emph on +TipoElemento +\emph default +[ +\emph on +t1 +\emph default +] +\family default +... +\family typewriter +[ +\emph on +tn +\emph default +] +\family default +[ +\family typewriter +{ +\family default +\emph on +... +\family typewriter +\emph default +{ +\emph on +valor11 +\emph default +, +\family default +... +\family typewriter +}, +\family default +... +\family typewriter +} +\family default +], con el número de elementos en cada dimensión, lo que asigna el espacio + necesario al +\emph on +array +\emph default +, le asigna un identificador e inicializa cada elemento con su valor por + defecto o con los valores indicados entre llaves. + La destrucción de los objetos no es explícita, sino que el +\series bold +recolector de basura +\series default + ( +\emph on +garbage collector +\emph default +) periódicamente libera los objetos que no son referenciados. + Un objeto puede ser notificado antes de ser eliminado implementando el + método +\family typewriter +finalize() +\family default +, lo que interesa cuando este hace uso de recursos externos. + Estructuras de control: +\end_layout + +\begin_layout Itemize +Sentencias condicionales: +\family typewriter +if ( +\emph on +cond-expr +\emph default +) +\emph on +then-stmt +\emph default + +\family default +[ +\family typewriter +else +\emph on +else-stmt +\family default +\emph default +] ( +\family typewriter +\emph on +cond-expr +\family default +\emph default + debe evaluar a booleano); +\family typewriter +switch ( +\emph on +expr +\emph default +) { +\family default +... + +\family typewriter + } +\family default + ( +\family typewriter +\emph on +expr +\family default +\emph default + debe evaluar a entero, valor de enumerado o cadena, y es necesario usar + +\family typewriter +break; +\family default + para evitar que la ejecución continúe con el caso siguiente). +\end_layout + +\begin_layout Itemize +Bucles: +\family typewriter +while +\family default +, +\family typewriter +for +\family default +. +\end_layout + +\begin_layout Standard +Una aplicación OO se organiza como un conjunto de clases relacionadas, siendo + una de ellas la +\series bold +raíz de la aplicación +\series default +, que contiene un método (en Java, +\family typewriter +public static void main(String[] args) +\family default +) encargado de poner en marcha la aplicación. + El flujo de ejecución siempre se encuentra aplicando un método sobre un + objeto o ejecutando alguna instrucción imperativa, si bien en una aplicación + concurrente puede haber varios flujos de ejecución. +\end_layout + +\begin_layout Standard +Si una clase tiene muchos atributos de tipo primitivo, suele ser necesario + separar la funcionalidad definiendo clases con parte de estos atributos. + Se usa el patrón +\series bold +experto en información +\series default +: asignar una funcionalidad a la clase que tiene la información necesaria + para llevarla a cabo. +\end_layout + +\end_body +\end_document diff --git a/poo/n3.lyx b/poo/n3.lyx new file mode 100644 index 0000000..1c193b3 --- /dev/null +++ b/poo/n3.lyx @@ -0,0 +1,959 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La +\series bold +herencia +\series default + es un mecanismo para definir y utilizar relaciones conceptuales entre clases + como de extensión, especialización y combinación, que permite definir una + clase a partir de otra, organizando las clases en una +\series bold +jerarquía +\series default + consistente con el sistema de tipos. + La +\series bold +especialización +\series default + ocurre cuando una clase es un caso especial o un tipo de otra, mientras + que la +\series bold +generalización +\series default +, muy relacionada, ocurre cuando se detectan clases con características + en común. +\end_layout + +\begin_layout Standard +Cuando una clase +\begin_inset Formula $B$ +\end_inset + + +\series bold +hereda +\series default + de una clase +\begin_inset Formula $A$ +\end_inset + +, incorpora automáticamente los atributos y métodos de +\begin_inset Formula $A$ +\end_inset + + (en Java, no incorpora los constructores), pero puede añadir nuevos atributos + y métodos y redefinir métodos heredados. + Decimos que +\begin_inset Formula $A$ +\end_inset + + es la +\series bold +superclase +\series default + o clase padre de +\begin_inset Formula $B$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + es una +\series bold +subclase +\series default + o clase hija de +\begin_inset Formula $A$ +\end_inset + +. + Si +\begin_inset Formula $C$ +\end_inset + + hereda a su vez de +\begin_inset Formula $B$ +\end_inset + +, también hereda de +\begin_inset Formula $A$ +\end_inset + +, pero +\begin_inset Formula $B$ +\end_inset + + es un +\series bold +descendiente directo +\series default + y +\begin_inset Formula $C$ +\end_inset + + es un +\series bold +descendiente indirecto +\series default + de +\begin_inset Formula $A$ +\end_inset + +. + Decimos que +\begin_inset Formula $A$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + son +\series bold +ascendientes +\series default + de +\begin_inset Formula $C$ +\end_inset + +. + Algunos lenguajes como C++ o Python permiten +\series bold +herencia múltiple +\series default +, de modo que una clase puede heredar directamente de varias, mientras que + otros, como Java o C#, solo permiten +\series bold +herencia simple +\series default +. +\end_layout + +\begin_layout Standard +En Java se indica que una clase deriva de otra indicando +\family typewriter +extends +\emph on +Superclase +\family default +\emph default + detrás del nombre de la clase en su definición. + Los descendientes de una clase no pueden ver sus atributos y métodos privados, + sino que se proporciona el nivel de visibilidad +\family typewriter +protected +\family default +, útil para métodos, que da visibilidad a nivel de paquete y a descendientes + de la clase. +\end_layout + +\begin_layout Standard +La primera sentencia de un constructor debe ser una llamada a un constructor + de la clase padre, que se hace con +\family typewriter +super( +\family default +... +\family typewriter +); +\family default + o a otro constructor de la propia clase, y si se omite el compilador inserta + una llamada +\family typewriter +super(); +\family default + al constructor vacío, dando error si este no existe. +\end_layout + +\begin_layout Standard +El modificador +\family typewriter +final +\family default + se puede añadir a un método para impedir que sea redefinido en clases descendie +ntes, y en una clase para impedir que se pueda heredar de ella. +\end_layout + +\begin_layout Section +Polimorfismo +\end_layout + +\begin_layout Standard +Un método es una +\series bold +redefinición +\series default + si tiene la misma signatura (nombre, parámetros y tipo de retorno) que + un método de la clase padre. + En Java se indica con la +\series bold +anotación +\series default + +\family typewriter +@Override +\family default + encima de la definición de la función, que es opcional pero señala un fallo + si el método no es realmente una redefinición, útil para detectar errores. + Esta puede ser de +\series bold +reemplazo +\series default + si se sustituye completamente la implementación o de +\series bold +refinamiento +\series default + si simplemente se añade nueva funcionalidad, en cuyo caso la sintaxis +\family typewriter +super. +\emph on +método +\emph default +( +\family default +... +\family typewriter +) +\family default + sirve para llamar a la versión del padre de un método redefinido. +\end_layout + +\begin_layout Standard +El +\series bold +polimorfismo +\series default + es la capacidad de una entidad de referenciar en tiempo de ejecución a + objetos de distintas clases, y en lenguajes como Java significa que toda + entidad tiene un +\series bold +tipo estático +\series default + ( +\emph on +te +\emph default +), asociado a su declaración, y uno +\series bold +dinámico +\series default +, que corresponde al objeto al que hace referencia y puede variar. + A cada entidad le corresponde un +\series bold +conjunto de tipos dinámicos +\series default + ( +\emph on +ctd +\emph default +), el de los posibles tipos dinámicos a los que puede hacer referencia y + que viene dado por el conjunto de tipos +\series bold +compatibles +\series default + con el tipo estático, es decir, los descendientes de este tipo incluyéndose + a sí mismo. +\end_layout + +\begin_layout Standard +Una asignación polimórfica es válida si el tipo estático de la parte derecha + es compatible con el de la parte izquierda. + Un paso de parámetros es válido si el tipo estático del parámetro real + es compatible con el del parámetro formal. + La +\series bold +ligadura dinámica +\series default + significa que la versión de un método que se llama al pasar un mensaje + es la asociada al tipo dinámico, que puede ser la del tipo estático o haber + sido redefinida. +\end_layout + +\begin_layout Standard +En Java, la sintaxis +\family typewriter +( +\emph on +Tipo +\emph default +) +\emph on +variable +\family default +\emph default + permite hacer un +\emph on +casting +\emph default + a uno de los +\family typewriter +\emph on +Tipo +\family default +\emph default +s dinámicos que puede tener la +\family typewriter +\emph on +variable +\family default +\emph default +, permitiendo tratar la variable como si este fuese su tipo estático y pudiendo + acceder a los métodos de este, si bien esto dará un error en tiempo de + ejecución si el tipo dinámico de la variable no es compatible con el que + se especifica al hacer el +\emph on +casting +\emph default +. + La expresión +\family typewriter +\emph on +variable +\emph default + instanceof +\emph on +Tipo +\family default +\emph default + devuelve verdadero si el tipo dinámico de la +\family typewriter +\emph on +variable +\family default +\emph default + es compatible con el del +\family typewriter +\emph on +Tipo +\family default +\emph default + y falso en caso contrario. +\end_layout + +\begin_layout Standard +Al redefinir un método (al que se tenga acceso desde la clase descendiente) + se puede cambiar el tipo de retorno a un tipo descendiente ( +\series bold +regla covariante +\series default +) o incrementar su nivel de visibilidad. +\end_layout + +\begin_layout Standard +Se recomienda situar los atributos y métodos comunes en clases altas de + la jerarquía, aplicando herencia si tiene sentido decir que todos los objetos + de una clase +\begin_inset Quotes fld +\end_inset + +lo son +\begin_inset Quotes frd +\end_inset + + también de otra, usando polimorfismo y ligadura dinámica para evitar análisis + de casos. + No debe usarse herencia si un método heredado no tiene sentido en la clase + hija, y no se debe cambiar la semántica de un método en la clase hija. +\end_layout + +\begin_layout Section +Clases abstractas +\end_layout + +\begin_layout Standard +Una +\series bold +clase abstracta +\series default + es una que no se puede instanciar, no puede ser +\family typewriter +final +\family default + y permite definir +\series bold +métodos abstractos +\series default +, sin código, con +\family typewriter +; +\family default + en vez de la implementación ( +\family typewriter +{ +\family default +... +\family typewriter +} +\family default +), y que no pueden ser +\family typewriter +static +\family default + ni +\family typewriter +final +\family default +. + Las clases y métodos abstractos se deben indicar con el modificador +\family typewriter +abstract +\family default +, y una clase +\series bold +efectiva +\series default + (no abstracta) debe implementar todos los métodos abstractos que hereda. + Una clase abstracta puede implementar constructores, pero estos sólo son + útiles para su uso por las clases hijas, por lo que se declaran +\family typewriter +protected +\family default +. +\end_layout + +\begin_layout Standard +Un +\series bold +método plantilla +\series default + es un método ordinario de una clase abstracta que usa uno o más métodos + abstractos, normalmente +\family typewriter +protected +\family default +, con el fin de evitar repetición de código en las clases descendientes. + La generalización por clases abstractas se aplica muchas veces tras la + implementación ( +\series bold +refactorización +\series default +). +\end_layout + +\begin_layout Section +Interfaces +\end_layout + +\begin_layout Standard +Una +\series bold +interfaz +\series default + es la definición de un tipo sin la implementación, como una clase totalmente + abstracta, y se definen con [ +\family typewriter +\emph on +visibilidad +\family default +\emph default +] [ +\family typewriter +\emph on +mods +\family default +\emph default +] +\family typewriter + interface +\emph on +Nombre +\family default +\emph default + [ +\family typewriter +extends +\emph on +Interfaz1 +\emph default +, +\family default +...] +\family typewriter + { +\family default +... + +\family typewriter + } +\family default +. + Las interfaces no tienen constructores, sus métodos son +\family typewriter +public abstract +\family default + por defecto (aunque puede haber métodos no abstractos) y sus atributos + son +\family typewriter +public static final +\family default +, y no es necesario indicar estos modificadores. + +\end_layout + +\begin_layout Standard +Una interfaz puede heredar de varias interfaces con +\family typewriter +extends +\family default +. + Una clase puede heredar de varias interfaces (se dice que las +\series bold +implementa +\series default +), y se indica con +\family typewriter +implements +\emph on +Interfaz1 +\emph default +, +\family default +.... +\end_layout + +\begin_layout Standard +Las interfaces pueden incluir +\series bold +métodos por defecto +\series default +, con el modificador +\family typewriter +default +\family default +, que no son abstractos. + Una clase puede implementar varias interfaces con distintos métodos por + defecto con la misma signatura, en cuyo caso para que una clase compile + debe reimplementar este método. + La sintaxis +\family typewriter +\emph on +Interfaz +\emph default +.super. +\emph on +método +\emph default +( +\family default +.\SpecialChar endofsentence +. +\family typewriter +) +\family default + permite llamar al método por defecto de una interfaz +\begin_inset Quotes fld +\end_inset + +padre +\begin_inset Quotes frd +\end_inset + + cuando hay ambigüedad. + Las interfaces también pueden incluir métodos +\family typewriter +static +\family default +. +\end_layout + +\begin_layout Section +La clase +\family typewriter +Object +\end_layout + +\begin_layout Standard +Cuando una clase no hereda de ninguna, realmente hereda de +\family typewriter +Object +\family default +. + Métodos de +\family typewriter +Object +\family default +: +\end_layout + +\begin_layout Enumerate + +\family typewriter +public final Class +\series bold +getClass +\series default +() +\family default +. + Devuelve la clase de la instancia actual. + Se recomienda usar +\family typewriter +instanceof +\family default + en vez de esto en caso de duda para comprobar compatibilidad. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public boolean +\series bold +equals +\series default +(Object) +\family default +. + Indica si un objeto es igual a otro. +\begin_inset Newline newline +\end_inset + +Tipos de igualdad: +\series bold +superficial +\series default +, que compara la igualdad de los campos primitivos y el +\emph on +oid +\emph default + de las referencias; +\series bold +profunda +\series default +, que usa +\family typewriter +equals +\family default + recursivamente, o adaptada a las necesidades de la aplicación. + Por defecto la comparación es superficial. +\begin_inset Newline newline +\end_inset + +Es necesario redefinir el método en las clases donde necesitemos igualdad, + pero hay que elegir la semántica de igualdad más adecuada. + El método heredado en una subclase es correcto si no tiene nuevos atributos + o estos no se tienen en cuenta en la igualdad, y en caso contrario, salvo + que la versión heredada sea la de +\family typewriter +Object +\family default +, hay que reutilizarla. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public int +\series bold +hashCode +\series default +() +\family default +. + Devuelve el resultado de aplicar alguna función +\emph on +hash +\emph default + al objeto; usado en tablas de dispersión. + Si +\family typewriter +\emph on +o1 +\emph default +.equals( +\emph on +o2 +\emph default +) +\family default +, debe ser +\family typewriter +\emph on +o1 +\emph default +.hashCode() == +\emph on +o2 +\emph default +.hashCode() +\family default +. + Por defecto se compara la dirección de memoria del objeto. + Si se redefine el método +\family typewriter +equals +\family default + también debe redefinirse +\family typewriter +hashCode +\family default +. +\end_layout + +\begin_layout Enumerate + +\family typewriter +public String +\series bold +toString +\series default +() +\family default +. + Devuelve una representación textual de un objeto. + Por defecto se imprime el nombre de la clase y el +\emph on +oid +\emph default +. + Se recomienda usar +\family typewriter +getClass().getName() +\family default +, que devuelve la clase de la instancia actual, permitiendo que la implementació +n sea he +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +re +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +da +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ble. + Debe ser redefinido en una subclase si añade nuevos atributos. +\end_layout + +\begin_layout Enumerate + +\family typewriter +protected Object +\series bold +clone +\series default +() throws CloneNotSupportedException +\family default +. + Devuelve una +\begin_inset Newline newline +\end_inset + +copia del objeto. +\begin_inset Newline newline +\end_inset + +Tipos de copia: +\series bold +superficial +\series default +, que copia los campos primitivos y los +\emph on +oid +\emph default +; +\series bold +profunda +\series default +, que aplica +\family typewriter +clone +\family default + recursivamente, y adaptada a las necesidades de la aplicación. + Por defecto la copia es superficial. +\begin_inset Newline newline +\end_inset + +Al redefinir el método, hay que cambiar la visibilidad a +\family typewriter +public +\family default +, cambiar el tipo de retorno al tipo propio y ocultar la excepción (el +\family typewriter +throws +\family default +...). + Esta excepción se lanza si la clase del objeto no implementa la interfaz + +\family typewriter +Cloneable +\family default +, que no implementa ningún método pero marca que los objetos de una clase + (y todas las clases descendientes) pueden ser clonadas. +\begin_inset Newline newline +\end_inset + +Al redefinir este método, para que funcione con la herencia, es conveniente + llamar a la versión heredada y, si el tipo padre no es +\family typewriter +Cloneable +\family default +, manejar la excepción mediante +\family typewriter +try { +\family default +(código que llame a +\family typewriter +super.clone() +\family default +) +\family typewriter + } catch (CloneNotSupportedException e) { +\family default +(manejo del error) +\family typewriter + } +\family default + de modo que si salta la excepción se salte directamente al código de manejo + del error, lo que no debería ocurrir. +\end_layout + +\begin_layout Standard +Además, para cada tipo primitivo existe una clase ( +\family typewriter +Integer +\family default +, +\family typewriter +Float +\family default +, +\family typewriter +Double +\family default +, +\family typewriter +Character +\family default +, +\family typewriter +Boolean +\family default +, etc.) correspondiente que actúa como +\series bold +objeto envoltorio +\series default + y hereda de +\family typewriter +Object +\family default +. + Java permite convertir automáticamente entre el tipo primitivo y el envoltorio + ( +\series bold +\emph on +autoboxing +\series default +\emph default +). +\end_layout + +\end_body +\end_document diff --git a/poo/n4.lyx b/poo/n4.lyx new file mode 100644 index 0000000..dce5506 --- /dev/null +++ b/poo/n4.lyx @@ -0,0 +1,3827 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Una +\series bold +clase genérica +\series default + es aquella que en su declaración tiene uno o varios tipos variables ( +\series bold +parámetros +\series default +). + Se indican como +\family typewriter +\emph on +NombreClase +\emph default +< +\emph on +T +\begin_inset Formula $_{1}$ +\end_inset + + +\family default +\emph default + [ +\family typewriter +extends +\emph on +K +\emph default + +\begin_inset Formula $_{11}$ +\end_inset + +[& +\family default +...]][ +\family typewriter +, +\family default +...] +\family typewriter +> +\family default +, y dentro de la clase se pueden usar los tipos +\family typewriter +T +\family default + +\begin_inset Formula $_{i}$ +\end_inset + + como otros tipos cualesquiera, sobre los que se pueden usar los métodos + de los tipos no primitivos +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default +, o de +\family typewriter +Object +\family default + si no se especifican, salvo constructores. + El uso de tipos +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default + permite +\series bold +genericidad restringida +\series default +. +\end_layout + +\begin_layout Standard +También existen las interfaces genéricas, con la misma sintaxis. + Una clase genérica puede heredar de otra e implementar interfaces genéricas. + En la herencia se establecen los parámetros de la clase padre e interfaces + implementadas, que pueden ser parámetros de la propia clase hija o tipos + concretos. +\end_layout + +\begin_layout Standard +La parametrización de una clase genérica se realiza en la declaración de + una variable (incluyendo parámetro, etc.) y en la construcción de objetos, + con la forma +\family typewriter +\emph on +NombreClase +\emph default +< +\emph on +T +\begin_inset Formula $_{1}$ +\end_inset + + +\emph default +, +\family default +... +\family typewriter +> +\family default +, donde los +\family typewriter +T +\begin_inset Formula $_{i}$ +\end_inset + + +\family default + son los tipos parámetros y deben ser compatibles con todos los +\family typewriter +K +\begin_inset Formula $_{ij}$ +\end_inset + + +\family default +, si bien en la construcción se pueden omitir los parámetros con la sintaxis + +\family typewriter +\emph on +NombreClase +\emph default +<> +\family default +. + En la declaración de variables los +\family typewriter +\emph on +T +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + se pueden cambiar por +\family typewriter +? extends +\emph on +E +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + ( +\series bold +tipo comodín +\series default +) para indicar que se permite cualquier tipo compatible con +\family typewriter +\emph on +E +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default +, o +\family typewriter +? super +\emph on +S +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + para cualquier tipo con el que +\family typewriter +\emph on +S +\begin_inset Formula $_{i}$ +\end_inset + + +\family default +\emph default + sea compatible. +\end_layout + +\begin_layout Standard +También podemos declarar un tipo genérico sin especificar +\begin_inset Quotes cld +\end_inset + + +\family typewriter +< +\family default +... +\family typewriter +> +\family default + +\begin_inset Quotes crd +\end_inset + + con los parámetros de tipo ( +\series bold +tipo puro +\series default +), en cuyo caso equivale a parametrizarlo a +\family typewriter +Object +\family default + (salvo genericidad restringida), si bien esto no es recomendable y el compilado +r lo marca como un aviso. + La información de los tipos parámetro se pierde en tiempo de ejecución, + pues no se almacenan en el código compilado, por lo que solo podemos comprobar + si el tipo dinámico de una variable es o no del tipo puro (o compatible). + El compilador marca una conversión a un tipo genérico como un +\emph on +warning +\emph default +, pues no se puede comprobar el tipo utilizado en la parametrización, pero + podemos suprimirlo escribiendo la línea +\family typewriter +@SuppressWarnings("unchecked") +\family default + encima de la sentencia que realiza la conversión. +\end_layout + +\begin_layout Standard +Un +\series bold +método genérico +\series default + es el que en su declaración acepta uno o varios parámetros de tipo, independien +tes de los de la clase (si los hay), que pueden aparecer en la signatura + y el cuerpo del método y que se indican poniendo +\family typewriter +< +\family default +... +\family typewriter +> +\family default + (sintaxis como en las clases genéricas) antes del tipo de retorno (o de + +\family typewriter +void +\family default +). + Se llaman como un método normal, y los tipos se infieren a partir de sus + parámetros o la variable a la que se asigna el resultado. +\end_layout + +\begin_layout Section +Ordenación +\end_layout + +\begin_layout Standard +Las clases e interfaces que se definen a continuación están todas en +\family typewriter +java.util +\family default +, salvo si se indica lo contrario. + Se omite cualquier declaración, o parte de declaración, que no es relevante. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.lang.Comparable<T> +\family default + Una clase es +\series bold +comparable +\series default + si implementa esta interfaz, y si dice que tiene un +\series bold +orden natural +\series default +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +compareTo(T) +\family default + Devuelve un entero positivo si el objeto receptor es mayor, negativo si + es menor y 0 si es igual al parámetro. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Comparator<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +compare(T, +\begin_inset space ~ +\end_inset + +T) +\family default + Devuelve un entero positivo si el primer parámetro es mayor, ne +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ga +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ti +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +vo si es menor y 0 si es igual al segundo. +\end_layout + +\end_deeper +\begin_layout Section +Iteradores +\end_layout + +\begin_layout Standard +Permiten recorrer una secuencia de elementos. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Iterator<E> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +hasNext() +\family default +\series default + Indica si quedan elementos en la iteración. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +next() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve (y +\begin_inset Quotes fld +\end_inset + +consume +\begin_inset Quotes frd +\end_inset + +) el siguiente elemento en la iteración. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +default +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +remove() +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, IllegalStateException +\end_layout + +\end_inset + +Elimina de la colección el último elemento devuelto por el ite +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ra +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dor, y sólo puede ser llamado una vez después de cada llamada a +\family typewriter +next() +\family default +. + Si la colección se modifica mientras el iterador está en progreso, su comportam +iento es no especificado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.lang.Iterable<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +Iterator<T> +\begin_inset space ~ +\end_inset + +iterator() +\family default + Devuelve un iterador sobre elementos de tipo +\family typewriter +T +\family default +. +\end_layout + +\end_deeper +\begin_layout Standard +Dado un objeto +\family typewriter +\emph on +c +\family default +\emph default + que implementa la interfaz +\family typewriter +Iterable< +\emph on +T +\emph default +> +\family default +, la sintaxis +\family typewriter +for ( +\emph on +T +\emph default + +\emph on +e +\emph default + : +\emph on +c +\emph default +) +\emph on +stmt +\family default +\emph default + equivale a: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +Iterator _it = +\emph on +c +\emph default +.iterator(); +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Extra indentation is because this'll typically be inside a method inside + a class, not (just) for centering. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +while (_it.hasNext()) { +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\emph on +T e +\emph default + = _it.next(); +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\emph on +stmt +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space \hspace*{} +\length 4em +\end_inset + + +\begin_inset space \hspace*{} +\length 4em +\end_inset + +} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Esto también se puede hacer si +\family typewriter +\emph on +c +\family default +\emph default + es de tipo +\family typewriter +\emph on +T +\emph default +[] +\family default +, en cuyo caso se hace recorrido secuencial. +\end_layout + +\begin_layout Section +Colecciones +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Collection<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Iterable<E> +\family default +\series default + Colección de elementos. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +boolean containsAll(Collection<?>) throws ClassCastException, NullPointerExcepti +on +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean removeAll(Collection<?>) throws UnsupportedOperationException, ClassCast +Exception, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean retainAll(Collection<?>) throws UnsupportedOperationException, ClassCast +Exception, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Object[] toArray() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<T> T[] toArray(T[]) throws ArrayStoreException, NullPointerException +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +int +\begin_inset space ~ +\end_inset + +size() +\family default +\series default + Devuelve el número de elementos en la colección, si cabe en un entero. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + Si contiene más que +\family typewriter +Integer.MAX_VALUE +\family default +, devuelve +\family typewriter +Integer.MAX_VALUE +\family default +. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +isEmpty() +\family default +\series default + Indica si la colección está vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +contains(Object) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si la colección contiene el elemento dado. + Es un error común pasar un elemento de tipo no compatible con +\family typewriter +E +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IllegalStateException +\end_layout + +\end_inset + +Se asegura de que la colección contenga el elemento especificado, indicando + si la colección ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +remove(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina una única instancia del elemento especificado de la colección, si + esta presente, indicando si la colección ha cambiado como resultado de + la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +addAll(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IllegalStateException +\end_layout + +\end_inset + +Añade a esta colección todos los elementos de otra, indicando si ha cambiado + como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +removeAll(Collection<?>) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina de essta colección todos los elementos en común con otra, indicando + si ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +clear() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException +\end_layout + +\end_inset + +Elimina todos los elementos de la colección, que quedará vacía. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +Stream<E> +\begin_inset space ~ +\end_inset + +stream() +\family default + Devuelve un flujo secuencial con esta colección como fuente. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractCollection<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Collection<E> +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract Iterator<E> iterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +public abstract int size() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +toString() +\family default + Devuelve una representación como cadena de caracteres de la colección como + una lista de sus elementos. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +List<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Collection<E> +\family default +\series default + Lista, colección ordenada o secuencia. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +int indexOf(Object) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int lastIndexOf(Object) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ListIterator<E> listIterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ListIterator<E> listIterator(int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +List<E> subList(int, int) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Añade un elemento al final de la lista y devuelve +\family typewriter +true +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +E>) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, UnsupportedOperationException, IllegalArgumentExcepti +on +\end_layout + +\end_inset + +Ordena una lista de acuerdo a un comparador. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +equals(Object) +\family default + Indica si el otro objeto es una lista del mismo tamaño y con los mismos + elementos en las mismas posiciones. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +get(int) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IndexOutOfBoundsException +\end_layout + +\end_inset + +Devuelve el elemento en una determinada posición en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +E +\begin_inset space ~ +\end_inset + +set(int, +\begin_inset space ~ +\end_inset + +E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Sustituye el elemento en la posición dada, en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +, por el elemento dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +add(int, +\begin_inset space ~ +\end_inset + +E) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Inserta el elemento dado en la posición dada, en el rango +\begin_inset Formula $[0,\mathtt{size()}]$ +\end_inset + +, moviendo todos los elementos posteriores una posición a la derecha. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +E +\begin_inset space ~ +\end_inset + +remove(int) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, IndexOutOfBoundsException +\end_layout + +\end_inset + +Elimina el elemento en la posición especificada, en el rango +\begin_inset Formula $[0,\mathtt{size()})$ +\end_inset + +, moviendo todos los elementos posteriores una posición a la izquierda. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public abstract class AbstractList<E> extends AbstractCollection<E> implements + List<E> +\end_layout + +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract E get(int) +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractSequentialList<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +AbstractList<E> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract ListIterator<E> listIterator(int) +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class LinkedList<E> extends AbstractSequentialList<E> implements + List<E>, Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Lista doblemente enlazada, con la que podemos gestionar pilas y colas. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +LinkedList() +\family default +\series default + Construye una lista vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +LinkedList(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye una lista con los elementos de la colección dada, en el orden + en que los devuelve el iterador. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +getFirst() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Devuelve el primer elemento. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +getLast() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Devuelve el último elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +removeFirst() +\series default + +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default + Elimina y devuelve el primer elemento. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +E +\begin_inset space ~ +\end_inset + +removeLast() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +NoSuchElementException +\family default +Elimina y devuelve el último elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +addFirst(E) +\family default +\series default + Inserta un elemento al principio. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +addLast(E) +\family default + Inserta un elemento al final. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +ArrayList<E> +\begin_inset space ~ +\end_inset + +expands +\begin_inset space ~ +\end_inset + +AbstractList<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +List<E>, +\begin_inset space ~ +\end_inset + +Cloneable +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, RandomAccess, Serializable +\end_layout + +\end_inset + +Lista contigua redimensionable. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +ArrayList() +\family default +\series default + Construye una lista vacía. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +ArrayList(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye una lista con los elementos de la colección dada, en el orden + en que los devuelve el iterador. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Set<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Collection<E> +\family default +\series default + Conjunto o colección sin elementos duplicados. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +add(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Añade un elemento si no estaba ya presente, indicando si se ha añadido (si + no estaba ya presente). +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +equals(Object) +\family default +\series default + Indica si el objeto dado es un conjunto de igual longitud que este y todos + los miembros del conjunto dado están contenidos en este (o, equivalentemente, + todos los de este están en el otro). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract class AbstractSet<E> extends AbstractCollection<E> implements + Set<E> +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +HashSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +AbstractSet<E> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Set<E>, +\begin_inset space ~ +\end_inset + +Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Conjunto implementado por tabla de dispersión. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +HashSet() +\family default +\series default + Construye un conjunto vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +HashSet(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto con los elementos de la colección dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +SortedSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Set<E> +\family default + Conjunto totalmente ordenado, por el orden natural de +\family typewriter +E +\family default + o por un +\family typewriter +Comparator<? super E> +\family default +. + El iterador devuelve los elementos en orden ascendente. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Comparator<? super E> comparator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedSet<E> subSet(E, E) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +SortedSet<E> +\begin_inset space ~ +\end_inset + +headSet(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException, IllegalArgumentException +\end_layout + +\end_inset + +Devuelve una vista de los elementos estrictamente menores que el dado, y + que depende del original. + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Y que lanzará un +\family typewriter +IllegalArgumentException +\family default + si se intenta insertar un elemento fuera del rango. +\end_layout + +\end_inset + +Una vista es un objeto que permite acceder a otro con una interfaz algo + distinta. +\end_layout + +\begin_layout Description + +\family typewriter +SortedSet<E> +\begin_inset space ~ +\end_inset + +tailSet(E) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException, IllegalArgumentException +\end_layout + +\end_inset + +Devuelve una vista de los elementos estrictamente mayores que el dado, y + que depende del original. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout +Y que lanzará un +\family typewriter +IllegalArgumentException +\family default + si se intenta insertar un elemento fuera del rango. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +first() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve el menor elemento del conjunto. +\end_layout + +\begin_layout Description + +\family typewriter +E +\begin_inset space ~ +\end_inset + +last() +\family default +\series bold + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws NoSuchElementException +\end_layout + +\end_inset + +Devuelve el mayor elemento del conjunto. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +NavigableSet<E> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +SortedSet<E> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +E ceiling(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Iterator<E> descendingIterator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<E> descendingSet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E floor(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<E> headSet(E, boolean) throws ClassCastException, NullPointerExcept +ion, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E higher(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E lower(E) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E pollFirst() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E pollLast() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E subset(E, boolean, E, boolean) throws ClassCastException, NullPointerException +, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +E tailSet(E, boolean) throws ClassCastException, NullPointerException, IllegalAr +gumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, + Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + + Conjunto implementado por árbol rojo-negro. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +TreeSet() +\family default +\series default + Construye un conjunto vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeSet(Collection<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto con los elementos de la colección dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeSet(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +E>) +\family default +\series default + Construye un conjunto vacío con el comparador dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +Object +\begin_inset space ~ +\end_inset + +clone() +\family default +\series default + Devuelve una copia superficial (no se copian los elementos). +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Collections +\family default + Utilidades estáticas para colecciones. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Comparable<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>> +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(List<T>) +\end_layout + +\end_inset + + +\family default +\series default + Ordena una lista según el orden natural de sus elementos. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +sort(List<T>, +\begin_inset space ~ +\end_inset + +Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\end_layout + +\end_inset + + +\family default +\series default + Ordena una lista según un comparador. +\end_layout + +\begin_layout Description + +\family typewriter +@SafeVarargs +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +addAll(Collection<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>, +\begin_inset space ~ +\end_inset + +T...) +\family default + Añade todos los elementos a la colección dada, indicando si la colección + ha cambiado como resultado de la llamada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +Set<T> +\begin_inset space ~ +\end_inset + +unmodifiableSet(Set<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +T>) +\family default +\series default + Devuelve una vista no modificable del conjunto dado. + Para dar acceso de solo lectura a un conjunto interno a una clase sin necesidad + de hacer una copia. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +List<T> +\begin_inset space ~ +\end_inset + +unmodifiableList(List<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve una vista no modificable de la lista dada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<K,V> +\begin_inset space ~ +\end_inset + +Map<K,V> +\begin_inset space ~ +\end_inset + +unmodifiableMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Devuelve una copia no modificable del mapa dado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Arrays +\family default + Utilidades estáticas para +\emph on +arrays +\emph default +. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +@SafeVarargs +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +<T> +\begin_inset space ~ +\end_inset + +List<T> +\begin_inset space ~ +\end_inset + +asList(T...) +\family default + Devuelve una vista de un +\emph on +array +\emph default + como lista de tamaño fijo. +\end_layout + +\end_deeper +\begin_layout Section +Mapas +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default + Mapa o diccionario clave-valor. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +static interface Map.Entry<K,V> +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +K getKey() throws IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +V getValue() throws IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +V setValue(V) throws UnsupportedOperationException, ClassCastException, + NullPointerException, IllegalArgumentException, IllegalStateException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Set<Map.Entry<K,V>> entrySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +int +\begin_inset space ~ +\end_inset + +size() +\family default + Devuelve el total de asociaciones clave-valor. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +boolean +\begin_inset space ~ +\end_inset + +isEmpty() +\family default +\series default + Indica si el mapa es vacío. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +containsKey(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si el mapa contiene una asociación para la clave dada. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +containsValue(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Indica si el mapa contiene una asociación con el valor dado. +\end_layout + +\begin_layout Description + +\family typewriter +V +\begin_inset space ~ +\end_inset + +get(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws ClassCastException, NullPointerException +\end_layout + +\end_inset + +Obtiene el valor asociado a la clave dada, o +\family typewriter +null +\family default + si el mapa no tiene asociación para la clave. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +V +\begin_inset space ~ +\end_inset + +put(K, +\begin_inset space ~ +\end_inset + +V) +\family default +\series medium + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + + +\series medium +Asocia el valor dado a la clave dada, sustituyendo la asociación anterior + para esta clave de haber alguna. +\end_layout + +\begin_layout Description + +\family typewriter +V +\begin_inset space ~ +\end_inset + +remove(Object) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException +\end_layout + +\end_inset + +Elimina la asociación para la clave dada, si existe. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +putAll(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K, +\begin_inset space ~ +\end_inset + +? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException, ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + +Copia todas las asociaciones del mapa dado al objeto receptor. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +clear() +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws UnsupportedOperationException +\end_layout + +\end_inset + +Elimina todas las asociaciones del mapa, dejándolo vacío. +\end_layout + +\begin_layout Description + +\family typewriter +Set<K> +\begin_inset space ~ +\end_inset + +keySet() +\family default + Devuelve una vista de las claves del mapa, que depende de este. + Si el mapa se modifica mientras se itera la vista, el comportamiento es + no especificado. + Eliminar un elemento del conjunto elimina la asociación correspondiente + del mapa. +\end_layout + +\begin_layout Description + +\family typewriter +Collection<V> +\begin_inset space ~ +\end_inset + +values() +\family default + Devuelve una vista de los valores del mapa, que depende de este. + Si el mapa se modifica mientras se itera la vista, el comportamiento es + no especificado. + Eliminar un elemento de la colección elimina la asociación correspondiente + del mapa. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +default +\begin_inset space ~ +\end_inset + +V +\begin_inset space ~ +\end_inset + +getOrDefault(Object, +\begin_inset space ~ +\end_inset + +V) +\family default +\series default + Devuelve el valor asociado a la clave dada, o el que se le pasa como parámetro + si no hay ninguno asociado. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +V +\begin_inset space ~ +\end_inset + +putIfAbsent(K, +\begin_inset space ~ +\end_inset + +V) +\family default + Si la clave dada no está asociada ningún valor (o está asociada a +\family typewriter +null +\family default +), la asocia al valor dado, devolviendo +\family typewriter +null +\family default + si este es el caso o su valor actual en caso contrario. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +AbstractMap<K,V> +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract Set<Map.Entry<K,V>> entrySet() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, + Cloneable +\end_layout + +\end_inset + + +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Diccionario implementado por tabla de dispersión. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +HashMap() +\family default +\series default + Construye un mapa vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +HashMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Construye un mapa con las asociaciones del mapa dado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +SortedMap<K,V> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Map<K,V> +\family default + El iterador de +\family typewriter +keySet() +\family default + devuelve las claves en orden ascendente. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Comparator<? super K> comparator() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K firstKey() throws NoSuchElementException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> headMap(K) throws ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K lastKey() throws NoSuchelementException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> subMap(K, K) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +SortedMap<K,V> tailMap(K) throws ClassCastException, NullPointerException, + IllegalArgumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +NavigableMap<K,V> +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +SortedMap<K,V> +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> ceilingEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K ceilingKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<K> descendingKeySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> descendingMap() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> firstEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> floorEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K floorKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> headMap(K, boolean) throws ClassCastException, NullPointerExce +ption, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> higherEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K higherKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> lastEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> lowerEntry(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +K lowerKey(K) throws ClassCastException, NullPointerException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableSet<K> navigableKeySet() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> pollFirstEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Map.Entry<K,V> pollLastEntry() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> subMap(K, boolean, K, boolean) throws ClassCastException, + NullPointerException, IllegalArgumentException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +NavigableMap<K,V> tailMap(K, boolean) throws ClassCastException, NullPointerExce +ption, IllegalArgumentException +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, + Cloneable +\end_layout + +\end_inset + + +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable +\end_layout + +\end_inset + +Diccionario implementado por árbol rojo-negro. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +TreeMap() +\family default +\series default + Construye un mapa vacío. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeMap(Map<? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +K,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +V>) +\family default +\series default + Construye un mapa con las asociaciones del mapa dado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +TreeMap(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +K>) +\family default +\series default + Construye un mapa vacío con el comparador dado. +\end_layout + +\end_deeper +\begin_layout Section +Recomendaciones +\end_layout + +\begin_layout Enumerate +En constructores y métodos públicos, especificar el tipo de retorno y tipo + de los pa +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rá +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +me +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +tros mediante la interfaz, y no la clase. +\end_layout + +\begin_layout Enumerate +Evitar el uso de +\emph on +arrays +\emph default +, pues tienen tamaño fijo, no definen las operaciones fundamentales de +\family typewriter +Object +\family default + y es necesario usar +\family typewriter +java.util.Arrays +\family default + para estas. +\end_layout + +\end_body +\end_document diff --git a/poo/n5.lyx b/poo/n5.lyx new file mode 100644 index 0000000..bcf7598 --- /dev/null +++ b/poo/n5.lyx @@ -0,0 +1,926 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Java, la sintaxis +\family typewriter +new +\emph on +Clase +\family default +\emph default +[ +\family typewriter +\emph on +<T1 +\emph default +, +\family default +... +\family typewriter +> +\family default +] +\family typewriter +( +\emph on +Arg1 +\emph default +, +\family default +... +\family typewriter +) { +\family default + ... + +\family typewriter +} +\family default + se puede usar para crear una clase anónima que herede de +\family typewriter +\emph on +Clase +\family default +\emph default +. + Una +\series bold +interfaz funcional +\series default + es una que se declara con la anotación (opcional) +\family typewriter +@FunctionalInterface +\family default + encima de la definición y que contienen un sólo método abstracto. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +Las +\series bold +expresiones lambda +\series default + tienen sintaxis ( +\family typewriter +( +\family default +[ +\family typewriter +\emph on +Tipo +\family default +\emph default +] +\family typewriter + +\emph on +var +\emph default +, +\family default +... +\family typewriter +) +\family default +| +\family typewriter +\emph on +var +\family default +\emph default +) +\family typewriter + -> +\family default +( +\family typewriter +{ +\emph on +cuerpo +\emph default + } +\family default +| +\family typewriter +\emph on +expresión +\family default +\emph default +), donde +\family typewriter +\emph on +cuerpo +\family default +\emph default + es el cuerpo de una función, +\family typewriter +\emph on +expresión +\family default +\emph default + es una única expresión que equivale a +\family typewriter +{ return +\emph on +expresión +\emph default +; } +\family default + y el +\family typewriter +\emph on +Tipo +\family default +\emph default + de los argumentos normalmente se puede inferir. + Internamente son clases compatibles con las interfaces funcionales que + se requieran siempre que su signatura sea compatible con la de su único + método abstracto. + Si la expresión lambda se refiere a variables de su entorno léxico (variables + locales o elementos de la clase), las instancias de su clase asociada se + denominan +\series bold +clausuras +\series default + ( +\emph on +closures +\emph default +). +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Salvo que se indique lo contrario, las siguientes interfaces se definen + en +\family typewriter +java.util.function +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Predicate<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +test(T) +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Function<T,R> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +R +\begin_inset space ~ +\end_inset + +apply(T) +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +@FunctionalInterface +\series default + +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Supplier<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +T +\begin_inset space ~ +\end_inset + +get() +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +@FunctionalInterface +\begin_inset space ~ +\end_inset + +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Consumer<T> +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +accept(T) +\end_layout + +\end_deeper +\begin_layout Standard +El paquete +\family typewriter +java.util.stream +\family default + contiene clases para soportar operaciones funcionales en flujos de elementos. + Las operaciones con flujos se dividen en operaciones +\series bold +intermedias +\series default + y +\series bold +terminales +\series default +. + Las operaciones intermedias devuelven un nuevo flujo. + Las operaciones terminales pueden atravesar el flujo para producir un resultado + o un efecto colateral. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\series default + +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +java.util.stream.Stream<T> +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends BaseStream<T,Stream<T>> +\end_layout + +\end_inset + +Secuencia de elementos que soporta o +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pe +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ra +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +cio +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +nes secuenciales y paralelas en agregado. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +<R,A> R collect(Collector<? super T,A,R>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<R> R collect(Supplier<R>, BiConsumer<R, ? super T>, BiConsumer<R,R>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> distinct() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> findAny() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> findFirst() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +DoubleStream flatMapToDouble(Function<? super T,? extends DoubleStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +IntStream flatMapToInt(Function<? super T,? extends IntStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +LongStream flatMapToLong(Function<? super T,? extends LongStream>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +void forEachOrdered(Consumer<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> limit(long) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +DoubleStream mapToDouble(ToDoubleFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +IntStream mapToInt(ToIntFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +LongStream mapToLong(ToLongFunction<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> max(Comparator<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> min(Comparator<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean noneMatch(Predicate<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> peek(Consumer<? super T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Optional<T> reduce(BinaryOperator<T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +T reduce(T, BinaryOperator<T>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<U> U reduce(U, BiFunction<U,? super T,U>, BinaryOperator<U>) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Stream<T> skip(long) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Object[] toArray() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +<A> A[] toArray(IntFunction<A[]>) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +Stream<T> +\series default + +\begin_inset space ~ +\end_inset + +filter(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve un flujo con los elementos de este para los que se cumple el predicado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +<R> +\series default + +\begin_inset space ~ +\end_inset + +Stream<R> +\begin_inset space ~ +\end_inset + +map(Function<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T,? +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +R>) +\family default + Devuelve un flujo con el resultado de aplicar la función dada a los elementos + de este. +\end_layout + +\begin_layout Description + +\family typewriter +Stream<T> +\begin_inset space ~ +\end_inset + +sorted() +\family default + Devuelve un flujo con los elementos de este, ordenados según su orden natural. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +Stream<T> +\series default + +\begin_inset space ~ +\end_inset + +sorted(Comparator<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Devuelve un flujo con los elementos de este, ordenados según el comparador + dado. +\end_layout + +\begin_layout Description + +\family typewriter +void +\begin_inset space ~ +\end_inset + +forEach(Consumer<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Realiza una acción en cada elemento. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +long +\series default + +\begin_inset space ~ +\end_inset + +count() +\family default + Devuelve el número de elementos en el flujo. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +anyMatch(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Indica si algún elemento de este flujo cum +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ple el predicado. +\end_layout + +\begin_layout Description + +\family typewriter +boolean +\begin_inset space ~ +\end_inset + +allMatch(Predicate<? +\begin_inset space ~ +\end_inset + +super +\begin_inset space ~ +\end_inset + +T>) +\family default + Indica si todos los elementos de este flujo cumplen el predicado. +\end_layout + +\end_deeper +\begin_layout Standard +Donde sea aceptable una expresión lambda también es aceptable una referencia + a un método: +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +:: +\emph on +métodoDeClase +\family default +\emph default + equivale a +\family typewriter +e -> +\emph on +Clase +\emph default +. +\emph on +métodoDeClase +\emph default +(e) +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +:: +\emph on +métodoDeInstancia +\family default +\emph default + equivale a +\family typewriter +( +\emph on +Clase +\emph default + e) -> e. +\emph on +métodoDeInstancia +\emph default +() +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +objeto +\emph default +:: +\emph on +método +\family default +\emph default + equivale a +\family typewriter +e -> +\emph on +objeto +\emph default +. +\emph on +método +\emph default +(e) +\family default +. +\end_layout + +\begin_layout Itemize + +\family typewriter +\emph on +Clase +\emph default +::new +\family default + equivale a +\family typewriter +e -> new +\emph on +Clase +\emph default +(e) +\family default +. +\end_layout + +\end_body +\end_document diff --git a/poo/n6.lyx b/poo/n6.lyx new file mode 100644 index 0000000..7a65f35 --- /dev/null +++ b/poo/n6.lyx @@ -0,0 +1,771 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +La +\series bold +corrección +\series default + es la capacidad del software de cumplir con su especificación, de modo + que el incumplimiento de los requisitos de uso implica la finalización + de la ejecución. + La +\series bold +robustez +\series default + es la capacidad del software de reaccionar adecuadamente a situaciones + excepcionales (fallos de disco, red, etc.). + En Java, para esto se usan excepciones. +\end_layout + +\begin_layout Standard +Una excepción es un objeto de clase compatible con +\family typewriter +java.lang.Exception +\family default +, que podemos lanzar con la cláusula +\family typewriter +throw +\emph on +objeto +\emph default +; +\family default +. + Para capturar una excepción usamos la construcción +\family typewriter +try +\family default +– +\family typewriter +catch +\family default +, con la sintaxis: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +try { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\end_layout + +\begin_layout Plain Layout + +\family typewriter +catch ( +\emph on +Tipo var +\emph default +) { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\family default +... +\end_layout + +\begin_layout Plain Layout +[ +\family typewriter +finally { +\emph on +stmt +\family default +\emph default +... + +\family typewriter + } +\family default +] +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Si se lanza una excepción en el bloque +\family typewriter +try +\family default +, se comprueba el +\family typewriter +\emph on +Tipo +\family default +\emph default + en cada bloque +\family typewriter +catch +\family default + (que debería ser compatible con +\family typewriter +java.lang.Exception +\family default +) en orden y, si se encuentra uno compatible con el tipo dinámico de la + excepción, se ejecuta el interior de dicho bloque con la variable +\family typewriter +\emph on +var +\family default +\emph default + (de tipo estático +\family typewriter +\emph on +Tipo +\family default +\emph default +) asociada al objeto excepción, y decimos que la excepción ha sido capturada. + El bloque +\family typewriter +finally +\family default +, si existe, se ejecuta tanto si la excepción es capturada como si no. + Finalmente, si la excepción no es capturada, el resultado es como si la + propia construcción lanzara la excepción. +\end_layout + +\begin_layout Standard +Las siguientes clases se definen en +\family typewriter +java.lang +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Throwable +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Superclase de todos los errores y excepciones en el lenguaje. + Sólo instancias de esta clase (o compatibles) son lanzadas por la máquina + virtual de Java o la cláusula +\family typewriter +throw +\family default +. + Solo esta clase o compatibles pueden ser el tipo de argumento de una cláusula + +\family typewriter +catch +\family default +. + +\family typewriter +Throwable +\family default + y cualquier clase compatible con +\family typewriter +Throwable +\family default + que no lo es también con +\family typewriter +RuntimeException +\family default + o +\family typewriter +Error +\family default + se consideran excepciones comprobadas. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +getMessage() +\family default + Deuvuelve la cadena de mensaje de este lanzable. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +printStackTrace() +\family default + Imprime este lanzable y su +\emph on +backtrace +\emph default + (estado de la pila de llamadas en el momento de crear la excepción) al + flujo de error estándar. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Exception +\family default + Forma de +\family typewriter +Throwable +\family default + que indica condiciones que una aplicación razonable querría capturar. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +Exception(String) +\family default + Construye una excepción con el mensaje especificado. +\end_layout + +\end_deeper +\begin_layout Standard +Si se lanza una excepción fuera de un bloque +\family typewriter +try +\family default +, se termina la ejecución del método y el resultado es como si la llamada + a dicho método lanzara la excepción, y decimos que el método produce la + excepción. + Si un método puede producir una excepción comprobada, debemos escribir + +\family typewriter +throws +\emph on +Tipo1 +\emph default +, +\family default +... + detrás de la lista de parámetros ( +\family typewriter +( +\family default +... +\family typewriter +) +\family default +) y antes de la implementación ( +\family typewriter +{ +\family default +... +\family typewriter +} +\family default +) o el +\family typewriter +; +\family default + para métodos abstractos, siendo +\family typewriter +\emph on +Tipo1 +\emph default +, +\family default +... + una lista de excepciones tales que cualquier excepción comprobada que pueda + producir el método sea de tipo compatible con uno de la lista. + Entonces se considera que el método puede producir un error de cualquier + tipo de la lista. + Si el método +\family typewriter +\series bold +main +\family default +\series default + de la aplicación produce una excepción, el programa termina con error. +\end_layout + +\begin_layout Standard +Si bien las excepciones permiten aportar robustez, también permiten controlar + el uso correcto de operaciones, notificando de errores de programación. + Para ello se usan las +\series bold +excepciones en tiempo de ejecución +\series default +, compatibles con +\family typewriter +java.lang.RuntimeException +\family default +, y que en general no se tratan. + La máquina virtual también puede lanzar excepciones de este tipo. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +RuntimeException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Exception +\family default +\series default + Superclase de las excepciones que pue +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +den ser lanzadas durante la operación normal de la máquina virtual de Java. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +NullPointerException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada cuando una a +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pli +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ca +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +ción intenta usar +\family typewriter +null +\family default + cuando se requiere un objeto. + Las aplicaciones deberían lanzar instancias de esta clase para otros usos + no permitidos de +\family typewriter +null +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IllegalArgumentException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada para in +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +di +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +car que a un método se le ha pasado un argumento inapropiado. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IllegalStateException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Señala que el entorno o la aplicación no está en un estado apropiado para + la operación solicitada. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +NoSuchElementException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada por algunos métodos accesores para indicar que el elemento solicitado + no existe. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +ClassCastException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\family default + Lanzada para indicar que el código ha intentado hacer +\emph on +casting +\emph default + a un objeto hacia una subclase a la que no pertenece. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IndexOutOfBoundsException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +RuntimeException +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +\series bold +public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException +\end_layout + +\end_inset + + +\family default +\series default + Lanzada para indicar que se ha accedido a un +\emph on +array +\emph default + con un índice no permitido. +\end_layout + +\begin_layout Standard +El +\series bold +diseño por contrato +\series default + es un modo de proceder ante los errores de programación basado en que las + operaciones tienen requisitos de uso o +\series bold +precondiciones +\series default + con los que se considera un error no cumplir, y si no se cumplen el programa + no debe continuar. +\end_layout + +\end_body +\end_document diff --git a/poo/na.lyx b/poo/na.lyx new file mode 100644 index 0000000..9b4af57 --- /dev/null +++ b/poo/na.lyx @@ -0,0 +1,1500 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section* + +\family typewriter +java.io +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +Closeable +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends AutoCloseable +\end_layout + +\end_inset + + Fuente o destino de datos que puede ser cerrado. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +void +\begin_inset space ~ +\end_inset + +close() +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IOException +\end_layout + +\end_inset + +Cierra este flujo y libera cualquier recurso asociado con él. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +FileNotFoundException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Indica que ha fallado un intento de abrir el fichero con nombre especificado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +IOException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +Exception +\family default +\series default + Señaliza una excepción de E/S. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +IOException(String) +\family default + Construye una +\family typewriter +IOException +\family default + con el mensaje especificado. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + + +\series default +implements +\begin_inset space ~ +\end_inset + +Closeable +\family default + Representa un flujo de entrada de bytes. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +abstract int read() +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +PrintStream +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends FilterOutputStream +\end_layout + +\end_inset + + +\family default + Añade a otro flujo de salida la habilidad de imprimir representaciones + de datos convenientemente. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +println(String) +\family default + Imprime una cadena y termina la línea. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +abstract +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +PrintWriter +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends Writer +\end_layout + +\end_inset + +Imprime representaciones de objetos con formato a un flujo de salida de + texto. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public abstract class Writer() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void close() throws IOException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void flush() throws IOException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +public abstract void write(char[],int,int) +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +PrintWriter(String) +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +FileNotFoundException +\family default +\series default + Construye un nuevo +\family typewriter +PrintWriter +\family default + con el nombre de fichero indicado. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +checkError() +\family default +\series default + Comprueba su estado de error. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +void +\begin_inset space ~ +\end_inset + +println(String) +\family default + Imprime una cadena y termina la línea. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.lang +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Integer +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +toHexString(int) +\family default + Devuelve una representación textual del argumento entero como entero sin + signo en base 16, una cadena de dígitos ASCII en hexadecimal sin +\family typewriter +0 +\family default +s extra a la izquierda. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Math +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +PI +\family default +\series default + El valor de doble precisión más cerca que cualquier otro a +\begin_inset Formula $\pi$ +\end_inset + +. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +sqrt(double) +\family default + Devuelve la raíz cuadrada positiva de un valor correctamente redondeada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +double +\begin_inset space ~ +\end_inset + +pow(double, +\begin_inset space ~ +\end_inset + +double) +\family default +\series default + Devuelve el primer argumento elevado a la potencia del segundo. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +CharSequence +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Serializable, Comparable<String> +\end_layout + +\end_inset + +Representa cadenas inmutables de caracteres. + Todos los literales de cadena en programas Java, como +\family typewriter +" +\emph on +abc +\emph default +" +\family default +, son instancias de esta clase. + El lenguaje proporciona soporte especial para el operador de concatenación + ( +\family typewriter ++ +\family default +), y para conversión de otros objetos a cadenas al concatenar. + Las conversiones se implementan mediante el método +\family typewriter +toString +\family default +. +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public interface CharSequence +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +char charAt(int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +int length() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +CharSequence subSequence(int, int) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +String toString() +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +contains(CharSequence) +\family default + Indica si esta cadena contiene la secuencia de caracteres especificada. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +int +\begin_inset space ~ +\end_inset + +length() +\family default + Devuelve el número de unidades de código Unicode en la cadena. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +System +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + +in +\family default +\series default + El flujo de entrada estándar. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +PrintStream +\begin_inset space ~ +\end_inset + +out +\family default + El flujo de salida estándar. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.net +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +MalformedURLException +\begin_inset space ~ +\end_inset + +extends +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Indica una URL mal formada. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +URL +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Representa una URL. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +URL(String) +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +MalformedURLException +\family default + Construye una URL a partir de su representación como cadena. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +InputStream +\begin_inset space ~ +\end_inset + +openStream() +\begin_inset space ~ +\end_inset + +throws +\begin_inset space ~ +\end_inset + +IOException +\family default +\series default + Abre una conexión a la URL y devuelve un +\family typewriter +InputStream +\family default + para leer de esta. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.time +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +LocalTime +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +ChronoLocalDate +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Temporal, TemporalAdjuster, Serializable +\end_layout + +\end_inset + +Fecha sin zona horaria. + Inmutable. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +LocalDate +\begin_inset space ~ +\end_inset + +now() +\family default + Obtiene la fecha actual del reloj del sistema en la zona horaria por defecto. +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +LocalDate +\begin_inset space ~ +\end_inset + +of(int, +\begin_inset space ~ +\end_inset + +int, +\begin_inset space ~ +\end_inset + +int) +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws DateTimeException +\end_layout + +\end_inset + +Obtiene una instancia de +\family typewriter +LocalDate +\family default + desde un año, mes y día, respectivamente. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.time.chrono +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +interface +\begin_inset space ~ +\end_inset + +ChronoLocalDate +\family default +\series medium + +\begin_inset Note Greyedout +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDate> +\end_layout + +\end_inset + + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +public interface Temporal extends TemporalAccessor +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +boolean isSupported(TemporalUnit) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +Temporal plus(long,TemporalUnit) throws DateTimeException, UnsupportedTemporalEx +ception, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +long until(Temporal, TemporalUnit) throws DateTimeException, UnsupportedTemporal +TypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + + +\begin_inset space ~ +\end_inset + +Temporal with(TemporalField, long) throws DateTimeException, UnsupportedTemporal +TypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default boolean isSupported(TemporalUnit) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default Temporal plus(long,TemporalUnit) throws DateTimeException, ArithmeticExc +eption +\end_layout + +\begin_layout Plain Layout + +\family typewriter +default Temporal with(TemporalField, long) throws DateTimeException, Unsupported +TemporalTypeException, ArithmeticException +\end_layout + +\begin_layout Plain Layout + +\family typewriter +boolean equals(Object) +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Chronology getChronology() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int hashCode() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +int lengthOfMonth() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +String toString() +\end_layout + +\begin_layout Plain Layout + +\family typewriter +ChronoPeriod until(ChronoLocalDate) throws DateTimeException, ArithmeticExceptio +n +\end_layout + +\end_inset + + +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isAfter(ChronoLocalDate) +\family default + Comprueba si esta fecha es posterior a la especificada. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isBefore(ChronoLocalDate) +\family default + Comprueba si es anterior. +\end_layout + +\begin_layout Description + +\family typewriter +default +\begin_inset space ~ +\end_inset + +boolean +\begin_inset space ~ +\end_inset + +isEqual(ChronoLocalDate) +\family default + Comprueba si es igual. +\end_layout + +\end_deeper +\begin_layout Section* + +\family typewriter +java.util +\end_layout + +\begin_layout Description + +\family typewriter +\series bold +public +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Random +\family default +\series default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable +\end_layout + +\end_inset + +Genera números pseudoaleatorios. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +\series bold +public +\series default + +\begin_inset space ~ +\end_inset + +Random() +\family default + Construye un generador de números aleatorios. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +int +\begin_inset space ~ +\end_inset + +nextInt(int) +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +throws IllegalArgumentException +\end_layout + +\end_inset + +Devuelve un valor entero pseudoaleatorio distribuido uniformemente entre + 0 (inclusive) y el valor especificado (exclusive), extraído de la secuencia + del generador. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +Scanner +\begin_inset space ~ +\end_inset + +implements +\begin_inset space ~ +\end_inset + +Closeable +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +, Iterator<String> +\end_layout + +\end_inset + +Escáner de texto simple. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +Scanner(InputStream) +\family default + Construye un escáner que produce valores del flujo de entrada especificado. +\end_layout + +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +String +\begin_inset space ~ +\end_inset + +nextLine() +\family default + Devuelve el resto de la línea actual, excluyendo cualquier separador de + línea al final. + La posición se establece al principio de la siguiente línea. +\end_layout + +\end_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +final +\begin_inset space ~ +\end_inset + +class +\begin_inset space ~ +\end_inset + +UUID +\family default + +\begin_inset Note Comment +status open + +\begin_layout Plain Layout + +\family typewriter +implements Serializable, Comparable<UUID> +\end_layout + +\end_inset + +Representa unn identificador único universal. +\end_layout + +\begin_deeper +\begin_layout Description + +\family typewriter +public +\begin_inset space ~ +\end_inset + +static +\begin_inset space ~ +\end_inset + +UUID +\begin_inset space ~ +\end_inset + +randomUUID() +\family default + Obtiene un UUID usando un generador de números pseudoaleatorios. +\end_layout + +\end_deeper +\end_body +\end_document diff --git a/poo/nb.lyx b/poo/nb.lyx new file mode 100644 index 0000000..19478fe --- /dev/null +++ b/poo/nb.lyx @@ -0,0 +1,743 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +En Eclipse, todo el código fuente o compilado se encuentra en un directorio + llamado +\series bold +espacio de trabajo +\series default +. + Para importar un proyecto, movemos su directorio al espacio de trabajo + y, desde Eclipse, usamos +\begin_inset Quotes fld +\end_inset + +Archivo +\begin_inset Formula $\rightarrow$ +\end_inset + +Importar +\begin_inset Formula $\rightarrow$ +\end_inset + +General +\begin_inset Formula $\rightarrow$ +\end_inset + +Proyectos existentes en el espacio de trabajo +\begin_inset Quotes frd +\end_inset + +, donde nos pide el directorio raíz introducimos la ruta del espacio de + trabajo, pulsamos +\begin_inset Quotes fld +\end_inset + +Examinar +\begin_inset Quotes frd +\end_inset + + y, en el panel inferior +\begin_inset Quotes fld +\end_inset + +Proyectos +\begin_inset Quotes frd +\end_inset + +, seleccionamos el que deseamos importar, y pulsamos +\begin_inset Quotes fld +\end_inset + +Finalizar +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +El código fuente Java se guarda en ficheros +\family typewriter +\emph on +Clase +\emph default +.java +\family default + que, al compilarlos, se convierten en ficheros compilados o de +\emph on +bytecode +\emph default + +\family typewriter +\emph on +Clase +\emph default +.class +\family default +, uno por clase. + Para ejecutar un programa usamos el comando +\family typewriter +java [ +\emph on +OPCIÓN +\emph default +]... + +\emph on +CLASE +\family default +\emph default +, donde +\family typewriter +\emph on +CLASE +\family default +\emph default + es la ruta completa de la clase principal. + Las clases se buscan según un +\emph on +classpath +\emph default +, una lista de directorios (o ficheros com +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +pri +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +mi +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +dos) separados por +\family typewriter +; +\family default +, de forma que en uno de ellos debe haber un fichero de +\emph on +bytecode +\emph default + cuya ruta relativa al directorio debe ser el resultado de cambiar los separador +es +\family typewriter +. + +\family default + en la ruta completa de la clase por +\family typewriter +/ +\family default + y añadir al final la extensión +\family typewriter +.class +\family default +. + El +\emph on +classpath +\emph default + se indica al comando con la opción +\family typewriter +-cp +\emph on +CLASSPATH +\family default +\emph default +; si no aparece, se toma de la variable de entorno +\family typewriter +CLASSPATH +\family default +, y si esta tampoco existe, se asume que es +\begin_inset Quotes fld +\end_inset + + +\family typewriter +. +\family default + +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +Un fichero JAR es un comprimido con extensión (normalmente) +\family typewriter +.jar +\family default + que contiene los ficheros compilados y un +\series bold +manifiesto +\series default + que describe el contenido. + El manifiesto se encuentra en +\family typewriter +META-INF/MANIFEST.MF +\family default + dentro del comprimido, y suele tener el siguiente aspecto: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +Class-Path: +\emph on +ELEMENTO +\emph default + +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +Main-Class: +\emph on +RUTA_CLASE +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Donde la entrada +\family typewriter +Class-Path +\family default + indica el +\emph on +classpath +\emph default + como lista separada por espacios en la que +\family typewriter +. + +\family default + indica el propio fichero y las rutas relativas que no comienzan con +\family typewriter +. + +\family default + lo son respecto al directorio donde se encuentra el comprimido. + +\family typewriter +Main-Class +\family default + indica el nombre completo de la clase principal. + Esto permite ejecutar un programa en Java con el comando +\family typewriter +java -jar +\emph on +fichero.jar +\family default +\emph default +, o abriendo el fichero desde un explorador de ficheros. +\end_layout + +\begin_layout Standard +Si tenemos una biblioteca en un fichero JAR que queremos usar en nuestro + proyecto, creamos dentro una carpeta +\family typewriter +lib +\family default +, copiamos el comprimido dentro junto con su documentación JavaDoc (descomprimid +a) y, dentro de Eclipse, pulsamos F5 para actualizar el contenido de +\family typewriter +lib +\family default +. + Pulsamos el fichero de la biblioteca con el botón derecho del ratón, usamos + +\begin_inset Quotes fld +\end_inset + +Vía de acceso de construcción +\begin_inset Formula $\rightarrow$ +\end_inset + +Añadir a la vía de construcción +\begin_inset Quotes frd +\end_inset + + y aparece una sección +\begin_inset Quotes fld +\end_inset + +Li +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +bre +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +rí +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +- +\end_layout + +\end_inset + +as referidas +\begin_inset Quotes frd +\end_inset + + con la biblioteca añadida. + Pulsamos aquí con el botón derecho del ratón, en +\begin_inset Quotes fld +\end_inset + +Propiedades +\begin_inset Formula $\rightarrow$ +\end_inset + +Ubicación del JavaDoc +\begin_inset Formula $\rightarrow$ +\end_inset + +Vía de acceso de ubicación JavaDoc +\begin_inset Formula $\rightarrow$ +\end_inset + +Examinar +\begin_inset Quotes frd +\end_inset + + seleccionamos el directorio con la documentación, y pulsamos +\begin_inset Quotes fld +\end_inset + +Validar +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Standard +Para generar un archivo JAR de nuestro proyecto, usamos +\begin_inset Quotes fld +\end_inset + +Archivo +\begin_inset Formula $\rightarrow$ +\end_inset + +Exportar +\begin_inset Formula $\rightarrow$ +\end_inset + +Java +\begin_inset Quotes frd +\end_inset + + y podemos elegir +\begin_inset Quotes fld +\end_inset + +Archivo JAR +\begin_inset Quotes frd +\end_inset + + para empaquetar una biblioteca (sin clase principal), +\begin_inset Quotes fld +\end_inset + +Archivo JAR ejecutable +\begin_inset Quotes frd +\end_inset + + para un ejecutable o +\begin_inset Quotes fld +\end_inset + +JavaDoc +\begin_inset Quotes frd +\end_inset + + para extraer la documentación JavaDoc. +\end_layout + +\begin_layout Standard +Si elegimos la segunda opción, tenemos las opciones: +\end_layout + +\begin_layout Itemize + +\emph on +Launch configuration +\emph default +: Para elegir la clase principal de entre las posibles. +\end_layout + +\begin_layout Itemize + +\emph on +Export destination +\emph default +: Dónde queremos que se guarde el fichero JAR. +\end_layout + +\begin_layout Itemize + +\emph on +Library handling +\emph default +: +\begin_inset Quotes fld +\end_inset + + +\emph on +Extract required libraries into generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + descomprime los ficheros JAR de las bibliotecas e introduce las clases + en el JAR de salida. + +\begin_inset Quotes fld +\end_inset + + +\emph on +Package required libraries into generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + guarda los propios ficheros JAR de las bibliotecas dentro del nuestro. + +\begin_inset Quotes fld +\end_inset + + +\emph on +Copy required libraries into a sub-folder next to the generated JAR +\emph default + +\begin_inset Quotes frd +\end_inset + + crea un directorio junto al fichero JAR donde mete las bibliotecas, que + añade como dependencias en el +\family typewriter +Class-Path +\family default + del manifiesto. +\end_layout + +\begin_layout Standard +JavaDoc es una forma de generar documentación de código Java a partir de + comentarios. + Para ello, encima de cada clase, interfaz, etc., método o incluso paquete, + creamos un comentario como el siguiente: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +use_makebox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout + +\family typewriter +/** +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\emph on +Descripción. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @param +\emph on +nombre +\emph default + +\emph on +Descripción del parámetro +\begin_inset Quotes fld +\end_inset + +nombre +\begin_inset Quotes frd +\end_inset + +. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @return +\emph on +Valor devuelto. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @throws +\emph on +Tipo Significado si el método lanza una excepción del Tipo dado. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* +\family default +... +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +* @seeAlso +\emph on +Clase,método,etc. +\end_layout + +\begin_layout Plain Layout + +\family typewriter +\begin_inset space ~ +\end_inset + +*/ +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Cualquier parte puede omitirse (de hecho muchas son específicas para métodos), + y puede usarse código HTML o marcadores propios de JavaDoc (por ejemplo, + para enlazar a otra clase o método). + Si un método redefine a otro sin cambiar la semántica, podemos usar +\family typewriter +/** {@inheritDoc} */ +\family default + para heredar la documentación. +\end_layout + +\end_body +\end_document |
