Mostrando entradas con la etiqueta Programacion Orientado Objetos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programacion Orientado Objetos. Mostrar todas las entradas

jueves, 14 de julio de 2011

Eventos, excepciones y errores

Detectar los eventos, excepciones y errores que se generan con su software.

Contenido esperado de la entrada: Tablas con la estructura que más abajo se detalla.

Eventos

Las funcionabilidades del sistema y sus reacciones.

Componente gráfico generador

Tipo de evento (presionar, soltar, pasar por encima de, etc.)

Acción que se dispara

Botón - Agregar Archivo
Abre una ventana nueva, en donde te muestra los campos a llenar.
Abre una nueva ventana
Botón - Ver Archivo
Abre una ventana nueva, en donde te muestra el nombre del archivo, y 4 botones (anterior, ver, eliminar, siguiente) Abre una nueva ventana
Etiqueta - Datos Archivo
Muestra el titulo de la ventana
Ninguna
Etiqueta - Nombre
Muestra el nombre del campo
Ninguna
Campo de texto
Aquí tu puedes escribir el nombre de tu archivo.
Muestra la ruta de tu archivo
Área de texto
Agrega la ruta del archivo seleccionado,en este campo no puedes escribir, ni modificar.
Ninguno
Botón - Examinar
Muestra un ventana de seleccionar archivo, gracias a la librería JFIleChooser
Abre un nueva ventana para seleccionar el documento.
Botón - Guardar
Si lo campos están "llenos" te mostrara un mensaje de "archivo agregado" y si uno de los campos esta vació mostrara un mensaje de volver a intentar de nuevo.
Agrega el archivo a la base de datos
Botón - Cancelar
Sale de la ventana, volviendo a la pantalla principal
Regresa a la pantalla principal

Excepciones

Cuando pasa algo que no esta permitido.

Modo en que se genera

Manejo

Agregar un archivo no especificado
Un filtro para que no pueda agregar cosas no permitidas.
Sobrepasar el limite de capacidad (500 mg)
Poner un contador para la capacidad y si lo pasa, no agregar o eliminar.

Errores
Algo fuera de nuestro programa que pasa por accidente.

>

Modo en que se genera

Manejo

Dobles Usuarios
(una persona intenta registrar una cuenta ya existente)
Tener un base de datos con los usuarios y contraseñas y usar una hashtable para buscar si ahí repetidos
Tener dobles inicios de sesion
Tener una especie de variable boleana que al entrar este en estado true y manteniendo el valor "true" para no permitir la entrada de nadie.

Agradecería sus comentarios, lo que sea para mejorar.



Retroalimentación

Objetivo: Dar y recibir retroalimentación por parte de sus compañeros.


Pequeña entrada donde estuvimos dando y recibiendo retroalimentación vía facebook es muy sencilla y tal ves poco formal pero si tocamos temas vistos en clase.

http://www.facebook.com/permalink.php?story_fbid=10150255815717300&id=613197299&notif_t=feed_comment_reply




Sistemas distribuidos aplicado al proyecto

Dividir el programa en partes para su mejor funcionamiento, como separar la base de datos del programa, para que no consumiera tanto recursos y en todo caso de que se dañara la información para que la base de datos (lo que importa) no se vea afectada.

Tener un servicio web en donde puedas aceder con tu usuario y contraseña, y ahi conectadno a la base de datos para guardar los archivos que quieras organizar o respaldar.



REFERENCIAS
http://www.monografias.com/trabajos16/sistemas-distribuidos/sistemas-distribuidos.shtml

Patrones de Diseño

Aun no entiendo muy bien los patrones de diseño lo cual hace que sea muy dificil de decidir si o no usarlos. pero en caso de ocuparlos serie el DELEGATION porque tengo varios metodos de otras clases que me gustaria usar en otras clases.

Una descripcion del Patrón DELEGATION:

Utilidad:
Cuando se quiere extender y reutilizar la funcionalidad de una clase SIN UTILIZAR LA HERENCIA
Ventajas:
• En vez de herencia múltiple
• Cuando una clase que hereda de otra quiere
ocultar algunos de los métodos heredados
• Compartir código que NO se puede heredar

