viernes, 27 de septiembre de 2013

CLASES Y ATRIBUTOS EN VISUAL BASIC


1. CONSTRUCTOR DE UNA CLASE: Un constructor es una subrutina cuya misión es inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo objeto.
Se utiliza para crear tablas de clases virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos. Al utilizar un constructor, el compilador determina cuál de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.

2. DESTRUCTOR DE UNA CLASE: Un destructor en programación orientada a objetos es una función miembro especial llamadas automáticamente en la ejecución del programa, y por tanto no tienen por qué ser llamadas explícitamente por el programador. Sus principales cometidos son:
- Liberar los recursos computacionales que el objeto de dicha clase haya adquirido en su tiempo de ejecución al expirar éste.
- Quitar los vínculos que pudiesen tener otros recursos u objetos con éste.
Los destructores son invocados automáticamente al alcanzar el flujo del programa el fin del ámbito en el que está declarado el objeto.

4. Como definir una clase:
4.1. Cree un proyecto haciendo clic en Nuevo proyecto en el menú Archivo. Aparecerá el cuadro de diálogo Nuevo proyecto.

4.2. Seleccione Aplicación para Windows de la lista de plantillas del proyecto de Visual Basic para mostrar el nuevo proyecto.

4.3. Agregue una clase nueva al proyecto haciendo clic en Agregar clase en el menú Proyecto. Aparecerá el cuadro de diálogo Agregar nuevo elemento.

4.4. Seleccione la plantilla Clase.

4.5. Asigne a la nueva clase el nombre UserNameInfo.vb y, a continuación, haga clic en Agregar para mostrar el código de la nueva clase.

VB
Public Class UserNameInfo
End Class

4.6. Defina un campo privado para la clase; para ello, agregue el siguiente código entre las instrucciones Class y End Class:

VB
Private userNameValue As String

4.7. Defina una propiedad para la clase agregando el código siguiente:

Public Property UserName() As String
    Get
        ' Gets the property value.
        Return userNameValue
    End Get
    Set(ByVal Value As String)
        ' Sets the property value.
        userNameValue = Value
    End Set
End Property

4.8. Defina un método para la clase agregando el código siguiente:
 
Public Sub Capitalize()
    ' Capitalize the value of the property.
    userNameValue = UCase(userNameValue)
End Sub

4.9. Defina un constructor parametrizado para la clase nueva agregando un procedimiento denominado Sub New:

Public Sub New(ByVal UserName As String)
    ' Set the property value.
    Me.UserName = UserName
End Sub
 
Cuando se crea un objeto basado en esta clase, se llama al constructor Sub New automáticamente. Este constructor establece el valor del campo que contiene el nombre de usuario.

5. METODO CONSTRUCTOR: Toda clase debe tener lo que se denomina un método constructor, que es el primero que se ejecuta cuando es instanciado un objeto de la clase, y en él se escribe el código de inicialización para el objeto.

Dentro de VB.NET el método constructor para una clase se debe llamar New( ).

6. INSTANCIA DE UNA CLASE: Una vez que tenemos una clase definida, lo único de lo que disponemos es de una especie de plantilla o molde a partir del cual podemos crear objetos en memoria.
Lo podemos hacer de dos formas, pero como veremos siempre será mediante la instrucción new que es la encargada de crear el objeto en la memoria y asignar la dirección del mismo a la variable usada en la parte izquierda de la asignación.
Declarar primero la variable y después instanciarla.

Lo primero que tenemos que hacer es declarar una variable del tipo que queremos instanciar, esto lo hacemos de la misma forma que con cualquier otro tipo de datos:

Cliente cli1;

Con esta línea de código lo que estamos indicando es que tenemos intención de usar una variable llamada cli1 para acceder a una clase de tipo Cliente. Esa variable, cuando llegue el momento de usarla, sabrá todo lo que hay que saber sobre una clase Cliente, pero hasta que no tenga una "referencia" a un objeto de ese tipo no podremos usarla.

La asignación de una referencia a un objeto Cliente la haremos usando la instrucción new seguida del nombre de la clase:

