Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2012
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Como podria modelar esto

Hola foros de tiempo que entro al club la verdad extrañe este circulo tan activo, bueno a lo nuestro, pasa que estoy encargado de hacer un sistema de control de un colegio particular, y en esto estoy en la fase de modelado y creando mis clases, no tengo mucha practica en el análisis orientado a objetos y bueno tal vez esta pregunta les resulte tonta quizas pero me animo a hacerla a pesar de ello

En la institución tiene 3 niiveles inicial primaria y secundaria el alumno nuevo ya sea que entra a inicial o algún año por que sea que viene de otro colegio primero tiene que inscribirse y llenar una ficha de inscripción donde figuran sus datos, los datos de su madre y su padre, ahora después de esto es evaluado para ver si ingresa a la institución o no, si ingresa o aprueba los exámenes entonces se le matricula en el años escolar para lo cual se le toman datos y uno de los datos es apoderado, que es quien representa al alumno en la institución, y se elije de uno de los parientes del alumno padre o madre y otro pariente que haya registrado en la ficha de inscripción. hasta aquí yo he creado las siguientes clases:


Estudiante
----------
Codigo
Nombes
ApePat
...


Familiares
---------
Id
Nombres
....
parentezco


Apoderado
----------



teniendo esas tres clase yo me pregunto Apoderado seria una subclase de Familiares o una clase producto de la relación entre estudiante y familiares osea una clase de relación es decir graficándolo en uml


mi consulta seria estoy haciéndolo bien o que clases son las correctas o como debería ser modelado esto


Saludos

David
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #2  
Antiguo 31-08-2012
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Nadie ?????????????

Vaos foro algun aporte habra o solo son programadores??? animense a decir algo
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #3  
Antiguo 31-08-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
No comprendo demasiado bien la pregunta. Pero por lo que entiendo tienes dudas sobre como estructurar la base de datos en lo relativo al "Apoderado". ¿Es así?

Pues bien, si cada alumno va a tener varios parientes y solo uno de esos parientes va a ser apoderado entonces debería quedarte algo así.

Código SQL [-]
Create table Alumnos (
ID_Alumno Integer not null,   //Primary Key
Nombre Varchar,
Apellidos Varchar,
....)


Create table Familiares (
Id_familiar Integer not null,   //Primary Key
FamiliarDe Integer not null,   //F. Key
EsApoderador Boolean,
...)

Pero esto me da a pensar.... ¿contemplas la posibilidad de que un mismo familiar pueda ser apoderado a más de un alumno? en tal caso necesitarías de una tabla intermedia que una a Alumnos y Familiares para que tanto un alumno pueda tener varios familiares como que cada familiar pueda serlo de varios alumnos.

Código SQL [-]
Create table Alumnos (
ID_Alumno Integer not null,  //Primary Key
Nombre Varchar,
...)

Create table Familiares (
Id_familiar Integer not null,  //Primary Key
Nombre Varchar,
...)

Create table RelacionEntreAlumnosYFamiliares(
Id_DelAlumno integer not null,    //Primary Key
Id_DelFamiliar integer not null,   //Primary Key
Parentesco Varchar,
Es_Apoderado Boolean)

Última edición por champy fecha: 31-08-2012 a las 10:11:47.
Responder Con Cita
  #4  
Antiguo 31-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por david_uh Ver Mensaje
mi consulta seria estoy haciéndolo bien o que clases son las correctas o como debería ser modelado esto
Es que no se entiende bien lo que preguntas.
Además de que eso no son clases, esos son campos de tablas de una base de datos.
Responder Con Cita
  #5  
Antiguo 31-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por david_uh Ver Mensaje
Vaos foro algun aporte habra o solo son programadores??? animense a decir algo
Aquí somos programadores que escriben código con Object Pascal, con una sintaxis exquisita y clara. Esto nos ayuda a que cuando explicamos hacemos buen uso de las reglas ortográficas, empleamos las comas, puntos y demás separadores ortográficos perfectamente.
Tu por otro lado pareces que vienes de C porque tu texto no se entiende nada. Al escribir te saltaste casi todos los signos. No se puede seguir el sentido de tus oraciones y por tanto, no se llega a comprender tus ideas.

Además, no hay obligación de responderte, y tan sólo han pasado 2 días. En el foro se tratan miles de preguntas por vez y puede que a alguien se le haya olvidado o no pudo darse más tiempo para aportar al hilo. Los demás también tiene sus obligaciones.
Si estás tan apresurado entonces ve a lo de otro colega por tu zona y le pagas los debidos honorarios para que haga el análisis por ti.

