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

2 comentarios:

  1. Ok. No estoy segura si Fecha realmente amerita ser clase (o sería más bien atributo de otra clase); por otra parte, a Cambios tampoco le veo mucho sentido como clase.

    Calificación: 4.25/5

    ResponderEliminar
  2. ok, gracias dra. Al principio estaba un poco perdido, pero ya con hablar con mis compañeros me pusieron las ideas un poco mas claras y no tener tantos errores y modificare la entreda para ya no tener esos errores.

    ResponderEliminar