¿Qué es una Aserción?
Es una sentencia que puede ser falsa o verdadera, nos sirve para verificar o comprobar el funcionamiento de nuestro código. Básicamente es lo que supone el programador debe ocurrir en alguna parte del programa.
Un ejemplo en Java:
int cantidad=this.getTotal();
if(cantidad < 0){
out.out.println("la cantidad es de:"+cantidad);
}
else{
out.println("la cantidad es de:"+cantidad);
assert cantidad == 0 :"Parece que la cantidad no es 0";
}
En este fragmento de código vemos como usar las aserciones, en este caso usamos la palabra assert e indicamos una condición a cumplir. Las aserciones no son exclusivas de Java, también podemos encontrarlas en lenguajes como: Ceylon, Python, C++, entre otros más.
En Java
Compilamos: javac -g Asercion.java
Ejecutamos: java -ea Asercion
Asercion.java
import static java.lang.System.out;
public class Codemonkey{
public static void main(String[] args) {
ControlUsuarios cu=new ControlUsuarios();
cu.setTotal(1);
cu.mostrar();
}
}
class ControlUsuarios{
private int total=0;
public ControlUsuarios(){
}
public void setTotal(int total){
this.total=total;
}
public int getTotal(){
return total;
}
public void mostrar(){
int cantidad=this.getTotal();
if(cantidad < 0){
out.println("la cantidad es de:"+cantidad);
}
else{
out.println("la cantidad es de:"+cantidad);
assert cantidad == 0 :"Parece que la cantidad no es 0";
}
}
}
En Ceylon
Compilamos: ceylon compile source/Asercion.ceylon
Ejecutamos: ceylon run default
Asercion.ceylon
shared void run(){
value cu=ControlUsuarios();
cu.total=0;
cu.mostrar();
}
class ControlUsuarios(){
shared variable Integer total=0;
shared Integer getTotal(){
return total;
}
shared void mostrar(){
Integer cantidad=this.getTotal();
if(cantidad < 0){
print("la cantidad es: ``cantidad``");
}else{
print("la cantidad es: ``cantidad``");
assert(cantidad == 0);//Parece que la cantidad no es 0
}
}
}
En C++
Compilamos: g++ -o asercion asercion.cpp
Ejecutamos: ./asercion
asercion.cpp
#include "iostream"
#include <cassert>
using namespace std;
class ControlUsuarios{
private:
int total;
public:
ControlUsuarios(){}
virtual ~ControlUsuarios(){}
void setTotal(int total){
this->total=total;
}
int getTotal(){
return total;
}
void mostrar(){
int cantidad=this->getTotal();
if(cantidad < 0){
cout<<"la cantidad es de:"<<cantidad<<endl;
}
else{
cout<<"la cantidad es de:"<<cantidad<<endl;
assert(cantidad == 0); //"Parece que la cantidad no es 0";
assert(("Parece que la cantidad no es 0",cantidad == 0));
}
}
};
int main(int argc, char** argv){
ControlUsuarios cu = ControlUsuarios();
cu.setTotal(1);
cu.mostrar();
return 0;
}
En Python
Ejecutamos: python Asercion.py
Asercion.py
class ControlUsuarios(object):
total=0
def mostrar(self):
cantidad=self.total
if cantidad < 0:
print "cantidad es:",cantidad
else:
print "cantidad es:",cantidad
assert cantidad == 0 #Parece que no es 0
cu=ControlUsuarios()
cu.total=1
cu.mostrar()
La verificación de programas (algoritmos) es un tema bastante extenso y complejo, este post solo trata del uso de las aserciones de manera muy superficial.
Links
http://es.axiacore.com/blog/2008/05/ejemplo-aserciones-assert-java/
http://www.lab.dit.upm.es/~lprg/material/apuntes/assert/aserciones.htm
http://pablasso.com/200812/que-es-una-asercion/
No hay comentarios:
Publicar un comentario