cli1 = new Cliente();

A partir de este momento, la variable cli1 tiene acceso a un nuevo objeto del tipo Cliente, por tanto podremos usarla para asignarle valores y usar cualquiera de los miembros que ese tipo de datos contenga:

cli1.Nombre = "Antonio";
cli1.Apellidos = "Ruiz Rodríguez";

cli1.Saludar();





viernes, 20 de septiembre de 2013

Investigación de Conceptos de Programación Orientada a Objetos

1. HERENCIA: La herencia es uno de los mecanismos de los lenguajes de programación orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación).

Dependiendo del lenguaje que se utilice, el diseñador también puede controlar qué miembros de las superclases son visibles en las subclases. En el caso de java y C++ los especificadores de acceso (private, protected, public) de los miembros de la superclase afectan también a la herencia:

-          Private: Ningún miembro privado de la superclase es visible en la subclase.
-          Protected: Los miembros protegidos de la superclase son visibles en la subclase, pero no visibles para el exterior.
-          Public: Los miembros públicos de la superclase siguen siendo públicos en la subclase.

- Herencia simple: Una clase sólo puede heredar de una clase base y de ninguna otra.
- Herencia múltiple: Una clase puede heredar las características de varias clases base, es decir, puede tener varios padres. En este aspecto hay discrepancias entre los diseñadores de lenguajes. Algunos de ellos han preferido no admitir la herencia múltiple debido a que los potenciales conflictos entre métodos y variables con igual nombre, y eventualmente con comportamientos diferentes crea un desajuste cognitivo que va en contra de los principio de la programación orientada a objetos.

EJEMPLO: programación en Java

import javax.*;
import javax.swing.JOptionPane;
public class Mamifero{    
    private int patas;
    private String nombre;
    public void imprimirPatas(){
      JOptionPane.showMessageDialog(null," Tiene " + patas + " patas\n", "Mamifero", JOptionPane.INFORMATION_MESSAGE);
    }
    public Mamifero(String nombre, int patas){
      this.nombre = nombre;
      this.patas = patas;
    }
}
public class Perro extends Mamifero {
    public Perro(String nombre){
      super(nombre, 4);
    }
}
public class Gato extends Mamifero {
    public Gato(String nombre){
      super(nombre, 4);
    }
}
public class CrearPerro {
    public static void main(String[] args) {
      Perro perrito = new Perro("Pantaleon");
      perrito.imprimirPatas();   /*Está en la clase mamífero*/
    }
}

2. POLIMORFISMO: En programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.

Se puede clasificar el polimorfismo en dos grandes clases:
Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes de poder ser utilizados.

EJEMPLO:




3. ENCAPSULAMIENTO: se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.

Como se puede observar de los diagramas, las variables del objeto se localizan en el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos en el programa.

FORMAS DE ENCAPSULAR:

1.       Estándar (Predeterminado)
2.       Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y cualquier parte del programa.
3.       Protegido: Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel).
4.       Semi cerrado: Solo es accesible desde la clase heredada
5.       Cerrado: Solo es accesible desde la Clase.

En el encapsulamiento hay analizadores que pueden ser semánticos y sintácticos.

EJEMPLO:

  
4. ABSTRACCION: Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control).

A grandes rasgos, la abstracción, permite que dispongamos de las características de un objeto que necesitemos. Si necesitamos el objeto Persona, podríamos poner nombre, edad, dirección, estado civil, etc. Si lo necesitamos en un sistema administrativo, pero, si lo requerimos para el área de biología, dentro de sus atributos quizá tengamos, ADN, RND, Gen x1, Gen x2, etc., y los atributos antes mencionados no sean requeridos. En general, podemos decir que Persona cuenta con todos los atributos mencionados aquí, pero por el proceso de abstracción excluimos todos aquellos que no tienen cabida en nuestro sistema. Se define como un método por el cual se rescatan los datos relevantes y se ignoran los irrelevantes.

EJEMPLO: Modelizaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.





