You are on page 1of 13

ACTIVIDAD N:

6
FECHA
ENVIO:
08/01/2014
FECHA
ENTREGA:
10/01/2014
TEMA:

PROGRAMACIN ORIENTADA A OBJETOS
UNIDAD N3 :
METODOS ESTATICOS Y MANEJO DE ERRORES
OBJETIVO:
Investigar los assertions

PROBLEMA:
DESCONOCIMENTO SOBRES LOS TEMAS INVESTIGADOS

INDICADOR DE EVALUACION:

CALIFICACIN

Tomar del syllabus


CRITERIOS DE EVALUACIN: A criterio del docente de acuerdo al indicador de evaluacin
del Syllabus (algunos ejemplos:)
Siempre
(100%)
A
veces
(75%)
Nunca
(10%)
CAPACIDAD DE COMUNICACIN.
EN EXPOSICIONES
Responde claramente a las preguntas que se le realizan.
Demuestra seguridad en el tratamiento de los temas.
Toma en cuenta los elementos vocales y verbales (mantiene: tono, nfasis, claridad durante la
presentacin). Mantiene el mismo tono de voz durante la exposicin. Habla con claridad y en forma
coherente durante la exposicin. Resalta aspectos importantes del tema
Toman en cuenta los elementos visuales, (postura, viste de acuerdo a la ocasin, accesorios,
gestos, ademanes). Sostiene una postura adecuada durante la exposicin. Utiliza un vestuario adecuado
para hacer la presentacin
EN IMPRESOS
Entrega documentacin impresa y digital. (Siguiendo las normas y convenciones para la escritura
y sin falta de ortografa). La redaccin del documento debe ser clara. Debe incluir todas las fuentes de
donde tom la informacin.
Cumple con el formato, normas y estructura para la elaboracin del documento.

APLICACIN DE VALORES.
Puntualidad. Entrega de trabajo a tiempo
Responsabilidad tica. El trabajo es indito y respeta la propiedad intelectual
Responsabilidad profesional. Cumple con las normas tcnicas.

USO DE RECURSOS:
Recursos bibliogrficos fidedignos y con validez cientfica
Recursos tecnolgicos adecuados

CAPACIDAD DE REFLEXIN.
Incluye ejemplos claros que permiten un mejor entendimiento del tema.

CONOCIMIENTO TCNICO.
Destreza con las herramientas informticas.


TIPO DE ACTIVIDAD
LUGAR ALCANCE FORMA
Intraclase
Extraclase
Individual
Grupal
Taller
Sntesis, esquemas
Caso de estudio
Investigativa
Vinculacin con la colectividad
Prctica en laboratorio
Prctica en clase
Resolucin de problemas,
ejercicios
Ensayo, artculo
Informe de exposicin


ROLES Y RESPONSABILIDADES DE LOS PARTICIPANTES EN LA TAREA:
NOMBRE ESTUDIANTE ROL DESCRIPCIN
Rosa Jimnez Pulla
Scarlett Nieto Asencio
Andrea Mosquera Franco
Herman Gallegos Macas
Cristhian Romero Espinoza
Jorge Castro Vera
Luis Astudillo Pizarro

TCNICAS EMPLEADAS

















INTRODUCCIN

Antes de nada, se conoce como assertions a una instruccin que contiene una expresin
booleana de la que el programador sabe que en un momento dado de la ejecucin del
programa se debe evaluar a verdadero. Todos aquellos que hayan visto alguna vez la
verificacin formal de algoritmos saben de qu estamos hablando. Ejemplos de assertions
son las precondiciones, post condiciones y los invariantes. Volviendo a la definicin,
observamos que verificando que esta expresin booleana, el aserto, es cierta, el sistema
comprueba que el programa se ejecuta dentro de los lmites que el programador le marca
y adems reduce la posibilidad de errores.
Los assertions no son nada nuevo en programacin, de hecho los asertos ya estaban
previstos en la especificacin inicial de oak (el lenguaje precursor de Java) pero fueron
desestimados porque no haba tiempo suficiente para hacer una implementacin
satisfactoria.









METODOLOGA / DISEO DE INVESTIGACIN
En el transcurso y realizacin de la presente investigacin se utiliz como herramienta de
bsqueda google y con la exhaustiva investigacin se logr dar con resultados la
obtencin de datos fiables acerca de los assertions















MARCO TERICO

Cuando el programador va a ejecutar un trozo de cdigo que pueda provocar una excepcin (por
ejemplo, una lectura en un fichero), debe incluir este fragmento de cdigo dentro de un bloque try
.Pero lo importante es cmo controlar qu hacer con la posible excepcin que se cree. Para ello se
utilizan las clausulas catch, en las que se especifica que accin realizar
Una excepcin es una condicin anormal que surge en una secuencia de cdigo durante la
ejecucin de un programa. Es decir, es un "error de ejecucin".