El problema


El lenguaje utilizado NO PERMITE HERENCIA MÚLTIPLE
La clase C no desea TODOS los métodos de B



La solución


NO USAR HERENCIA SINO LA RELACIÓN “USA”





Implementación

classC extends A {
B objB;
C ( ) { // En la constructor se puede crear obj. de B
objB=new B();
}
void b1( ) { objB.b1( );}



REFERENCIAS


http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf

Pruebas unitarias

¿Que son las pruebas unitarias?

Son pruebas dirigidas a probar clases java aisladamente y están relacionadas con el código y la
responsabilidad de cada clase y sus fragmentos de código más criticos.

¿Porque realizar pruebas unitarias?
1.- Asegura calidad del código entregado.
2.- Ayuda a definir los requerimientos y responsabilidades de cada método en cada clase probada.
3.- Constituye una buena forma de ejecutar pruebas de concepto.
4.- Permite hacer refactoring tempranamente en el código.
5.- Permite incluso hacer pruebas de estress tempranamente en el código.
6.- Permite encontrar errores o bugs tempranamente en el desarrollo.

Pruebas Unitarias del proyecto

Agregar Archivo
Ver Archivos


Eliminar Archivo



REFERENCIAS


http://blog.continuum.cl/wp-content/uploads/2008/08/pruebas-unitarias.pdf

Todos los comentaios son bienvenidos

lunes, 11 de julio de 2011

Importancia de la documentación tecnica

Mi explicación:

Imagina que estas perdido en un isla tu solo, ¿que haces primero?, ¿hacer una fogata?, ¿construir una base?, ¿ir por comida?, ¿hacer una balsa?, ¿a cual darle mayor importancia? seguro, te basaras en tus instintos y lo conseguirás, pero...y todo el tiempo que te llego pensar eso, todo el tiempo que te toco buscar la comida, todo el tiempo que intentaste buscar los mejores troncos para tu base, sin duda, tiempo muy valioso y si se trata de una empresa también costoso, que no te gustaría perder, pero si tuberías un mapa e instrucciones para "Aprenda a sobrevivir en una isla en 3 días", FACILISIMO no?

Por eso la importancia de la documentación técnica, es fundamental y te ahorra lo mas preciado en la vida el "tiempo".
Tal vez digas: "lo haré de la forma mas fácil, pero lo mas fácil para que todos entiendan", y no dudo que lo hagas, de echo es lo que todos queremos al hacer cualquier cosa(claro, sencillo y eficiente) pero quien no ha batallado con una televisión, buscando entradas, botones, etc. incluso hasta con el control remoto.

Y si esto causara perdidas, en que el usuario dejara de usar tu "creación" solo porque no sabe como funciona! si duda te daría coraje y le dirías de TODO, pero de eso no se trata, el objetivo es que las cosas sean sencillas de manejar en cualquier punto de nuestra vida.



REFERENCIAS

http://www.desarrolloweb.com/articulos/importancia-documentacion.html

Diseño de interfaces graficas en el proyecto

Que tal, a continuación les mostrare las ventanas de mi sistema




Como ventana principal habrá 2 botones
Nuevo: para agregar un nuevo archivo.
Ver: para ver los archivos contenidos.







Al hacer click en nuevo te mandara a otra ventana con dos JLabel, un JTextField para que el usuario le ponga el nombre al archivo, un JTextArea para mostrar la ruta del archivo y 3 JBotton ("Examinar...", "Guardar", "Cancelar").






Al hacer click en Guardar te mostrara un mensaje de confirmación pero si llegaras a dejar un campo vació y le das aceptar te mostrara una advertencia y podrás corregir.



Al hacer click en "Examinar..." aparecera por default una ventana paracida a cuando eliges un archivo esto grasias JFileChooser.




La ventana de mostrar archivos aun estoy pensandola porque el tiempo que tenemos es corto y aun nose muy bien todas las caracteristicas necesarias para hacerla, comprometerme seria talves no llegar a cumplir, pero esta es un idea muy sencilla talves no sea la mejor porque al tener 100 imagenes tendras que hacer 100 click.



Diagramas de Secuencia

¿Que son?

El diagrama de secuencia es un tipo de diagrama usado para la interacción entre objetos en un sistema.

EL diagrama de secuencia es dividir cada caso de uso por funcionabilidad y detallar todos los procesos con el cual se ve involucrado la acción, con que clases interactúa, el escenario, los métodos(mensajes) que se necesitan para ejecutar las acciones y los actores(personas) involucrados.

¿Para que sirven?

Sirve para la interacción de de un conjunto de objetos de un sistema a través del tiempo y se modela para cada caso de uso. El diagrama de secuencia es un vista de que hará que a la hora de probar el sistema.

Así, en el caso de una aplicación para jugar al buscaminas, se podrían realizar
diagramas de secuencia para “jugar una partida” o bien para acciones más específicas como“marcar casilla”.

El detalle que se muestre en el diagrama de secuencia debe estar relacionado con lo que se intenta mostrar o bien con la fase de desarrollo en la que esté el proyecto, no es lo mismo un diagrama de secuencia que muestre la acción de "mover pieza" a otro que sea "mover caballo", en el caso de un tablero de ajedrez.

El detalle del diagrama depende de la fase en la que estemos, lo que pretendamos contar con el diagrama y a quién.
Diagrama se secuencia del proyecto

Ver archivo
Actor: Usuario
Clases involucradas: ver ventana, visualizador
Metodos: pedirImeagen(), mostrarArchivo()





Eliminar Archivo
Actor: usuario
Clases involucradas: ventana principal, eliminar, visualizador.
Métodos: verArchivos(), EliminarArchivos(), refrescar().


Agregar Archivo
Actor: Usuario
Clases involucradas: ventana principal, carga, filtro
Métodos: agregar(), aceptarImagen(), filtrar().


REFERENCIAS:

http://es.wikipedia.org/wiki/Diagrama_de_secuencia

http://www2.uah.es/jcaceres/uploaded/capsulas/DiagramaSecuencia.pdf

domingo, 3 de julio de 2011

Diagrama de clases

Primero, ¿Que son los diagramas de clase? ¿para que se usa? y ¿porque son necesarios?. Investiguemos un poco acerca de estas preguntas...

¿Que son los diagramas de clase?


El diagrama de clase representa clases, sus partes y la forma en la que las clases de los objetos están relacionados con otro.

¿Para que se usa?

Es el más utilizado y más conocido de los diagramas orientados a objetos. Es la fuente de generación de código.

¿Porque son necesarios?

Para tener una idea de lo que se hará en el programa. Es la base de la codificación.

Diagrama de clases del proyecto


cadit.anahuac.mx/~sac/download/.../DIAGRAMADECLASE_20090223.ppt

http://es.wikipedia.org/wiki/Diagrama_de_clases


Dudas, sugerencias, un error que pude aver cometido. comentar :D

Herencia y Polimorfismo

Vamos hablar un poco de lo que trata sus definiciones:

Herencia

Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.

Ejemplo:

-El perro y el gato tendrían la herencia (métodos y atributos del Mamífero).

Polimorfismo

Es la capacidad que tiene los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación.

Hay dos tipos:

Dinámico: es el que el código no incluye ningún tipo de especificación sobre el tipo de datos.

Estático: es el que los tipos a los que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes de ser utilizados.


En el caso del proyecto:

La HERENCIA no es aplicada en mi proyecto porque no hay una clase Padre, los metodos se sobrecargan pero no se heradan nada

POLIMORFISMO, si usare polimorfismo, en los tipos de datos para sobrecargar la mayoría de los métodos con los tipos de archivo, nombre de los archivos, el tamaño del archivo. sobre cargare el operador de suma (+) y los constructores.

REFERENCIAS:

http://www.slideshare.net/equipo2/poo-herencia-abstraccion-y-polimorfismo

http://es.wikipedia.org/wiki/Polimorfismo_%28programaci%C3%B3n_orientada_a_objetos%29

sábado, 2 de julio de 2011

Diseño de Clases

Que tal, hoy tratare de dar una breve introducción a "Diagramas de clase" y contestar las preguntas que vallan surgiendo.

¿Que es un Diseño de Clases?

Mi explicación: Es un tipo de "mapa conceptual" en donde están relacionados todas aquellas clases y métodos según su interacción y funcionalidad, mostrando sus atributos y visibilidad.

Explicación de Internet: Un diagrama de clases es un tipo de diagrama estático que describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos.

Ahora, ¿Para que se usan?

Son utilizados durante el proceso de análisis y diseño de los sistemas, donde se crea el diseño conceptual de la información que se manejará en el sistema, y los componentes que se encargaran del funcionamiento y la relación entre uno y otro.

EJEMPLO:

Ahora que ya tenemos la definición de lo que es, ¿como sabríamos que nuestro diseño es el correcto?

Les presentare unos "síntomas" para saberlo

RIGIDEZ ( las clases son difíciles de cambiar );
FRAGILIDAD ( es fácil que las clases dejen de funcionar );
INMOVILIDAD ( las clases son difíciles de utilizar );
VISCOSIDAD ( resulta difícil utilizar las clases correctamente );
COMPLEJIDAD INNECESARIA ( abuso de copiar y pegar );
OPACIDAD ( aparente desorganización );

y si ahí "síntomas" también ahí "medicinas". Les presentare algunas para prevenir/eliminar los "síntomas" de arriba.

PRINCIPIO DE RESPONSABILIDAD ÚNICA ( una clase debe utilizar un único motivo para cambiar );
PRINCIPIO ABIERTO-CERRADO ( los módulos deben ser ala vez abiertos y cerrados: abiertos para ser extendidos y cerrados para ser usados );
PRINCIPIO DE SUSTITUCIÓN DE LISKOV ( los caso base siempre se pueden sustituir pos sus subtipos );
PRINCIPIO DE INVERSIÓN DE DEPENDENCIAS ( [a] Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deben depender de abstracciones [b] Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones );

DIAGRAMA APLICADO EN MI PROYECTO


1.- CLASE:
[+]usuario
ATRIBUTOS:
[-]nombre, [-]contraseña
MÉTODOS:
[+]login(), [+]logOut(), [+]registrarse();

2.- CLASE:
[+]visualizador
ATRIBUTOS:
[-]ruta, [-]string, [-]id
MÉTODOS:
[+]siguiente(), [+]anterior(), [+]consultar(), [+]campos vacios, [+]inicializar();

3.- CLASE:
[+]ventana principal
MÉTODOS:
[+]mostrar(), [+]actionPerdomed();

4.- CLASE:
[+]baseDatos
MÉTODOS:
[+]conexion(), [+]getSt();

5.- CLASE:
[+]altaArchivo
ATRIBUTOS:
[-]ruta, [-]string, [-]id
MÉTODOS:
[+]actionPerfomed(), [+]guardarArchivos(), [+]camposVacios, [+]campos vacios, [+]eliminar();

6.- CLASE:
[+]filtro
MÉTODOS:
[+]aceptar();

7.- CLASE:
[+]directorio
MÉTODOS:
[+]actionPerfomed();


Lo que esta entre corchetes es el tipo de visibilidad

REFERENCIAS

http://es.wikipedia.org/wiki/Diagrama_de_clases

http://elvex.ugr.es/decsai/java/pdf/AB-classes.pdf

Dudas, sugerencias y/o comentarios aqui abajo :D

lunes, 27 de junio de 2011

Diseño del Proyecto de Poo

Que tal esta entrada es para explicar lo que tratara mi proyecto:

Lo que tengo planeado hacer es un "tipo" de USB portátil, accediendo a el con un Usuario y contraseña y en caso de no tenerlos crear unos datos nuevos, pero por el corto tiempo con el que contamos lo limitare a solo archivos .PDF en donde al momento de tu "ejecutarlo" se conecte con tu base de datos y te muestre los archivos contenidos ( en caso de contener algo ), después "jugar" con esos archivos ( eliminándolos, moviéndolos de lugar, descargándolos, visualizándolos ). Y tener una opción para crear una carpeta para organizar los archivos.

( aquí va una imagen )