5. INTERFAZ: Esta noción se utiliza para nombrar a la conexión física y funcional entre dos sistemas o dispositivos de cualquier tipo dando una comunicación entre distintos niveles.

Además, la palabra interfaz se utiliza en distintos contextos:

1.       Interfaz como instrumento: desde esta perspectiva la interfaz es una "prótesis" o "extensión" (McLuhan) de nuestro cuerpo. El ratón es un instrumento que extiende las funciones de nuestra mano y las lleva a la pantalla bajo forma de cursor. Así, por ejemplo, la pantalla de una computadora es una interfaz entre el usuario y el disco duro de la misma.

2.       Interfaz como superficie: algunos consideran que la interfaz nos trasmite instrucciones ("affordances") que nos informan sobre su uso. La superficie de un objeto (real o virtual) nos habla por medio de sus formas, texturas, colores, etc.

3.       Interfaz como espacio: desde esta perspectiva la interfaz es el lugar de la interacción, el espacio donde se desarrollan los intercambios y sus manualidades.

EJEMPLO:



6. CLASE: Es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El modelo describe el estado y contiene el comportamiento que todos los objetos creados a partir de esa clase tendrán. Un objeto creado a partir de una determinada clase se denomina una instancia de esa clase.

Es un conjunto coherente que consiste en un tipo particular de metadatos. Una clase tiene una interfaz y una estructura. La interfaz describe cómo interactuar con la clase y sus instancias con métodos, mientras que la estructura describe cómo los datos se dividen en atributos dentro de una instancia. Una clase también puede tener una representación (metaobjeto) en tiempo de ejecución, que proporciona apoyo en tiempo de ejecución para la manipulación de los metadatos relacionados con la clase. En el diseño orientado a objetos, una clase es el tipo más específico de un objeto en relación con una capa específica.


EJEMPLO:

 
 



















7. ATRIBUTOS: Un atributo es una característica de la clase.

EJEMPLO:
Clase cliente.
Atributos nombre, apellido.

-En java creas los atributos de la siguiente forma: Tipo de dato nombre Atributo.

EJEMPLO:
String nombre,  String Apellido.

El atributo debe tener una forma de asignar valor y de obtener valor.

EJEMPLO:
AsignarNombre(), ObtieneNombre()
AsignarApellido(), ObteneApellido()
Eso es lo único que hace el atributo, asignar un valor u obtenerlo.

En síntesis, el Atributo o propiedad, son las características de las clases.

8. METODO: Un método por su parte. Es un conjunto de sentencias que hacen algo específico en la clase.

EJEMPLO:
Insertar cliente();
Para definir un método en Java: Ámbito TipoDeDato  NombreMetodo().

EJEMPLO:
Public void insertaCliente()

El cuerpo del método hace cosas con los atributos, los inserta en una base de datos, los muestra por pantalla, los pasa a otro método para ser procesados y demás.

Los métodos son como pequeños programas que pertenecen a una misma clase,

En síntesis, Los métodos, son las instrucciones que manejan los atributos o propiedades.

9. INSTANCIA: Se refiere a una realización específica de una clase o prototipo determinados.
En general, cuando se ejecuta un programa en un computador, se dice que éste se instancia. En lenguajes que crean objetos a partir de clases, un objeto es una instancia de una clase. Esto es, es un miembro de una clase que tiene atributos en lugar de variables.
En un contexto del mundo real, podríamos pensar en "Perro" como una clase y en un perro concreto en una instancia de esta clase.

EJEMPLO:



10. AGREGACION: Es una relación que se derivó de la asociación, por ser igualmente estructural, es decir que contiene un atributo, que en todos los casos, será una colección, es decir un Array, Vector, Collections, etc, y además de ello la clase que contiene la colección debe tener un método que agregue los elementos a la colección.

11. CONCURRENCIA: Es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí.
Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia es simulada si sólo existe un procesador encargado de ejecutar los procesos concurrentes, simulando la concurrencia, ocupándose de forma alternada en uno y otro proceso a pequeñísimos intervalos de tiempo. De esta manera simula que se están ejecutando a la vez.