En los lenguajes de programacin que no tienen gestin de excepciones, hay que controlar los
posibles errores de ejecucin del programa manualmente, usando cdigos de error. Sin embargo,
Java posee gestin de excepciones, y lleva el problema de la gestin del error en tiempo de
ejecucin al mundo orientado a objetos.
En Java, cuando surge una condicin excepcional, se crea un objeto que representa la excepcin y
se enva al mtodo que provoc esta excepcin. Este mtodo puede elegir gestionar la excepcin
l mismo o pasarla. Pero en algn punto, la excepcin es capturada y procesada.
Las excepciones pueden ser generadas por el intrprete de Java o pueden ser generadas por el
propio cdigo. Las excepciones generadas por Java estn relacionadas con errores que violan las
reglas del lenguaje Java o las restricciones del entorno de ejecucin de Java. Las excepciones
generadas manualmente se suelen utilizar para informar de algn error al mtodo llamante.
La gestin de excepciones en Java se realiza mediante cinco palabras clave: try, catch, throw,
throws y finally.
El funcionamiento bsico es el siguiente: las sentencias del programa que se quieren controlar se
incluyen en un bloque try; si se produce una excepcin dentro de un bloque try, entonces esta
excepcin es lanzada. El programa puede capturar esta excepcin, utilizando la sentencia catch, y
tratarla como desee. Si se quiere generar una excepcin manualmente, se utiliza la palabra clave
throw. Cualquier excepcin que se lanza fuera de un mtodo debe ser especificada como tal
utilizando la sentencia throws. Cualquier cdigo que se quiera ejecutar obligatoriamente antes de
que termine un mtodo, debe introducirse en un bloque finally.

sta es la forma general de un bloque de gestin de excepciones en Java:
try {
// bloque de cdigo
}
catch (TipoExcepcin1 exOb) {
// gestor de excepciones del tipo TipoExcepcin1
}
catch (TipoExcepcin exOb) {
// gestor de excepciones del tipo TipoExcepcin2
}
//...
finally {
// bloque de cdigo que se ejecutar antes de que termine el bloque try,
// aunque se produzca una excepcin
}

Cuando el intrprete de Java lanza una excepcin, sta debe ser capturada porque de lo contrario
el programa terminar su ejecucin bruscamente. Hay varios tipos de excepciones que son
lanzadas automticamente, como por ejemplo, las excepciones de divisin por cero, de ndice de
matriz fuera del rango de la misma, conversin de tipo invlida, etc.