Hay varias maneras de pedir las cosas. Y evidentemente no elegiste la mejor opción.

Por otro lado si estás declarando clases, y ya que tu al parecer eres un gran programador y todo un excelente profesional debieras haber declarado esa clase de forma correcta. Para algo existe UML:

Código:
+-------------+
| NOmbreClase |
+-------------+
| Atributos   |
+-------------+
| Métodos     |
+-------------+
O hasta se te podría haber aceptado algo menos sofisticado:
Código:
NOmbreClase
-----------
Atributos
-----------
Métodos
-----------
E igualmente se te entendería.

Lo tuyo parece algo más orientado a la declaración de unas tablas para una base de datos (más que nada debido a que se vislumbra un atributo-Campo ID en la tabla-clase Familiares, que tiene sentido sólo en base de datos dicho sea de paso; y los nombres para las clases siempre van en singular) que la declaración de unas clases. Y si bien en UML se acepta el uso de estereotipos, y existe uno para las bases de datos casi todos los profesionales lo consideran aberrante, exagerado. Constantemente se hace el debido llamado a emplear el DER que es más apropiado para hablar sobre el contexto de una base de datos.

Cuando dices:
Cita:
teniendo esas tres clase yo me pregunto Apoderado seria una subclase de Familiares o una clase producto de la relación entre estudiante y familiares osea una clase de relación es decir graficándolo en uml
Derrapas mal.
A ver, explícate, y ordena bien tus palabras... ¿Clase producto? ¿Clase de relación?
Cuando dices Clase, ¡te refieres exactamente a Clase según el paradigma OO, o más bién intentaste decir "tipo"?.
En la teoría OO/UML no existe el término "Clase de relación". Cuando dos clases se asocian entre si, y donde la cardinalidad puede leerse en ambos sentidos y existen atributos que podría ir en cualesquiera de ésta para formar la relación es que tenemos en el medio lo que se conoce como Clase Asociación y recibe los campos comunes y que permiten justamente romper con la ambigüedad. Y déjame decirte que posee una forma definida y contemplada en el estándar UML de representarla, como por ejemplo aquí. En ese ejemplo puede verse con una línea punteada como se relaciona esta clase con las otras dos.

Creo que es eso a lo que intentaste referirte. Pero leyendo tus textos la verdad es que me pierdo.
A mi parecer al que le hace falta aprender algunas cosas es a ti.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 31-08-2012
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
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:
PROCESO DE ALUMNOS NUEVOS

El apoderado llega a la institución solicitando informes, de acuerdo al nivel al que desea matricular a su apoderado se le entrega una ficha para que llene sus datos se le una fecha para una evaluación de conocimientos y psicológica, luego de lo cual se procede a una entrevista con la madre directora, después de eso se le da los resultados, en base a los resultados (obtenidos de las tres pruebas anteriores) se procede a efectuar la matrícula

PROCESO DE MATRICULA

Se procede a llenar una ficha de matrícula se le pide documentos (copia del dni del padre, la niña, carnet de vacunas, copia si es primaria o inicial) en caso de no tener DNI el menor se usa un código el cual es generado de la siguiente manera: año de nacimiento (02 dígitos)+código del colegio(inicial primaria secundaria)+nro de orden de matrícula, una vez hecho esto se procede a llenar sus datos, firma documentos, se le da documento de acreditación de alumna, se le informa de la fecha de inicio de labores, el proceso es el mismo para los tres niveles
Proceso de traslados externos
Normalmente se reciben hasta fines de septiembre, el proceso es similar al anterior

PROCESO DE CONTROL DE ASISTENCIA


El recojo de los partes de asistencia está a cargo de la encargada de normas educativas
Entonces el proceso de inscripción es uno y el de matrículas otro proceso separado, he aquí el diagrama de actividades de la Inscripción y de la matrícula, y estas son las clases que he creado a partir de el enunciado. aún las clases no contemplan atributos.

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
Responder Con Cita
  #7  
Antiguo 31-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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"
Responder Con Cita
  #8  
Antiguo 31-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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:

Código Delphi [-]
var: DirectoriaRenegona: Directora;
begin
 DirectoraRenegona.Entrevistar(AlumnoAsustado);
...
end;

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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 31-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
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!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #10  
Antiguo 31-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #11  
Antiguo 31-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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
Responder Con Cita
  #12  
Antiguo 31-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Chris Ver Mensaje
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!
Voy a hacer de cuenta que no dijiste nada

Cita:
Empezado por roman Ver Mensaje
Oye, Chris, por menos que esto, en cualquier bar de OOP purists ya te habrían apuñalado
Puñal, no... es poco. Yo siempre tengo a mano mi AK-47

