Java sigue siendo el lenguaje más usado para desarrollo de aplicaciones, le busquen donde le busquen sigue manteniendo
el top de los lenguajes de programación.
Aunque no es del todo bueno usar solo uno.
Manejo de Excepciones
Alguna vez tuve que hacer una clase que manejara errores (o los gestionara), el código más o menos era algo como esto:
// clase Principal
public class
Codemonkey{
public
Codemonkey(){}
private TestMiExcepcion test=new
TestMiExcepcion();
public static void main(String[] args)throws MiExcepcion{
// en esta parte se encuentra el método "manejaExcepcion"
new Codemonkey().test.
manejaExcepcion(args);
}
}
//esta es la "clase Exception" definida
class
MiExcepcion extends Exception{
public
MiExcepcion(String msg){
super(msg);
}
}
/* esta es la clase que contiene la información del error, en este caso se trata de un vector nulo o con tamaño cero*/
class
TestMiExcepcion{
public
TestMiExcepcion(){}
public void
manejaExcepcion(String[] vector)throws MiExcepcion{
if(vector.length==0){
// esta es la información del error
throw new
MiExcepcion("el tamanyo del arreglo no debe ser cero");
}
else if(vector==null){
throw new
MiExcepcion("el vector no debe ser nulo");
}
}
}
Todo en un archivo llamado "Codemonkey.java" , es un ejemplo de crear tus propias excepciones. Aqui hay más ejemplos
http://stackoverflow.com/questions/1754315/how-to-create-our-own-exceptions-in-java
En muchos casos es bueno definir nuestras propias excepciones, así tendremos una mejor perspectiva de como resolver los problemas en nuestro código (a veces no basta poner try-catch en cada línea de código).
Aquí más código
1. Otro ejemplo de uso de interfaces, clases abstractas y herencia
public class
Ejemplos{
public static void
main(String[] args) {
Persona deportista= new
Deportista("Homero","Simpson","Thompson",36,2,"Futbol");
deportista.
ver();
}
}
abstract class
Persona implements Servicios{
public static final boolean VALOR=true;
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private int edad;
public
Persona(){}
public
Persona(String nombre,String apellidoPaterno,String apellidoMaterno,int edad){
this.nombre=nombre;
this.edad=edad;
this.apellidoPaterno=apellidoPaterno;
this.apellidoMaterno=apellidoMaterno;
}
public boolean
setNombre(String nombre){
this.nombre=nombre;
return VALOR;
}
public boolean
setEdad(int edad){
this.edad=edad;
return VALOR;
}
public boolean
setApellidoPaterno(String apellidoPaterno){
this.apellidoPaterno=apellidoPaterno;
return VALOR;
}
public boolean
setApellidoMaterno(String apellidoMaterno){
this.apellidoMaterno=apellidoMaterno;
return VALOR;
}
public String
getNombre(){
return nombre;
}
public int
getEdad(){
return edad;
}
public String
getApellidoPaterno(){
return apellidoPaterno;
}
public String
getApellidoMaterno(){
return apellidoMaterno;
}
public abstract String
verTodo();
}
interface
Servicios{
public abstract void
ver();
}
class
Deportista extends Persona{
private int horas;
private String deporte;
public Deportista
colocarDatos(int horas,String deporte){
this.deporte=deporte;
this.horas=horas;
return this;
}
public
Deportista(){}
public
Deportista(String nombre,String apellidoPaterno,String apellidoMaterno,int edad,int horas,String deporte){
super(nombre,apellidoPaterno, apellidoMaterno,edad);
this.horas=horas;
this.deporte=deporte;
}
@Override
public void
ver(){
System.out.printf("%s\n",verTodo());
}
@Override
public String
verTodo(){
return "nombre: "+getNombre()+"\napellido paterno: "+getApellidoPaterno()+"\napellido materno: "+getApellidoMaterno()+"\nedad: "+getEdad()+"\nhoras: "+horas+"\ndeporte: "+deporte;
}
}
2. Cálcular el Imc
import java.util.List;
import java.util.ArrayList;
public class
Ejemplos{
public static void main(String[] args) {
Imc horacio=new
Imc();
horacio.setPeso(45.0);
horacio.setTalla(1.60);
Imc andres= new
Imc(67.0,1.66);
List<Imc> listaImc=new ArrayList<Imc>();
listaImc.add(horacio);
listaImc.add(andres);
for(Imc imc: listaImc){
System.out.printf("peso: %f - talla: %f - imc obtenido: %f\n",imc.getPeso(),imc.getTalla(),imc.getIMC());
}
}
}
class
Imc{
private double peso;
private double talla;
public
Imc(){}
public
Imc(double peso,double talla){
this.talla=talla;
this.peso=peso;
}
public double
getIMC(){
return peso/(talla*talla);
}
public boolean
setPeso(double peso){
this.peso=peso;
return true;
}
public double
getPeso(){
return peso;
}
public boolean
setTalla(double talla){
this.talla=talla;
return true;
}
public double
getTalla(){
return talla;
}
}
3. Calcular la frecuencia cardíaca máxima:
import java.util.Scanner;
public class
Codemonkey{
public static void main(String[] args)
throws MiExcepcion {
int edad=0;
double porc=0.0;
Scanner teclado=new
Scanner(System.in);
do{
System.out.println("Introduce tu edad:");
edad=teclado.nextInt();
}while(edad<=0);
do{
System.out.println("Introduce % de esfuerzo a realizar: ");
porc=teclado.nextDouble();
}while(porc<=0.0);
System.out.println("frecuencia cardiaca maxima obtenida: "+porcentaje(obtenerFcmax(edad),porc));
}
public static int
obtenerFcmax(int edad)throws MiExcepcion{
int frecuencia=0;
if(edad<=0){
throw new
MiExcepcion();
}
frecuencia=(220-edad);
return frecuencia;
}
public static double
porcentaje(double puls,double porc)throws MiExcepcion{
double porcen=0.0;
if(puls==0.0 || porc==0.0){
throw new
MiExcepcion("no debe haber valores nulos, menores o iguales a cero");
}
porcen=(porc/100)*puls;
return porcen;
}
}
class
MiExcepcion extends Exception{
public
MiExcepcion(){
super("la edad no debe ser cero o nula");}
public
MiExcepcion(String msg){
super(msg);}
}
El problema de los programadores es que nunca saben lo que están haciendo hasta que es demasiado tarde. ::Seymour Cray::
Links
http://www.arrakis.es/~abelp/ApuntesJava/GestionExcepciones.htm