SOLUCION O RESULTADOS
Uso
Para declarar un aserto en una clase Java, se usa la palabra clave assert que tiene la siguiente
sintxis:
assert Expresion1;
assert Expresin1:Expresin2;
En cualquiera de los dos casos Expresin1 tiene que ser una expresin booleana o se producir un
error de compilacin. Cuando se evala un assertion que solo tenga Expresin1, se comprueba la
veracidad de la expresin y si es verdadera se contina la ejecucin del programa, pero si es falsa,
se lanza una excepcin de tipo AssertionError. Si el aserto contiene adems una Expresin2 y
Expresin1 es falsa, se evala Expresion2 y se le pasa como parmetro al constructor del
AssertionError (Si Expresion1 se evala como cierto, la segunda expresin no se evala).
Compilacin
Para que el compilador del JDK (javac) entienda la nueva instruccin, se le debe pasar como
parmetro -source 1.4, por ejemplo:
javac -source 1.4 Aserto.java
Esto le indica al compilador que el cdigo que recibe utiliza caractersticas del lenguaje aparecidas
en la versin 1.4 del JDK.
Ahora bien, Que ocurre con las classes ya escritas que usan assert como variable?. Pues que no
compilarn, aunque si ya estan compiladas seguirn ejecutndose sin problemas en la nueva
versin del JDK.
Activacin/Desactivacin
Los asertos estan pensados para la comprobacin de invariantes (condiciones que se cumplen
siempre en un determinado trozo de cdigo), por lo que tienen mas inters en la etapa de
desarrollo. Por esto se puede desactivar y activar la comprobacin de los asertos. Por defecto la
comprobacin de los asertos esta desactivada y se proporcionan dos opciones para el intrprete
del JDK (java).
java -enableassertions (-ea), para activar la comprobacin.
java -disableassertions (-da), para desactivar la comprobacin.
Si estos modificadores se escriben tal cual, se activar o desactivar la comprobacin de asertos
para la clase que se pretende ejecutar. Pero si lo que se quiere es activar/desactivar la
comprobacin de los asertos en un determinado paquete o de una determinada clase:
java -enableassertions:Saludos.Hola... HolaMundo
(Activa asertos en el paquete Saludos.Hola, por los puntos ...)
java -enableassertions:Saludos.Hola HolaMundo
(Activa asertos la clase Saludos.Hola, por que no lleva puntos)
Y lo mismo para disable:
java -disablessertions:Saludos.Hola... HolaMundo
java -disableassertions:Saludos.Hola HolaMundo
Tambien se puede activar para unos y desactivar para otros:
java -ea:Camion.Rueda... -da:Camion.Freno Camion.Conducir
En resumen la sintxis es la siguiente:
java [-enableassertions | -ea] [:<package name>"..." | :<class name>]
java [-disableassertions | -da] [:<package name>"..." | :<class name>]
Ejemplos de uso
Bien, vale ya de teora y pasemos a la prctica. Los asertos prometen mucho, hasta ahora
cualquiera que programase en Java y supiese que alguna condicin deba ser cierta en alguna
parte del cdigo (el invariante) lo colocaba como comentario:
if (a==1){
...
} else if (a==2){
...
} else { //cuando a==3
...
}
Aqui es donde se puede aplicar la nueva instruccin assert, (y en general para cualquier
invariante):
if (a==1){
...
} else if (a==2){
...
} else {
assert (a==3)
...
}
De esta manera conseguimos proteger el else. Si se entra por el else y el aserto no se cumple, se
genera una excepcin de tipo AssertionError.
Otro candidato para los asertos es una sentencia switch que no tenga clusula default. En este
caso el aserto comprobar que nunca se entra por el default, de esta manera:
switch (suerte){
case Moneda.CARA:
...
return;
case Moneda.CRUZ:
...
return;
case default:
assert false;
}
Se habr dado cuenta de la potencia de utilizar assert false en cualquier lugar del programa donde
se supone no se debe entrar nunca.
Puede que su programa deba hacer una comprobacin frrea de determinados valores de
variables, lo que consigue incluyendo asertos que las comprueben alli donde es necesario, pero
seguramente tambien querr comprobar que la comprobacin de asertos est activada, pues bien,
esta es una manera de que al cargar una clase se asegure que se ejecuta solo si la comprobacin
de asertos esta activada; coloque este cdigo como primer cdigo a ejecutar de su clase (el sitio
ideal es el constructor):
static {
boolean assertsActivado = false;
assert assertsActivado = true;
if (!assertsActivado)
throw new RuntimeException("Debe activar la comprobacion de asertos!");
}
El cdigo es esttico, por lo que siempre se ejecutar. Si la comprobacin de asertos esta
desactivada no se har caso del aserto y se generar la excepcin RuntimeException, en cambio si
esta activada, se cambiar el valor de assertsActivado y no se generar la excepcin. Debe darse
cuenta de que el compilador de java no prohibe este tipo de asertos con efectos laterales, por lo
que debe tener cuidado.
















CRITERIOS PERSONALES
Qu lo llev a considerar estas respuestas cmo vlida, en qu se fundamenta?
En investigaciones, libros de informtica
Qu problemas se presentaron al momento de elaborar la solucin?
No encontrar datos fiables en algunas pginas visitadas
Qu se me hizo ms fcil resolver en este trabajo?
Las assertions
Cmo te ayud este trabajo a aprender algo nuevo o a reforzar conocimientos
anteriores?
Aprend algo nuevo ya que no tena muchos conocimientos acerca de la excepcin throw
Puedes describir algunas relaciones entre este trabajo, otras asignaturas que estas
estudiando y la vida real?
Esto est relacionado en lo laboral ya que con esto es una base para emprender a realizar
trabajos relacionados con nuestra profesin y a la ayuda para reforzar conocimientos en
las distintas materias.
Qu no he logrado comprender?
Su compilacin
Qu debo mejorar?
En estudiar a diario cada clase y leer ms acerca de temas que estn por venir




CONCLUSIONES

Los assertions son un buen mtodo para comprobar valores de variables, expresiones y para
comprobar estados del programa por donde no se tiene que pasar. Bien es cierto que esto
tambin se puede hacer con una serie de If's, pero no sera tan eficiente, y sobre todo no se podra
desactivar cuando uno quiera.


RECOMENDACIONES
Leer el material luego de cada clase,
No dejar acumular las dudas y preguntas indefinidamente










REFERENCIAS BIBLIOGRFICAS
Programacin en castellano (2013)
http://www.programacion.com/articulo/introduccion_a_los_asertos_assertions_118

You might also like