EJEMPLO:


12. PERSISTENCIA: Es la capacidad del programador para conseguir que sus datos sobrevivan a la ejecución del proceso que los creo, de forma que puedan ser reutilizados en otro proceso. Cada objeto, independiente de su tipo, debería poder llegar a ser persistente sin traducción explicita. También, debería ser implícito que el usuario no tuviera que mover o copiar los datos expresamente para ser persistentes.

EJEMPLO:


martes, 6 de agosto de 2013

PROYECTOS Y TIPOS DE REQUISITOS

REQUISITO FUNCIONAL: Define una función del sistema de software o sus componentes. Una función es descrita como un conjunto de entradas, comportamientos y salidas. Los requerimientos funcionales pueden ser: cálculos, detalles técnicos, manipulación de datos y otras funcionalidades específicas que se supone, un sistema debe cumplir. Los requerimientos de comportamiento para cada requerimiento funcional se muestran en los casos de uso. Son complementados por los requisitos no funcionales, que se enfocan en cambio en el diseño o la implementación.
Como se define en la ingeniería de requisitos, los requisitos funcionales establecen los comportamientos del sistema.

Típicamente, un analista de requisitos genera requisitos funcionales luego de diagramar los casos de uso. Sin embargo, esto puede tener excepciones, ya que el desarrollo de software es un proceso iterativo y algunos requisitos son previos al diseño de los casos de uso. Ambos elementos (casos de uso y requisitos) se complementan en un proceso bidireccional.
Un requisito funcional típico contiene un nombre y un número de serie único y un resumen. Esta información se utiliza para ayudar al lector a entender por qué el requisito es necesario, y para seguir al mismo durante el desarrollo del producto.

El núcleo del requisito es la descripción del comportamiento requerido, que debe ser clara y concisa. Este comportamiento puede provenir de reglas organizacionales o del negocio, o ser descubiertas por interacción con usuarios, inversores y otros expertos en la organización.

EJEMPLO: A continuación se presentan algunos ejemplos de estos requerimientos funcionales para un sistema de biblioteca universitario, denominado LIBSYS, utilizado por estudiantes y personal docente que solicitan libros y documentos de otras bibliotecas.

1. El usuario deberá tener la posibilidad de buscar en el conjunto inicial de la base de datos o seleccionar un subconjunto de ella.

2. El sistema deberá proporcionar visores adecuados para que el usuario lea documentos en el almacén de documentos.

3. A cada pedido se le deberá asignar un identificador único (ID_PEDIDO), que el usuario podrá copiar al área de almacenamiento permanente de la cuenta.

REQUISITO NO FUNCIONAL: Un requisito no funcional o atributo de calidad es, en la ingeniería de sistemas y la ingeniería de software, un requisito que especifica criterios que pueden usarse para juzgar la operación de un sistema en lugar de sus comportamientos específicos, ya que éstos corresponden a los requisitos funcionales. Por tanto, se refieren a todos los requisitos que ni describen información a guardar, ni funciones a realizar.

Algunos ejemplos de requisitos no funcionales típicos son los siguientes:
·         rendimiento
·         disponibilidad
·         seguridad
·         accesibilidad
·         usabilidad
·         estabilidad
·         portabilidad
·         costo
·         operatividad
·         interoperabilidad
·         escalabilidad
·         concurrencia
·         mantenibilidad
·         interfaz

EJEMPLO: Si un sistema de vuelo no cumple sus requerimientos de fiabilidad, no se certificará como seguro para el funcionamiento; si un sistema de control de tiempo real no cumple sus requerimientos de rendimiento, las funciones de control no funcionarán correctamente.

1. Requerimientos del producto: Estos requerimientos especifican el comportamiento del producto. Algunos ejemplos son los requerimientos de rendimiento en la rapidez de ejecución del sistema y cuánta memoria se requiere; los requerimientos de fiabilidad que fijan la tasa de fallos para que el sistema sea aceptable; los requerimientos de portabilidad, y los requerimientos de usabilidad.

