Mostrando entradas con la etiqueta ejemplos java. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejemplos java. Mostrar todas las entradas

domingo, 22 de septiembre de 2013

Programando en Java ... no. 5

"Mientras tanto el programador trata de entender el mundo a través de código, olvidando que puede hacerlo con un simple vistazo"


1. Creando nuestras propias excepciones, creamos una clase llamada "MyNumberException" que extiende de la clase Exception, si el número es mayor a 500 o menor a 0 ocurrirá la excepción

public class Codemonkey{
   
     static void setValor(int x)throws MyNumberException{
         if(x>500 || x<0)
             throw new MyNumberException("debes introducir un valor menor a 500 y mayor a 0");
          // se ejecutará si el número es mayor a 500 o menor a 0
     }
    public static void main(String[] args)throws MyNumberException{
        System.out.println("    c0D3m0Nk3Y    ");
       try{
            setValor(501);
        }catch(MyNumberException me){
           System.err.println("Ha ocurrido un error: "+me.getMessage());//mostramos el mensaje
        }finally{
             System.out.println("finally: esto siempre se ejecutara");
        }
        System.out.println("esto esta fuera del try-catch-finally");
    }  
}

class MyNumberException  extends Exception{
    public  MyNumberException(String message){
         super(message);
    }
}
Para ejecutar es necesario habilitar las "assertions" en java con "-ea":
javac -g Codemokey.java
java -ea Codemonkey

2. En este ejemplo se usa la clase HashSet para insertar un valor de tipo "Persona", si el valor es un duplicado no se podrá insertar.

import java.util.HashSet;
import java.util.Objects;


public class Codemonkey {
    public static void main(String[] args){
     HashSet persons=new HashSet();
     persons.add(new Persona("Laura",31));
     persons.add(new Persona("Hortencia",21));
     persons.add(new Persona("Laura",31));//duplicado
     persons.ass(new Persona("Hortencia",39)); //este valor si se agrega
   
     for(Object p: persons){
         Persona per=(Persona)p;
      System.out.println(per.getNombre()+"  - "+per.getEdad());
     }
   
     System.out.println(persons.toString());
   
    }
}

//aquí creamos la clase Persona
class Persona{
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }
   
    @Override
    public String toString(){
        return "nombre: "+nombre+"  edad: " +edad;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 79 * hash + this.edad;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Persona other = (Persona) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        if (this.edad != other.edad) {
            return false;
        }
        return true;
    }
}


3. Ejecutando un hilo en java swing
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;



public class Codemonkey{
    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            @Override
            public void run() {
                new Ventana();
            }
        });
    }
}

class Ventana extends JFrame{
    private JPanel panel;
    private JButton btnSalir,btnActiva;

    Ventana(){
        setTitle("Iniciando hilos");
        setSize(450,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(getGUI());
    }

    public JPanel getGUI(){
        panel=new JPanel();
        panel.setVisible(true);
        panel.setSize(700,400);
        panel.setBackground(Color.black);
        panel.add(new JLabel("<html><h1><font color='white'>Ejecutando un hilo</font></h1></html>"));
        panel.add(getBtnActiva());
        panel.add(getBtnSalir());
        return panel;
    }


    public JButton getBtnActiva(){
        btnActiva=new JButton("<html><font color='white'>Iniciar hilo</font></html>",new ImageIcon("mono.jpg"));
        btnActiva.setToolTipText("quitar ventana ...");
        btnActiva.setBackground(Color.blue);
        btnActiva.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   
                    new Thread(new Runnable(){
                        public void run(){
                            int cont=0;
                            System.out.println("Inicia hilo");
                            while(cont<4){
                            try{
                                Thread.sleep(1000);
                               System.out.println("Hola no. "+(cont+1));
                            cont++;
                        }catch(InterruptedException ex){
                            System.err.println(ex.toString());
                        }
                        System.out.println("Termina hilo");

                           }
                        }
                    }).start();


           }
       });

        return btnActiva;
    }

    public JButton getBtnSalir(){
        btnSalir=new JButton("<html><font color='white'>Salir</font></html>",new ImageIcon("mono.jpg"));
        btnSalir.setToolTipText("quitar ventana ...");
        btnSalir.setBackground(Color.red);
        btnSalir.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                    System.exit(0);
           }
       });

        return btnSalir;
    }
}




sábado, 19 de enero de 2013

Ejemplo de patrón de diseño Singleton



Los patrones de diseño son una forma de escribir código de manera más ordenada.

Los patrones se dividen en tres grandes grupos: 
  • Creacionales → Cómo instanciar objetos de manera flexible. 
  • Estructurales → Cómo organizar clases y objetos para formar estructuras más grandes. - 
  • Comportamentales → Cómo gestionar la comunicación y responsabilidades entre objetos.
Nos enfocaremos en el patrón Singleton. El cuales es un patrón de diseño de software que restringe la instanciación de una clase a una sola instancia. ¿Para qué sirve el patrón Singleton?
Crear una instancia única de una clase.  Se me ocurre que necesito obtener una lista de registros de una base de datos.

Singleton en la vida real
Las clases java.langMath y java.lang.Runtime de Java son un ejemplo del patrón Singleton.


Ejemplo. Definir una clase que siga este patrón y muestre su nombre.

Singleton.java

package com.inforhomex.app;

public class Singleton{

 private static Singleton singleton=null;

 private Singleton(){}

 public static Singleton getSingleton(){
  if(singleton==null){
   singleton=new Singleton();
  }
  return singleton;
 }
//aqui muestra el nombre 'Singleton'
 public void ver(){
  System.out.println("Estoy desde la clase: "+this.getClass().getName());
 }
}

Ahora la clase principal:

Principal.java
package com.inforhomex.app;

public class Principal{
 public static void main(String[] args) {
  Singleton singleton=Singleton.getSingleton();
  singleton.ver();
 }
}

Actualización:
Aquí otro ejemplo del uso del patrón singleton, obtener los valores de una lista:
package com.inforhomex.app;

import java.util.List;
import java.util.ArrayList;

public class Codemonkey{
  public static void main(String[] args) {
    List<Integer> lista =new ArrayList<Integer>();
    lista.add(12);
    lista.add(3);
    lista.add(90);
    lista.add(32);
    lista.add(8);

    Singleton ejemplo=Singleton.getSingleton();
    ejemplo.getLista(lista);
  }
}



domingo, 2 de octubre de 2011

Java, ejemplos prácticos

Una serie de programas hechos en Java. Trataré de explicar algunos programas más o menos complejos, otros son muy claros como dar una explicación larga y detallada. Te recomiendo estudiarlos y revisarlos


1. Promedio.java

import java.util.Scanner;
import java.io.*;
import java.lang.*;

public class Promedio{

  public static void main(String[] args)throws IOException{
  int n=0,contador=0;double suma=0,promedio=0,valor=0;
  Scanner teclado=new Scanner(System.in);
  System.out.println("******************");
  System.out.println("[Promedio en Java]");
  System.out.println("******************");
  do{
  System.out.println("Introduce numero de materias: ");
  n=teclado.nextInt();
  }while(n<0); 

System.out.println("\nNumero de materias:  ["+n+"]");
 
  while (contador<n){
 
  System.out.println("\nCalificacion no.  "+(contador+1));
  valor=teclado.nextDouble();

   contador++;
  suma+=valor;
  //System.out.println("\nSuma parcial: "+suma+" para no. "+contador);
 
  }
  promedio=suma/n;
  System.out.println("\nSuma total ["+suma+"]");
  System.out.println("\nPromedio ["+promedio+"] redondeado:["+Math.round(promedio)+"]");
  System.exit(0);

  }
}//fin clase 

2. Burbuja.java

import java.io.*;

public class Burbuja{


 public static void main(String[]args){

  int[] arreglo={100,54,0,43,56,12,4,95,32,5};
  System.out.println("\tArreglo sin ordenar");
  verArreglo(arreglo);
 
  System.out.println("\tArreglo ordenado");
/*
esto se pudo hacer con 
Arrays.sort(arreglo);

en vez de usar está función
*/
  burbuja(arreglo);
  verArreglo(arreglo);
}


 static int verArreglo(int[] vector){
  int i=0;
  for(i=0;i<vector.length;i++)
    System.out.println("Posicion no. "+i+" Valor= "+vector[i]);
  return i;
 }


 static int burbuja(int[] arreglo){
      int i,j;
      int aux;
      for(i=0;i<arreglo.length-1;i++)
            for(j=0;j<arreglo.length-1;j++)
                  if(arreglo[j]>arreglo[j+1]){
                        aux=arreglo[j];
                        arreglo[j]=arreglo[j+1];
                        arreglo[j+1]=aux;

                  }
      return i;
}

}


3. Calcular el IMC de una persona: IMC.java
import java.io.*;
import java.util.Scanner;

public class IMC{

   //miembros
   private double Peso;
   private double Talla;

   

   public IMC(double miPeso,double miTalla){
       this.Peso=miPeso;
       this.Talla=miTalla;
  }

  //métodos Set y Get
 
 
  
 //otros métodos

 public void verDatos(){
   System.out.println("\nPeso ["+Peso+"] Talla ["+Talla+"]");
 }

 public double obtenerIMC(){
   return Peso/(Talla*Talla);
 }


//main

 public static void main(String[] args)throws IOException{

  IMC miPrograma3=new prog4(0,0);
  double peso=0,talla=0;
 Scanner teclado=new Scanner(System.in);
 Mensaje1();
  do{
   System.out.println("\nIntroduce peso: ");
    peso=teclado.nextDouble();
  }while(peso<=0);

 do{
   System.out.println("\nIntroduce talla: ");
    talla=teclado.nextDouble();
  }while(talla<=0);

  miPrograma3=new IMC(peso,talla);
  miPrograma3.verDatos();
  System.out.println("\nIMC generado ["+miPrograma3.obtenerIMC()+"] ");
   Mensaje2();System.exit(0);

 }

   static void Mensaje2(){

    System.out.println("\t**************************************************");
    System.out.println("\t*********** codemonkey *************");
    System.out.println("\t**************************************************");
    }


   static void Mensaje1(){

    System.out.println("\t*******************************************************");
    System.out.println("\t*********** [Calculo del IMC en Java] *************");
    System.out.println("\t*******************************************************");
    }


}//fin clase 

Próximamente más ejemplos.

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog