diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-24 11:22:00 +0100 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2020-02-24 11:22:00 +0100 |
| commit | 79e1a51eb55d0df43323c0fe77a7d55b2c2bd17d (patch) | |
| tree | 89bd93a329f9deb72efce8fed205b69918c3d9b9 /poo/n6.lyx | |
| parent | 1f7f9bcc7660fba0827a62c3068d5c7082f025d7 (diff) | |
POO
Diffstat (limited to 'poo/n6.lyx')
| -rw-r--r-- | poo/n6.lyx | 771 |
1 files changed, 771 insertions, 0 deletions
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 |