2. Requerimientos organizacionales: Estos requerimientos se derivan de políticas y procedimientos existentes en la organización del cliente y en la del desarrollador. Algunos ejemplos son los estándares en los procesos que deben utilizarse; los requerimientos de implementación. Como los lenguajes de programación o el método de diseño a utilizar, y los requerimientos de entrega que especifican cuándo se entregará el producto y su documentación.

3. Requerimientos externos: Este gran apartado incluye todos los requerimientos que se derivan de los factores externos al sistema y de su proceso de desarrollo. Éstos pueden incluir los requerimientos de interoperabilidad que definen la manera en que el sistema interactúa con sistemas de otras organizaciones; los requerimientos legislativos que deben seguirse para asegurar que el sistema funcione dentro de la ley.


Los requerimientos éticos: Estos últimos son puestos en un sistema para asegurar que será aceptado por sus usuarios y por el público en general.


ALCANCE DE UN PROYECTO

El alcance de un proyecto es la suma total de todos los productos y sus requisitos o características. Se utiliza a veces para representar la totalidad de trabajo necesitado para dar por terminado un proyecto.
En la gestión de proyectos tradicional, las herramientas para describir el alcance del producto de un proyecto son: la estructura de descomposición del producto (EDP o PBS) y las descripciones del mismo. La herramienta primaria para describir el alcance del trabajo en un proyecto es la estructura de descomposición del trabajo.
Si los requisitos del proyecto no se definen totalmente, si no se describen bien o si no hay un control de cambios eficaz, puede sobrevenir entonces un arrastre de alcance o requisitos, y generarse lo que se conoce como el síndrome del lavadero.

EJEMPLO: NOMBRE PROYECTO: CERO PAPEL

Implementar una política de cero papeles dentro de la compañía Colombia Insurance que incluye:

Disminuir los costos fijos anuales como mínimo en un 12% por comprade: Papel, tóner, ganchos, carpetas y otros ítems incluidos en elinventario como papelería, comunicaciones y fotocopias.

•Incrementar la satisfacción del cliente, usuario final e interno en un 1%.

•Disminuir los tiempos de procesamiento de la información a la mitad delos actualmente establecidos.

•Contribuir con el medio ambiente optimizando el uso de los recursos de papelería en los diferentes procesos.

•Generar una cultura de confianza con la información recibida a nivel nacional y consolidado en la casa matriz en Bogotá Con el proyecto se busca la optimización de recursos físicos, la reducción de costos operacionales y el mejoramiento de la imagen corporativa de laempresa soportada en el cuidado del medio ambiente. No incluye la compra de nuevos equipos de oficina, ni estudios para cambios en la estructura organizacional de la empresa.

MODULO

En programación un módulo es una porción de un programa de computadora. De las varias tareas que debe realizar un programa para cumplir con su función u objetivos, un módulo realizará, comúnmente, una de dichas tareas (o varias, en algún caso).
En general (no necesariamente relacionado con la programación), un módulo recibe como entrada la salida que haya proporcionado otro módulo o los datos de entrada al sistema (programa) si se trata del módulo principal de éste; y proporcionará una salida que, a su vez, podrá ser utilizada como entrada de otro un módulo o bien contribuirá directamente a la salida final del sistema (programa), si se retorna al módulo principal.
Particularmente, en el caso de la programación, los módulos suelen estar (no necesariamente) organizados jerárquicamente en niveles, de forma que hay un módulo principal que realiza las llamadas oportunas a los módulos de nivel inferior.
Cuando un módulo es convocado, recibe como entrada los datos proporcionados por otro del mismo o superior nivel, el que ha hecho la llamada; luego realiza su tarea. A su vez este módulo convocado puede llamar a otro u otros módulos de nivel inferior si fuera necesario; cuando ellos finalizan su tareas, devuelven la salida pertinente al módulo inmediato llamador, en secuencia reversa, finalmente se continúa con la ejecución del módulo principal.

Módulo de tareas

