2011-06-01 16 views
8

Para mi tarea, estoy implementando un sistema de registro de cursos para una universidad e implementé una clase simple para Currículo con lista de semestres y otras propiedades como nombre del departamento, créditos totales, etc.¿Qué estructura de datos usaría para un currículo de un departamento en una universidad?

Pero estoy preguntándome si puedo heredar esta clase de una estructura de datos gráficos con bordes y vértices.

¿Alguien hizo cosas similares antes?

mi diseño actual es algo como esto:

public class Curriculum 
{ 
    public string NameOfDepartment { get; set; } 
    public List<Semester> Semesters { get; set; } 

    public bool IsProgramDesigned { get; set; } 

    public Curriculum() 
    { 
     IsProgramDesigned = false; 
    } 

    // 
    public string AddSemester(Semester semester) 
    { 
+3

¿Por qué quiere heredar de una estructura de datos de gráfico? – IndigoDelta

+0

que me llevaría a aplicar algoritmos de gráficos más adelante .. solo me preguntaba, quiero diseñarlo con algo avanzado. Espero que no me preguntes por qué querría los algoritmos de gráficos – Kubi

+0

¿Qué tipo de algoritmos de gráficos necesitas aplicar a esta estructura? – Magnus

Respuesta

2

Como arquitecto de empresa, no utilizaría ninguna estructura gráfica para estos datos. Esta información es una lista y nada más.

Para un problema similar a este, la única razón por la que alguna vez consideraría usar una estructura de gráfico sería crear potencialmente la relación de los requisitos del curso y los requisitos previos.

De esta forma, podría usar el algoritmo de gráfico para determinar si es válido que un alumno se registre en una clase asegurándose de que sea una adición válida al árbol. Lo mismo para eliminar clases, podría validarse para asegurarse de que no esté abandonando una clase y permaneciendo inscrito en el laboratorio para el ejemplo de la clase.

Ahora si realmente iba a implementar esto. Todavía tendría una lista general de clases que tienen una clave para el vértice en la representación del gráfico. Una cosa a tener en cuenta es que los algoritmos de gráficos son sobre el jugador más pesado que puedes lanzar en una base de datos, por lo que minimizar la cantidad de trabajo realizado para sacar el gráfico siempre es clave. Dependiendo del tamaño y alcance, también evaluaría si pudiera almacenar gráficos completos en forma serializada o usar una base de datos de documentos por el mismo motivo.

Cuál en este ejemplo sería la ruta más probable que tomaría. Guardaría el objeto completo de los requisitos previos de los requisitos y así sucesivamente en línea con mi objeto del curso. Dado que el gráfico es un evento establecido y hecho, no es necesario realizar un recorrido gráfico real y es mejor que guarde el gráfico precalculado.

+0

gracias por la entrada. En mi solución estoy guardando el Currículo Específico para un departamento en una tabla db y lo guardo en otra tabla llamada currículos de estudiantes que tiene una relación de muchos a muchos con el estudiante y los objetos del plan de estudios cuando hay un registro de estudiantes. El administrador también puede crear un nuevo plan de estudios. Pero tendré que ocuparme del registro de cursos con algunas funciones adicionales de esta manera. Lo que me preguntaba es si esta clase de currículo podría diseñarse de una mejor manera si utilizo un Gráfico o Conjunto y esperaba a alguien que ya haya tratado antes y lo comparta aquí. – Kubi

+0

por ejemplo, tengo un método CheckPrerequisites (Lista , Semester) que tiene 3 bucles anidados en su interior. Estoy revisando cada curso de requisito previo si se toma y califica antes, antes de registrar un curso. Tengo que lidiar con otras restricciones, como el recuento de cursos especiales. Si un estudiante toma al menos 4 de esos cursos, se certificará como un xx especial o etc. – Kubi

+0

para la tarea que está bien, pero solo está pensando en una mejor manera de reducir el costo de la memoria. – Kubi

0

sí se puede heredar esta clase de una estructura de datos del gráfico. Puedes convertirlo en una subclase de lo que quieras (excepto una clase sellada). La cuestión de si es un diseño inteligente o no es totalmente dependiente de lo que desea hacer. Supongo que sabes cómo, así que comenta si necesitas un ejemplo de cómo implementar la herencia.

SI quiere escribir sus propios algoritmos de gráficos, ¿por qué no modelarlos usted solo? Probablemente sea un ejercicio divertido.

+0

Ya he desarrollado primero una aplicación de marco de entidades y presenté mi proyecto. Sé cómo heredar y mi C# es bastante bonita. Aquí estoy buscando un diseño. ¿Conoces alguna clase de gráfico implementada en C# para que yo pueda heredar? Tenía un ojo en Codeplex. – Kubi

+0

@Kubi ¿qué tipo de gráficos quieres hacer?Un diseño de tabla para datos, un gráfico de barras, gráficos circulares, etc. ... –

+0

quise decir esto http://en.wikipedia.org/wiki/Graph_%28data_structure%29 – Kubi

Cuestiones relacionadas