Cita:
Empezado por roman Ver Mensaje
¿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
Es que el error está en los extremos... Se necesita vislumbrar las cosas desde al menos 4 puntos de vista: lógica, presentación, datos y la más difícil de todas: integral.
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #13  
Antiguo 31-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo de esto no sé. Realmente. Según recuerdo de cuando leí algunas cosas de Scott Ambler, una buena herramienta para iniciar una aplicación OOP son las CRC-Cards. El artículo de la wikipedia está muy chafa pero él lo describía mejor e indicaba que eran un medio muy bueno para hablar con los clientes.

Y es que, a mi me suena raro eso de que

Cita:
Para el usuario la interfaz lo es todo
Quizá para el usuario final, es decir, el que realmente va a lidiar con la aplicación todos los días, pero no para el cliente que encarga la aplicación. Éste entiende de procesos.

En fin, da para mucho.

// Saludos
Responder Con Cita
  #14  
Antiguo 31-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Yo de esto no sé. Realmente. Según recuerdo de cuando leí algunas cosas de Scott Ambler, una buena herramienta para iniciar una aplicación OOP son las CRC-Cards. El artículo de la wikipedia está muy chafa pero él lo describía mejor e indicaba que eran un medio muy bueno para hablar con los clientes.
Pues si, las tarjetas CRC son una de las opciones. Aunque hay que hacer la advertencia de que sólo son a modo de orientación o guía; aunque hay ciertos requisitos que dificilmente se pueden capturar en una tarjeta CRC. El problema de las tarjetas CRC está en que se condiciona a hablar en POO. Y hay ciertos clientes al que les cuesta entenderlas... El problema muchas veces está en que no se logra apreciar las clases. Es requisito fundamental contar con las clases para encarar las tarjetas.
Por este motivo se las suele complementar empleando los Casos de Usos, que logran capturar los procesos y luego de estas "historias" uno puede detectar las clases conceptuales y allí ya meterse con CRC.
Tanto CRC como los Casos de Usos son algunas de las técnicas empleadas para la recolección de requisitos... y aún así no todo se logra capturar o que sea fácil de asimilar. Por ello es que se adjuntan también los glosarios, tablas de especificaciones complementarias... incluso es hasta bueno o saludable tratar de entender el contexto analizando las visiones (como una lista de actores-objetivos).

Algo que tiene de bueno el enfoque de casos de uso es que ayuda a ordenar las cosas basándose en el contexto y los procesos. Para ello emplea una guía denominada Casos de Usos EBP (Elementary Business Processes). Es decir se resaltan las actividades y procesos más significativos y que aportan valor y significado al negocio, recolectando los datos que se necesita, quien lo hace, en que momento, y en respuesta a que evento.

De este modo ya el propio caso de uso te aporta y filtra el material para ir detectando las potenciales clases.

Tengo que contarte que las tarjetas CRC ya están quedando en desuso.

Hay otros enfoques que fuerzan a detectar si las cosas las estamos pensando bien... el diseño dirigido por contratos ayuda a determinar que operaciones se necesita para ir de un estado consistente a otro. Cuando uno define las condiciones iniciales y finales ya puede darse una idea de como son las interacciones entre las clases, el estado y asignaciones de cada objeto.

En fin que no se trata de una única cosa... hay un enorme arsenal de herramientas que uno puede tomar. Y luego es que algunos dicen que la Ingeniería de Software es una burla

Ya lo dijo Grady Booch:
Cita:
Las personas son más importantes que cualquier proceso.
Buenas personas con un buen proceso siempre actuarán mejor que buenas personas sin procesos.
Saludos,
PD: No hace falta decir que soy defensor de la ingeniería de software supongo
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #15  
Antiguo 01-09-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
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
Creo que david_uh, no se refería precisamente a la "TClass"... sino a la estructura de las tablas y la DB.

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!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #16  
Antiguo 01-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Chris Ver Mensaje
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.
Eso te va a traer cola


Aunque yo estoy de acuerdo
Responder Con Cita
  #17  
Antiguo 01-09-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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.
Responder Con Cita
  #18  
Antiguo 01-09-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Chris Ver Mensaje
Creo que david_uh, no se refería precisamente a la "TClass"... sino a la estructura de las tablas y la DB.
Entonces tenemos que darle un buen tirón de orejas para que llame a las cosas por su nombre.

