![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Buen día Foro
Gracias por sus aportes entiendo que no puse mucha información sobre mi pregunta por lo cual me disculpo, no fué mi intención molestar a nadie con mi segundo comentario y tengo muy en claro que nadie tiene la obligación de contestar mi pregunta, pero si, de alguna forma mis comentarios les resultaron inapropiados me disculpo por ello, siempre me he sentido bien en este foro por el alto nivel de actividad y colaboración que existe. Continuando con la pregunta, la verdad es que no me refería a tablas, pero agradezco el aporte de champy me será de mucha utilidad mas adelante. Haciendo eco de las palabras de Casimiro Notevi aquí posteo mas información, en resumen el proceso es inscripcion evaluacion y si aprueba se procede a la matrícula describiéndose así: Cita:
Mis inquietudes serían ¿Que opinan de esas clases? ¿ están bien estructuradas? ¿alguna sugerencia? mi duda es con respecto a Familiar, Parentezco y Apoderado sobre todo, pudiendo el Estudiante tener como familiares a un padre, una madre, un tío, etc. pero solo uno de ellos es quien lo representa en la institución siendo este el Apoderado o quizás otro nombre vendría bien para esta figura. No soy Experto en programación más bien diría un novato mucho más novato que caral todavía , y siempre cuando se me ha encargado algún proyecto siempre use mi propia terminología en diagramas y no UML sin embargo ahora tengo que hacerlo y debe ser Orientado a Objetos, por lo cual recurro a ustedes, agradecido de antemano por cualquier comentario me despidosde ustedes.Saludos David
__________________
Yo se que muchas veces te paso ESTO |
|
#2
|
||||
|
||||
|
Creo que ahora ha quedado más claro, a ver si algún experto te puede echar una mano, estas cosas yo las suelo hacer "a mano, y a mi manera"
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
|
Bueno a ver, empecemos a hacer trizas ese diagrama de clases
![]() 1) ¿Cuál es el objetivo de las clases Antiguo o Nuevo que descienden de Estudiante? ¿Tiene alguna utilidad o hay necesariamente un proceso específico que valga la pena destacar y separar en dos clases? Esto te lo pregunto para que te hagas la pregunta si en verdad aporta o no alguna utilidad el tener esas dos clases. ¿No pensaste que tal vez te las podrías ahorrar y sería más apropiado disponer de un atributo que determine si es viejo o nuevo? 2) Algo parecido se puede hacer con toda esa rama de herencias que haces sobre el Personal. ¿De veras crees que es tan necesario abstraer a software todas las personas que te encuentras? ¿Que tiene de particular o de novedoso o interesante el que exista por ejemplo EncargadaSecretaria? ¿Cuál es el objetivo de cada clase? ¿Necesariamente todo el proceso que describes pasa por igualarlo y llevar a nivel software? Por ejemplo, cuando lees que la directoria entrevista al alumno, ¿asumes que entonces es de interés llevarlo a software? Algo como:
Cuando se hace un diseño de las clases, no debe pensarse sólo en clases y empezar a meterlas como si nada. Debe cuidarse también si en verdad todas esas clases que estás metiendo te son de utilidad o están haciendo ruido. Además, parte del error está en no ir definiendo efectivamente que debe ir haciendo cada clase... Una combinación de los verdaderos procesos que son útiles y necesarios para llevar a cabo un verdadero control te dirá que vale poner o que vale sacar. Eso no dice mucho si no te tomas el trabajo de poner mínimamente los atributos y métodos de interés. Es como decir: venga, tengo todo esta cajas de productos, llenenmela... no se de que productos pero la quiero llena. O en tu caso: "tengo todas estas clases y no que se atributos y relaciones ponerles" Eso lamentablemente no resulta. Si no puedes ver el contexto y tirar algo más integral, aunque sea borrador, va a ser difícil que podamos decir si va bien o mal. Y aquí debo hacer un debido llamado: en el mundo del análisis... ¡no hay dos iguales! Cada quien interpreta el contexto como considera apropiado. Por tanto no esperes LA respuesta. Saludos, |
|
#4
|
||||
|
||||
|
Olvida el modelado...
El consejo que te daré es en resumen: Olvidá el modelado.
Dibuja la interfaz gráfica que tendrá tu aplicación. Muestra tus dibujos a las personas que usarán tu aplicación. Luego de las pruebas, si la interfaz es lo suficientemente buena para cumplir el propósito que necesitas, es hora de pasar al modelado. Pero ojo! El modelado de los datos te los debe decir la interfaz gráfica, no al reverso. El problema de iniciar el desarrollo de una nueva aplicación por el modelado, es que nunca sabrás las necesidades de la interfaz gráfica. Para el usuario la interfaz lo es todo. Les importa un carajo la estructura interna de la DB que soporta a esa interfaz. Otro problema con iniciar con el modelado, es que trabajas en un espacio muy abstracto. Es por esa razón que te sientes confundido. Aunque lo dibujes, no te ayuda mucho a vislumbrar el resultado final, el punto B a dónde quieres llegar, que es un programa visualmente usable. Si empiezas a trabajar por la interfaz, esto te dará una visión más amplia y lúcida del problema y cómo resolverlo. Haz tus bosquejos de la interfaz. Muéstreselas a sus usuarios. Una vez aprobadas, vuelve acá y te podremos ayudar a realizar el modelo que soportará a la interfaz. Tómate tu tiempo. Saludos! |
|
#5
|
||||
|
||||
|
Oye, Chris, por menos que esto, en cualquier bar de OOP purists ya te habrían apuñalado
¿Cómo que empezar por la interfaz gráfica? Se supone que tu interfaz no debe guiar tu modelado y, de hecho, la interfaz tiene su propio modelado.Por otra parte, muchas veces hago como tú ![]() // Saludos |
|
#6
|
||||
|
||||
|
Yo no quería decir nada, pero es lo primero que hago, pienso en las pantallas, en los datos que se van a necesitar, cómo van a trabajar luego los usuarios con el programa, etc. y después diseño la base de datos con esa información
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#7
|
||||
|
||||
|
Cita:
Voy a hacer de cuenta que no dijiste nada ![]() Cita:
Cita:
Si uno dedica su mayo esfuerzo en la presentación dejando de lado el aspecto lógico y el de datos muy seguramente tendrá una interfaces muy bonitas pero que por dentro será muy RAD, fuertemente basado en el uso data-ware y no tendrá demasiado sustento lógico. Luego cuando el sistema se necesite ampliar tendrá que ir toqueteando algo para que funcione. Si uno se concentra en el aspecto lógico y deja de lado la presentación y los datos seguramente logrará tener un buen sistema capaz sostenerse a ciertos cambios en el contexto, pero llevarlos a visualizarlos y en cómo obtenerlos y pasarlos a la base de datos tendrá ciertas dificultades que le tocarán su operatoria. Generalmente este esquema conduce a una renuncia de data-ware. Si uno se concentra en los datos seguramente tendrá una base de datos bien robusta, con muchas de sus operaciones optimizadas. Pero en cuanto a ciertas operatorias que escapan a las posibilidades de un motor debe ir al plano lógico y luchará por estabilizar a la lógica según el modelo de su base de datos. En síntesis si intentas ir por cualquiera de estos caminos sin detenerte a analizar las repercusiones en los otros, seguro que en algo se cae y tendrás problemas. Lo que debe hacerse es cuando analizar por partes y cuando analizarlas de forma conjunta. Debe haber un equilibrio. Saludos, |
|
#8
|
||||
|
||||
|
Cita:
A los usuarios lo único que les importa es la interfaz. Les vale madre que su implementación sea un desastre o sea impecable. Por eso es que los usuarios prefieren Windows, a pesar de ser un desastre de S.O. Un desarrollador o equipo experimentado puede crear una muy buena estructura interna usando la GUI como inspiración. Cuando hacía aplicaciones para Delphi, lo primero que desarrollaba era el diseño de las ventanas. De hecho, esos diseños me sugerían una buena estructura para empezar. Por ejemplo, si la gran mayoría de ventanas requierían de un TDBGrid, entonces cuando hacía la implementación desarrollaba una clase, por ejemplo TDBModuleWnd. TDBModuleWnd ya incluía un TDBGrid y un TDataset con código centralizado para las operaciones CRUD y control de errores. Los herederos sólo cambiaban detalles. Empezar con la GUI es trabajar de afuera hacía adentro. Empezar con los modelos es trabajar de dentro hacia afuera. Si fueras a construir un edificio, primero vas con arquitecto para que te diseñe cómo se verá y esas cosas. Luego vas a un ingeniero civil para que haga los cálculos que soportarán ése diseño. Empezar con los cálculos primero es ir dando palmadas de ciego en el futuro. No sabes cuántos pisos tendrás, no sabes dónde habrán escaleras o no, dónde estarán las puertas, etc. Saludos! |
|
#9
|
||||
|
||||
|
Cita:
![]() Aunque yo estoy de acuerdo ![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#10
|
||||
|
||||
|
Yo diria que ambas direcciones son necesarias. El problema de diseñar basado en la GUI es ampliamente documentado, y genera aplicaciones "acopladas", lo que en general es mala idea.
Por el contrario, sin tener un "destino final" es muy facil empezar a implementar codigo basura/inutil. Lo que hago, luego de siempre hacer los diseños directamente en el IDE, luego tratar de usar UML, luego tratar de usar OO, luego de intentar usar especificaciones funcionales, luego de usar mockups, luego de usar unit testing, es esto: - Usando un programa como www.pivotaltracker.com (cualquier cosa que soporte scrum, donde tenga: Estoy haciendo, hecho, por hacer) voy agregando que voy a hacer, que necesito, porque, los bugs, los errores, etc EN LA MEDIDA QUE NATURALMENTE VAN SALIENDO <= esto es lo importante, y en iteraciones de 1-2 semanas - Hago mockups. Como quiero que salga la app al final - Hago unit testing, que me va perfilando el API del sistema -Uso un tablero para rayar, de esos blancos. O el iPad para hacer dibujos - Cuando los unit test masomenos estan bien, voy montando la GUI. Refactorizo muy liberalmente. - Repito todo lo anterior hasta que llegue a una version 1, en algun momento, miro los mockups iniciales y veo que algo que se me ocurrio no estaba en el sueño del producto, asi que lo descarto. Cuando me parece que me voy acercando, pongo un "fecha limite" de version 1, y lo que se me va ocurriendo lo pongo en la lista de "despues de version 1". Es igual si la app es idea mia, o por medio de un cliente. O sea, en general: - Si veo que tratar de hacer un diagrama UML no me permite expresar bien lo que se necesita, o me entorpese el llegar a una solucion, desecho esa herramienta y cojo otra - Si haciendo un unit test, comparado con el mockuo, veo que el unit test no expresa lo que busco, lo hago en la gui - Si algo no esta en los requerimientos, y deberia, lo agrego - Si algo no esta en los requerimientos, no lo hago. Y no, no es contradiccion con lo anterior - Si hago un dibujo de la interfaz y eso no me resulve como hacer la tabla, hago la tabla en el motor de BD - Si hago un tabla, y no veo como rayos eso tiene que ver con la GUI, pues miro la GUI, me doy cuenta que los datos los guardo de una manera que me va a resultar dificil guardar/leer esos datos despues, cambio la tabla. (intento que los datos expresen de forma natural, simple y directa lo que la APP necesita) - Si el cambio en la tabla termina siendo un problema de desemepeño, ignoro un rato eso. Igual estoy cambiando todo todo el tiempo, ahora no es el mejor momento de resolverlo. Cuando lo es, se hace el refactoring (como dije, refactorizo de forma MUY liberal). Le perdi el miedo a hacer cambios drasticos. En un sistema que estoy llegando a su version 1, luego de 3 meses, hemos hecho cambios drasticos como 3 veces, cambiado librerias fundamentales como 2 y si me toca hacerlo en un lenguaje diferente, pues lo hago. PERO Solo si esta dentro del alcance del proyecto, requerimientos, etc. Osea, se usa la mejor herramienta para hacer el diseño de cada parte de la App. Una veces, es mejor directamente en codigo. Otras, directamente en la BD. Otras, es un mockup. Otras, es escribiendo. Otras es sentarse un rato y conversar con alguien sobre el tema. El diseño lo trato como codigo, no duplico el esfuerzo innecesariamente (es por eso que no hago UML. Si el diagrama de clase sera una clase, la hago como una clase y listo. Para que duplicado en un UML y como codigo?) "Use the source, Luke"
__________________
El malabarista. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿Alguien me podria decir,cómo diseñar mi propio formulario como un skin o crear uno | Master23 | OOP | 4 | 17-02-2010 16:54:33 |
| ¿Como podria programar un calendario? | Nelly | Varios | 8 | 20-08-2006 04:59:34 |
| ¿Como podria hacer esto? | slat | Conexión con bases de datos | 5 | 26-06-2004 18:08:51 |
| Esto podría ser la frase de la semana, del mes, e incluso del año | __cadetill | Humor | 3 | 03-07-2003 19:10:25 |
|