Puede especificarse la fecha final de entrega de una tarea y la calificación máxima que se le podrá asignar, los estudiantes pueden subir sus tareas (en cualquier formato de archivo) al servidor. Se registra la fecha en que se han subido, se permite enviar tareas fuera de tiempo, pero el profesor puede ver claramente el tiempo de retraso, para cada tarea en particular, puede evaluarse a la clase entera (calificaciones y comentarios) en una única página con un único formulario, Las observaciones del profesor se adjuntan a la página de la tarea de cada estudiante y se le envía un mensaje de notificación, y el profesor tiene la posibilidad de permitir el reenvío de una tarea tras su calificación.

Módulo de consulta

Es como una votación. Puede usarse para votar sobre algo o para recibir una respuesta de cada estudiante (por ejemplo, para pedir su consentimiento para algo). El profesor puede ver una tabla que presenta de forma intuitiva la información sobre quién ha elegido qué y se puede permitir que los estudiantes vean un gráfico actualizado de los resultados.

Módulo foro

Hay diferentes tipos de foros disponibles: exclusivos para los profesores, de noticias del curso y abiertos a todos.
Todos los mensajes llevan adjunta la foto del autor. Las discusiones pueden verse anidadas, por rama, o presentar los mensajes más antiguos o los más nuevos primero, el profesor puede obligar la suscripción de todos a un foro o permitir que cada persona elija a qué foros suscribirse de manera que se le envíe una copia de los mensajes por correo electrónico, el profesor puede elegir que no se permitan respuestas en un foro (por ejemplo, para crear un foro dedicado a anuncios), el profesor puede mover fácilmente los temas de discusión entre distintos foros.

Módulo diario

Los diarios constituyen información privada entre el estudiante y el profesor.
Cada entrada en el diario puede estar motivada por una pregunta abierta, la clase entera puede ser evaluada en una página con un único formulario, por cada entrada particular de diario, los comentarios del profesor se adjuntan a la página de entrada del diario y se envía por correo la notificación.
Módulo cuestionario
Los profesores pueden definir una base de datos de preguntas que podrán ser reutilizadas en diferentes cuestionarios, las preguntas pueden ser almacenadas en categorías de fácil acceso, y estas categorías pueden ser "publicadas" para hacerlas accesibles desde cualquier curso del sitio. Los cuestionarios se califican automáticamente, y pueden ser recalificados si se modifican las preguntas, los cuestionarios pueden tener un límite de tiempo a partir del cual no estarán disponibles. El profesor puede determinar si los cuestionarios pueden ser resueltos varias veces y si se mostrarán o no las respuestas correctas y los comentarios, las preguntas y las respuestas de los cuestionarios pueden ser mezcladas (aleatoriamente) para disminuir las copias entre los alumnos. Las preguntas pueden crearse en HTML y con imágenes. Las preguntas pueden importarse desde archivos de texto externos. Las preguntas pueden tener diferentes métricas y tipos de captura.

Módulo recurso

Admite la presentación de un importante número de contenido digital, Word, Powerpoint, Excel, Flash, vídeo, sonidos, etc. Los archivos pueden subirse y manejarse en el servidor, o pueden ser creados sobre la marcha usando formularios web (de texto o HTML), pueden enlazarse aplicaciones web para transferir datos.

Módulo encuesta

Se proporcionan encuestas ya preparadas (COLLES, ATTLS) y contrastadas como instrumentos para el análisis de las clases en línea. Se pueden generar informes de las encuestas los cuales incluyen gráficos. Los datos pueden descargarse con formato de hoja de cálculo Excel o como archivo de texto CSV. La interfaz de las encuestas impide la posibilidad de que sean respondidas sólo parcialmente. A cada estudiante se le informa sobre sus resultados comparados con la media de la clase.

Módulo wiki

El profesor puede crear este módulo para que los alumnos trabajen en grupo en un mismo documento.
Todos los alumnos podrán modificar el contenido incluido por el resto de compañeros.
De este modo cada alumno puede modificar el wiki del grupo al que pertenece, pero podrá consultar todos los wikis.
El wiki sirve como base para mantener comunicación constante con los integrantes de un grupo de estudio.