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).

miércoles, 16 de marzo de 2011

Diagrama secuencial

En un diagrama de secuencia ponemos varios de los objetos o clases que forman parte de nuestro programa y ponemos qué llamadas van haciendo unos a otros para realizar una tarea determinada.
Hacemos un diagrama de secuencia por cada caso de uso o para una parte de un caso de uso (lo que llamo subcaso de uso). En nuestro ejemplo de ajedrez, podemos hacer diagramas de secuencia para "jugar partida" o bien para partes de "jugar partida", como puede ser "mover pieza".





martes, 15 de marzo de 2011

BOUML- Programa para diagrama de Clases

Este programa llamado Bouml es un programa que te permite crear diagramas, pero ahora el que me interesa es el  diagrama de clase. El software es libre y disponible en multiples plataformas, por lo que todos pueden descargarlo.

Aqui el ejemplo puesto en clase

jueves, 3 de marzo de 2011

Documentación

La documentación de los programas es un aspecto sumamente importante, tanto en el desarrollo de la aplicación como en el mantenimiento de la misma. Mucha gente no hace este parte del desarrollo y no se da cuenta de que pierde la posibilidad de la reutilización de parte del programa en otras aplicaciones, sin necesidad de conocerse el código al dedillo. 

La documentación de un programa empieza a la vez que la construcción del mismo y finaliza justo antes de la entrega del programa o aplicación al cliente. Así mismo, la documentación que se entrega al cliente tendrá que coincidir con la versión final de los programas que componen la aplicación. 

Una vez concluido el programa, los documentos que se deben entregar son una guía técnica, una guía de uso y de instalación. 


En mi documentación utilice el Doxygen:


Doxygen es un generador de documentación para C++, C, Java, Objective-C, Python, IDL (versiones Corba y Microsoft) y en cierta medida para PHP, C# y D. Dado que es fácilmente adaptable, funciona en la mayoría de sistemas Unix así como en Windows y Mac OS X. La mayor parte del código de Doxygen está escrita por Dimitri van Heesch.

Aquí la documentación hecha con el Doxygen:


Aquí lo deje muy simple por que mi proyecto tiene muy pocas clases, el código es muy corto, ademas que aun mis clases son muy simples.




Me encanto la documentación, es una muy buena forma de aprender...