¿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
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
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.
ResponderEliminarCalificación: 4.25/5
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