Cita:
Empezado por Chris Ver Mensaje
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.
Que la interfaz sea lo que en última ve el cliente/usuario no le da el mérito para rechazar los otros aspectos.
¿De que carajo sirve tener una hermosa fachada si por dentro las bases no son sólidas?
Ubuntu es según muchos de los GNU puristas y de lo más entendidos es la peor distro que hay (con el debido perdón Casimiro) ¡Y Oye, es Linux! Pero que bonito se ve.

Cita:
Empezado por Chris Ver Mensaje
Un desarrollador o equipo experimentado puede crear una muy buena estructura interna usando la GUI como inspiración.
Patrañas. Una estructura interna o para decirlo como debe: la lógica, o más técnico: las capa de aplicación y/o dominio (si nos vamos al OO) se analiza y se piensa para actuar independiente de cualquier ventanita. Y es lo deseable.
Si tomas como base las ventanas estás añadiendo dependencia, en mayor o menor grado, con la lógica. Lo cual no es bueno frente a procesos de mejoras y/o de reingeniería.

Cita:
Empezado por Chris Ver Mensaje
Cuando hacía aplicaciones para Delphi, lo primero que desarrollaba era el diseño de las ventanas.
Curioso, yo dejo la interfaz para lo último.

Cita:
Empezado por Chris Ver Mensaje
De hecho, esos diseños me sugerían una buena estructura para empezar.
Y creo que ya he señalado los peligros de seguir a rajatabla eso...

Cita:
Empezado por Chris Ver Mensaje
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.
¡Y aquí señoras y señores el mejor ejemplo! Una ventana acoplada no sólo a la lógica sino a las operaciones delgadas y abstractas de la capa de datos.

Cita:
Empezado por Chris Ver Mensaje
Empezar con la GUI es trabajar de afuera hacía adentro. Empezar con los modelos es trabajar de dentro hacia afuera.
Eso es precisamente lo que hace diferencia a un programador de un ingeniero.

Cita:
Empezado por Chris Ver Mensaje
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!
¿Curioso no? Al que elabora los planos de los sistemas se los suele denominar arquitectos de software, o más formalmente analistas. Lo más curioso es que este análisis y los planos que elabora el analista es la primera etapa del trabajo que luego es enviada al programador para construya sobre él.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #19  
Antiguo 01-09-2012
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 17
david_uh Va por buen camino
Creo yo que lo mas saludable informáticamente hablando es empezar por el modelado del sistema, el modelado es lo que a una arquitectura de un edificio se refiere teniendo un modelo claro coherente con clases bien definidas con atributos y metodos bien pensados es la columna vertebral de cada sistema informático, estoy en desacuerdo de empezar creando interfaces(aunque funciona bien para pequeños sistemas), aunque es algo que esta ya en tu cabeza, estas ya pensando como sería tal o cual pantalla, eso es innegable es como un instinto natural pero lo racional es que primero lo modelemos, es por ello que postee mis clases para saber cuales irian o cuales estan demás, ahora yo estoy seguro que el modelado y la definición de las clases no tien mucho que ver con la estructura de talas aunque claro los modelos son parecidos y es por ello que aparece JPA por la similitud que existe pero no quiere decir que las tablas sean el reflejo de nuestras clases. corríjanme si me equivoco.

Ahora volviendo a mis clases que cree, en el modelo de clases Estudiante, EstudianteNuevo, y EstudianteAntiguo tienen diferente trato pues el nuevo tiene primero que inscribirse ser evaluado, mientras que el antiguo pues ya tiene una pre-matricula y solo se apersona a la institución a matricularse con la seguridad de que su vacante esta separada y solo pagara y llenara algunos datos ya que el grueso de su información ya figura en los registros.mi problema era con lo de apoderado ya que siendo una persona que es familiar del alumno o no, podría ser una persona que haya sido autorizada por los padres, tal ve3z la clase Familiares no debería tener ese nombre sino mas bien Encargados o habria que crear una clase adicional llmada Parentezco como lo muestra el diagrama sin embargo que atributos o como seria alguna sugerencia, gracias por sus aportes.

saludos

David
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #20  
Antiguo 01-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Delphius Ver Mensaje
Ubuntu es según muchos de los GNU puristas y de lo más entendidos es la peor distro que hay (con el debido perdón Casimiro) ¡Y Oye, es Linux! Pero que bonito se ve.
Sólo son envidias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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 17:54:33
¿Como podria programar un calendario? Nelly Varios 8 20-08-2006 05:59:34
¿Como podria hacer esto? slat Conexión con bases de datos 5 26-06-2004 19:08:51
Esto podría ser la frase de la semana, del mes, e incluso del año __cadetill Humor 3 03-07-2003 20:10:25


La franja horaria es GMT +2. Ahora son las 11:42:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi