miércoles, 18 de mayo de 2011

Interfaz Grafica - Taller

Esta parte fue una de las mas fáciles, pero algo complicada ya que el mismo programa netbeans ayudaba con ella.



Esta es la interfaz gráfica, este incluye una barra de menú, y botones necesarios para sus funciones.
Aquí están los botones Play (para la reproducción de la música) y Stop (para detener la canción) y alado un anuncio de del estado actual del reproductor.
Arriba de ellos incluye una barra con animación de cuanto es lo que lleva reproducido de la canción.
Arriba contiene un menú, el cual contiene la forma de abrir los archivos.

martes, 17 de mayo de 2011

Eventos Errores y Exepciones - Taller

EVENTOS

Los eventos son el medio como interactúa una clase con otras o con el propio usuario, se encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra. Cada vez que escribimos con nuestro teclado, que hacemos click en un botón o un link, que cambiamos el tamaño de un objeto, estamos generando eventos.

 
En estos 2, se ve como están relacionado el los botones y menus de la interfaz de la clase reproductor() con los métodos que contiene mi clase mp3()

ERRORES

Ahora mis errores actuales están relacionados con la relación de abrir el archivo con el listado de canciones, por alguna u otra razón, ahora también afecta a mi reproductor, haciendo que no reproduzca música, por lo que mi proyecto tuvo que regresar a la etapa a la cual inicio a funcionar correctamente. Para evitar mis errores actuales cree unos filtros.

Excepciones
Por suerte no he tenido problemas con lo inicial que deje de mi programa, el cual tiene un filtro, este hace que no pase información invalida, en este caso, archivos que no sean mp3.

private static FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo MP3","mp3","mp3")
public String Abrir_mp3(){
    JFileChooser fileChooser = new JFileChooser();      
    fileChooser.setFileFilter(filter);
    int result = fileChooser.showOpenDialog(null); 
    if ( result == JFileChooser.APPROVE_OPTION ){
        try {  
            if(todo_ok){this.STOP();}               
            URL url = fileChooser.getSelectedFile().toURL();  
            this.file= fileChooser.getSelectedFile().getName();
            mediaPlayer = Manager.createRealizedPlayer( url );                       
            this.todo_ok=true;         
         }
         catch (NoPlayerException ex) {
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         } catch (CannotRealizeException ex) {
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         }            catch (IOException ex) {                
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         }
        }
        return "Reproductor mp3 - " + this.file;
    } 



Patrón de diseño - Taller


Facade, façade o fachada es un patrón de diseño que sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces más complejas.






Aquí mi ejemplo muestra que en una clase incluí absolutamente todo necesita mi interface de mi equipo ( Button, jPanel, jSlayer hasta los menus ), como el programa Netbeans tiene la opción de crear la interfaz a placer, este se creó y yo solo lo relacione con las clases y métodos que la clase madre tiene.



martes, 10 de mayo de 2011

Eventos, errores y excepciones

EVENTOS


Los eventos son el medio como interactúa una clase con otras o con el propio usuario, se encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra. Cada vez que escribimos con nuestro teclado, que hacemos click en un botón o un link, que cambiamos el tamaño de un objeto, estamos generando eventos.


Los eventos de mi proyecto son totalmente manejados desde los botones y menús de opciones que están en mi trabajo, por lo que no deveria de tener problemas con códigos o archivos gracias al filtro de escojer archivos de formato mp3.


ERRORES


Un defecto de software (computer bug en inglés), es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software). Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación. Los errores pueden suceder en cualquier etapa de la creación de software.


Mediante la gestión de excepciones se prescindirá de sentencias de control de errores del tipo:

if ( error == true )
return ERROR;


Ahora mis errores actuales están relacionados con la relación de abrir el archivo con el listado de canciones, por alguna u otra razón, ahora también afecta a mi reproductor, haciendo que no reproduzca musica.


Excepciones



Existen varios tipos fundamentales de excepciones:
  • Error: Excepciones que indican problemas muy graves, que suelen ser no recuperables y no deben casi nunca ser capturadas.
  • Exception: Excepciones no definitivas, pero que se detectan fuera del tiempo de ejecución.
  • RuntimeException: Excepciones que se dan durante la ejecución del programa.

lunes, 9 de mayo de 2011

Patron de Diseño

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.


Aqui mis 2 patrones escojidas:

Prototype (Prototipo) :
Tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente.

"Este patrón es motivo donde en ciertos escenarios es preciso abstraer la lógica que decide qué tipos de objetos utilizará una aplicación, de la lógica que luego usarán esos objetos en su ejecución. Los motivos de esta separación pueden ser variados, por ejemplo, puede ser que la aplicación deba basarse en alguna configuración o parámetro en tiempo de ejecución para decidir el tipo de objetos que se debe crear."

// Los productos deben implementar esta interface public interface Producto extends Cloneable { Object clone(); // Aqui van todas las operaciones comunes a los productos que genera la factoria } // Un ejemplo basico de producto public class UnProducto implements Producto { private int atributo; UnProducto(int atributo) { this.atributo = atributo; } public Object clone() { return new UnProducto(this.atributo); } public String toString() { return ((Integer)atributo).toString(); } } // La clase encargada de generar objetos a partir de los prototipos public class FactoriaPrototipo { private HashMap mapaObjetos; private String nombrePorDefecto; public FactoriaPrototipo() { mapaObjetos = new HashMap(); // Se incluyen al mapa todos los productos prototipo mapaObjetos.put("producto 1", new UnProducto(1)); } public Object create() { return create(nombrePorDefecto); } public Object create(String nombre) { nombrePorDefecto = nombre; UnProducto objeto = (UnProducto)mapaObjetos.get(nombre); return objeto != null ? objeto.clone() : null; } } public class PruebaFactoria { static public void main(String[] args) { FactoriaPrototipo factoria = new FactoriaPrototipo(); Producto producto = (Producto) factoria.create("producto 1"); System.out.println ("Este es el objeto creado: " + producto); } }






Flyweight (Peso ligero):
 sirve para eliminar o reducir la redundancia cuando tenemos gran cantidad de objetos que contienen información idéntica, además de lograr un equilibrio entre flexibilidad y rendimiento (uso de recursos).