You are on page 1of 22

2009

Una coleccin de prcticas y problemas que sirven


de apoyo al estudiante de ingeniera en el
aprendizaje del paradigma de Programacin
Orientada a Objetos.

Carlos Dario Arenas Yerena

{Esta pgina fue intencionalmente dejada en blanco}

Tabla de contenido
INTRODUCCIN ............................................................................................................................................ 4
RECURSOS DE PROGRAMACIN............................................................................................................. 5
PRCTICA #1 PUNTEROS ........................................................................................................................... 6
PRCTICA #2 CADENAS .............................................................................................................................. 8
PRCTICA #3 LA CLASE CCADENA .......................................................................................................10
PRCTICA #4 LISTA ENLAZADA-PARTE1 ............................................................................................11
PRCTICA #5 LISTA ENLAZADA-PARTE2 ............................................................................................12
PRCTICA #6 LISTA ENLAZADA-PARTE3 ............................................................................................14
PRCTICA #7 RBOL BINARIO ...............................................................................................................15
PRCTICA #8 RBOL BINARIO - RECORRIDOS .................................................................................16
PRCTICA #9 HERENCIA ..........................................................................................................................17
PRCTICA #10 POLIMORFISMO .............................................................................................................18
PRCTICA #11 FLUJOS DE DATOS Y SERIALIZACIN ....................................................................19
PROYECTO ....................................................................................................................................................21

Introduccin
Es muy importante comprobar que el alumno est instruido en resolver problemas y definir
sus soluciones. Por una parte est el examen terico y por otra el desarrollo de prcticas,
tareas y proyectos donde el estudiante construye las implementaciones de sus soluciones.
Es slo la implementacin lo que permite tener un programa til de computador y es
durante las prcticas, donde la habilidad del estudiante se desarrolla para adaptarse y ser
productivo en entornos industriales. Adems es muy importante que, en el desarrollo del
software de cualquier tipo, el estudiante est preparado para formar parte de un equipo de
trabajo. Algunas prcticas de este manual pueden ser muy simples, por lo que el mismo
estudiante puede resolverlos. Hay otras prcticas, sin embargo, en donde la complejidad de
la misma requiera de que varios estudiantes trabajen en equipo para poder realizarla.
Cada prctica est desarrollada de manera que se trabaje sobre los temas ms importantes
de la programacin orientada a objetos. En cada una se indican los objetivos de la prctica
y la cantidad de sesiones de laboratorio que se deben dedicar a esta.
La forma y contenido de los reportes quedarn definidos segn las indicaciones del
profesor que les asiste en el laboratorio, sin embargo al final de cada prctica en la seccin
Entregables se incluye un listado de elementos que es altamente recomendable se incluyan
en la evaluacin. La prctica no es una tarea en donde se deje solo al alumno sin la
asistencia del profesor, sin embargo el alumno debe de adelantar todo lo que le sea posible
antes de la sesin, puesto que usualmente las horas de laboratorio no son suficientes para
el desarrollo de la prctica.
Un consejo, que le doy al alumno antes de comenzar un curso: debe leer, investigar,
comprender y ser capaz de discernir fuentes de informacin tiles de las superfluas. Slo el
hbito de la lectura y la prctica de lo que aprendemos nos permite comprender la compleja
tecnologa moderna.
La forma en la que se implementan las soluciones a estas prcticas y problemas est muy
ligada a los mtodos de enseanza que el profesor utiliza durante la sesin de clase. Es
recomendable que se prepare al alumno en las disciplinas y estilos de codificacin. Esto se
hace al implantar normas de codificacin, la buena costumbre de comentar cdigo, as
como el diseo y redaccin de la documentacin asociada a las unidades de cdigo:
funciones, mtodos, estructuras y clases. Estas buenas costumbres permitirn desarrollar
productividad en el trabajo en equipo y evitar estrs para el alumno o integrantes del
equipo.
Antes de que el alumno resuelva las prcticas, antes incluso de escribir su primer lnea de
cdigo; el alumno debe dedicarse a comprender la prctica, el dominio del problema y la
estrategia para resolver el problema. Es muy importante que se identifiquen los dominios de
entrada y salida. Si es necesario el alumno o el equipo debern de aclarar los
requerimientos expresados en las prcticas con el profesor asistente. En la vida real, los
requerimientos comienzan siendo muy ambiguos y stos deben ser aclarados antes de
comenzar la codificacin de la solucin.

Recursos de programacin
Este manual tiene como objetivo, servir de apoyo en la enseanza del paradigma orientado
a objetos. Para la realizacin de estas prcticas es necesario el uso de herramientas: un
editor de texto y un compilador de C++. Existen entornos de desarrollo que integran las
herramientas antes mencionadas y adems incluyen herramientas varias para el desarrollo
de soluciones de software, de hecho yo recomiendo que su uso puesto que son estas las
herramientas que se utilizan en el mercado laboral.
Dos de los entornos de desarrollo de ms populares son MS Visual Studio 2008 Express y
DevC++. A continuacin incluyo los enlaces para su descarga:
Para descargar y conocer acerca de cmo instalar Microsoft Visual Studio 2008 Express
Edition visite el siguiente enlace:
http://www.microsoft.com/express/download/
Para descargar un excelente, fcil de usar y ligero compilador de C++ compatible con
Windows, recomendamos a Bloodshed Dev C++ en siguiente sitio web:
http://www.bloodshed.net/dev/devcpp.html

Prctica #1 Punteros
Duracin: 1 Sesin.

Objetivos:

Familiarizarse con el concepto de puntero.


Familiarizarse con la declaracin de punteros.
Entender el uso del operador de direccin (&).
Entender el uso del operador de indirecin (*).
Comprender que un puntador puede ser usado para trabajar con diferentes
variables a travs del tiempo.
Utilizar funciones con argumentos de salida mediante el uso de punteros.

Desarrollo:
Parte1:
Dentro de su funcin principal:
1. Declare dos variables enteras iX e iY.
2. Asigne a iX el valor 5.
3. Asigne a iY el valor 10.
4. Declare dos punteros a enteros pA.
5. Haga que pA apunte a iX.
6. Imprima iX.
7. Imprima a lo que apunta pA.
8. Imprima la direccin de memoria de iX.
9. Imprima pA.
10. Haga que pA apunte a iY.
11. Imprima iY.
12. Imprima a lo que apunta pA.
13. Imprima la direccin de memoria de iY.
14. Imprima pA.
Ejecute su programa y observe que 6 y 7 imprimen lo mismo. Explique porqu.
Observe tambin que 8 y 9 imprimen lo mismo. Explique porqu.
Observe tambin que 11 y 12 imprimen lo mismo. Explique porqu.
Observe tambin que 13 y 14 imprimen lo mismo. Explique porqu.

Parte2:
Implemente las siguintes funciones:
int Potencia(int iBase, int iExp)
Esta funcin eleva el nmero iBase a la potencia iExp y regresa el resultado
de la operacion.
Ejemplos de entradas-salidas:
iBase: 5
iExp: 0
Regresa: 1
iBase: 5
iExp: 1
Regresa: 5
iBase: 5
iExp: 2
Regresa: 25
iBase: 5
iExp: 3
Regresa: 125
void Potencia2(int* pBase, int iExp)
Esta funcin eleva a lo que apunta pBase a la potencia iExp almacenando el
resultado en la variable a la que apunta pBase.

Dentro de su funcin principal llame las funciones Potencia y Potencia2, observe y


analice los resultados.
NOTA: Usted deber disear e implementar el algoritmo para el clculo de la potencia,
por lo tanto no puede usar la funcin matemtica pow.

Entregables:

Algoritmos
Diagramas de flujo
Implementacin

Prctica #2 Cadenas
Duracin: 1 Sesin.

Objetivos:
Familiarizarse con la declaracin de arreglos.
Familiarizarse con la declaracin de cadenas.
Familiarizarse con las operaciones sobre cadenas.
Entender la relacin puntero-arreglo.
Entender el uso de operador ++ en punteros.
Entender el uso de operador [] en punteros.
Comprender el paso de arreglos como argumentos a las funciones.

Desarrollo:
Implemente una de las dos siguientes funciones:
void ImprimeVertical(char* pszCadena)
Esta funcin recibe una cadena e imprime un carcter por cada linea de
texto.
Ejemplo de entrada-salida:
Entrada:
Hola Mundo
Imprime:
H
o
l
a
M
u
n
d
o
Restriccin: para desplazarse atravs de la cadena debe utilizar el
operador ++ sobre un apuntador a carcter.
int Tamanio(char* pszCadena)
Esta funcin recibe una cadena y retorna la cantidad de caracteres de la
misma incluyendo los espacios en blanco.
Ejemplo de entrada-salida:
Entrada:
Hola Mundo
Retorna:
10
Implemente una de las tres siguientes funciones:
void ImprimeReves(char* pszCadena)
Esta funcin recibe una cadena y retorna la cantidad de caracteres de la
misma incluyendo los espacios en blanco.
Ejemplo de entrada-salida:
Entrada:
Hola Mundo

Imprime:
odnuM aloH
Restriccin: para desplazarse atravs de la cadena debe utilizar el
operador [] sobre un apuntador a carcter.
int Cuenta(char* pszCadena, char cContar)
Esta funcin recibe una cadena y retorna la cantidad apariciones del
carcter cContar.
Ejemplo de entrada-salida:
Entrada:
pszCadena: Hola Mundo cContar: o Retorna: 2
pszCadena: Hola Mundo cContar: h Retorna: 0
pszCadena: Hola Mundo cContar: H Retorna: 1
pszCadena: Hola Mundo cContar: u Retorna: 1
pszCadena: Hola Mundo cContar: z Retorna: 0
Restriccin: para desplazarse atravs de la cadena debe utilizar el
operador [] sobre un apuntador a carcter.
int PrimerAparicion(char* pszCadena, char cBuscar)
Esta funcin recibe una cadena y retorna la posicin de la primer
aparicion del carcter cBuscar. En caso de que el carcter cBuscar no
exista en la cadena regresa -1.
Ejemplo de entrada-salida:
Entrada:
pszCadena: Hola Mundo cBuscar: o Retorna: 2
pszCadena: Hola Mundo cBuscar: h Retorna: -1
pszCadena: Hola Mundo cBuscar: H Retorna: 1
pszCadena: Hola Mundo cBuscar: u Retorna: 7
pszCadena: Hola Mundo cBuscar: z Retorna: -1
Restriccin: para desplazarse atravs de la cadena debe utilizar el
operador [] sobre un apuntador a carcter.
Implemente una de las dos siguientes funciones:
int Concatenar(char* pszInOut, char* pszIn)
Esta funcin recibe dos cadenas y anexa a la cadena pszInOut la cadena
pszIn.
Ejemplo de entrada-salida:
Entrada:
pszInOut: Hola
pszIn: Mundo
Salida:
pszInOut tendr: HolaMndo
void Reves(char* pszCadena)
Esta funcin recibe una cadena e invierte el contenido de la misma.
Ejemplo de entrada-salida:
Entrada:
pszCadena: Hola Mundo
Salida:
pszCadena tendr: odnuM aloH

Entregables:

Algoritmos
Diagramas de flujo
Implementacin

Prctica #3 La Clase CCadena


Duracin: 1 Sesin.

Objetivos:

Comprender las ventajas de la POO.


Familiarizarse con el concepto de clase.
Familiarizarse con el uso de clases.
Comprender el encapsulamieto.
Comprender los modos de acceso public y private.
Comprender el uso de los mtodos accesores Set y Get.
Comprender la existencia y el uso del puntero this.
Comprender el concepto propiedad.
Comprender el concepto mtodo.

Desarrollo:
Cree una Clase denominada CCadena.
Agregue la propiedad privada m_szCadena a la clase CCadena, m_szCadena ser
un arreglo de 128 caracteres.
Agregue los mtodos:
void SetCadena(char* pszIn)
Este mtodo recibe copia en m_szCadena el contenido de pszIn.
char* GetCadena()
Este mtodo regresa la direccin de inicio de m_szCadena.
En la prctica pasada usted ha implementado al menos tres funciones de manejo de
cadenas, todas ellas tienen como primer argumento a char *pszCadena, y trabajan
con el contenido de esta cadena.
Implemente como mtodos de su clase CCadena las funciones que implemento en la
prctica pasada, pero en esta ocasin no recibirn como pszCadena parmetro, este
parmetro es innecesario puesto que la clase CCadena ya contiene su propia cadena
m_szCadena y por lo tanto debe trabajar con ella.
Los mtodos equivalentes a las funciones de la prctica pasada quedaran as:
void ImprimeVertical()
int Tamanio()
void ImprimeReves()
int Cuenta(char cContar)
int PrimerAparicion(char cBuscar)
int Concatenar(char* pszIn)
Esta funcin recibe una cadena y la anexa al contenido de la cadena
m_szCadena.
void Reves()

Entregables:

Diagrama de Clases
Implementacin

Prctica #4 Lista Enlazada-Parte1


Duracin: 1 Sesin.

Objetivos:

Familiarizarse con el uso de diagramas de clases para la especificacin del


diseo.
Comprender la asignacin dinmica de memoria.
Familiarizarse con el uso de los operadores new y delete.
Comprender el uso del constructor y el destructor.

Desarrollo:
Implemente las siguientes clases:
CNodo
-pSiguiente : CNodo*
-pAnterior : CNodo*
-iContenido : int
+InsertarAdenante(entrada iData : int) : void
+Borrar() : int
CLista
-Inicio : CNodo
-Final : CNodo
+InsertarInicio(entrada iData : int) : void
+InsetarFinal(entrada iData : int) : void
+IsEmpty() : bool
+Size() : int
+CLista()
+~CLista()
+Imprime() : void

CNodo::InsertarAdelante crea un nuevo nodo, le asigna iData como


iContenido al nuevo nodo, por ltimo inserta el nuevo nodo delante del nodo actual.
CNodo::Borrar Borra el nodo actual.
CLista::InsertarInicio crea un nuevo nodo, le asigna iData como
iContenido al nuevo nodo, por ltimo inserta el nuevo nodo al inicio de la lista.
CLista::InsertarFinal crea un nuevo nodo, le asigna iData como
iContenido al nuevo nodo, por ltimo inserta el nuevo nodo al final de la lista.
CLista::IsEmpty devuelve true solo cuando la lista esta vaca.
CLista::Size devuelve el numero de elementos en la lista.
CLista::Imprime Imprime el contenido de la lista.
CLista() -CONSTRUCTOR- Crea una lista enlazada e inicializa sus enlaces.
~CLista()-DESTRUCTOR- Destruye la lista asegurndose primero de eliminar todo
lo que esta contenga.

Entregables:

Algoritmos
Diagramas de flujo
Implementacin

Prctica #5 Lista Enlazada-Parte2


Duracin: 1 Sesin.

Objetivos:

Comprender el patrn de diseo Iterador como herramienta de acceso a los


elementos de una lista.
Comprender la sobrecarga de operadores.

Desarrollo:
Parte 1
Implemente los siguientes mtodos en la clase CLista:
CLista::Begin devuelve la direccin del nodo siguiente
CLista::Inicio.
CLista::End devuelve la direccin del nodo CLista::Final.

Implemente la siguiente clase:


CIterador
-pNodo : CNodo*
+Avanza() : void
+Retrocede() : void
+SetNodo(entrada pListNodo : CNodo*) : void
+GetNodo() : CNodo*

CIterador::Avanza mueve el iterador al siguiente elemento de la lista.


CIterador::Retrocede mueve el iterador al elemento anterior de la lista.
CIterador::SetNodo Apunta el iterador al nodo que se le pasa como
parmetro.
CIterador::GetNodo regresa la direccin del nodo al que apunta el iterador.
Para utilizar el Iterador sobre una lista es necesario apuntarlo a un nodo en ella, para eso
se utiliza el metodo SetNodo de la clase CIterador y el mtodo Begin de
CLista. El mtodo End de CLista se utiliza para saber si el iterador ya ha llegado al
inicio de la lista.

Parte 2
Sobrecargue los operadores de incremento postfijo (++), decremento postfijo (--),
asignacin (=) e indirecin (*) con la funcionalidad de Avanza, Retrocede,
SetNodo y GetNodo respectivamente.
Implemente el siguiente mtodo en la clase CLista:
CLista::Buscar(iElemento CLista) : int este mtodo busca la primer
aparicin del elemento iElemento y regresa la posicin del elemento dentro
de la lista. Si el elemento no se encuentra en la lista regresa -1. Restriccin:
deber implementar primero la clase CIterador y utilizarla para la bsqueda.

Entregables:

Implementacin
Diagrama de clases actualizado.

Prctica #6 Lista Enlazada-Parte3


Duracin: 1 Sesin.

Objetivos:

Comprender e implementar el mtodo de ordenamiento burbuja.


Comprender e implementar el mtodo de ordenamiento insercin.

Desarrollo:
Implemente los siguientes mtodos en la clase CLista:
CLista::OrdenarBurbuja ordena el contenido de la lista utilizando para
ello el mtodo de burbuja.
CLista::OrdenarInsercion ordena el contenido de la lista utilizando para
ello el mtodo de insercin. Restriccin: utilice el iterador.

Entregables:

Algoritmos
Diagramas de flujo
Implementacin
Diagrama de clases actualizado.

Prctica #7 rbol Binario


Duracin: 1 Sesin.

Objetivos:

Comprender la estructura rbol binario.


Implementar un rbol binario.

Desarrollo:
Implemente un rbol binario bajo las siguientes clases:
CTreeNode
-int ikey : int
-pRigth : CTreeNode*
-pLeft : CTreeNode*

CTree
-pRoot : CTreeNode*
+Insert(entrada iVal : int) : void
+Find(entrada iVal : int) : bool
+delete(entrada iVal : int) : bool

CTree::Find regresar verdadero slo cuando el valor iVal pertenezca al


rbol.
CTree::Delete si el valor iVal pertenece al rbol lo eliminar y regresar
true, en cualquier otro caso regresar false.

Entregables:

Algoritmos
Diagramas de flujo
Implementacin

Prctica #8 rbol Binario - Recorridos


Duracin: 1 Sesin.

Objetivos:

Comprender e implementar los recorridos pre-orden, in-orden y post-orden en


rboles binarios.
Disear soluciones recursivas a problemas que as lo requieran.

Desarrollo:
Implemente los siguientes mtodos en su clase CTree:
CTree::ImprimePreOrden Imprimir el contenido del rbol en pre-orden.
CTree::ImprimeInOrden Imprimir el contenido del rbol en orden.
CTree::ImprimePostOrden Imprimir el contenido del rbol en post-orden.

Entregables:

Algoritmos
Diagramas de flujo
Implementacin
Diagrama de clases.

Prctica #9 Herencia
Duracin: 1 Sesin.

Objetivos:

Comprender el concepto de clase base.


Comprender el concepto de clase derivada.
Comprender el concepto de clase utilera.
Comprender la relacin Es un (Herencia).
Comprender la relacin Tiene un (Composicion).
Comprender la herencia como mecanismo de reutilizacin de cdigo.
Comprender el modificador de acceso protected.

Desarrollo:
Implemente el las clases indicadas en el siguiente diagrama:
CVehiculoConRuedas
-nRuedas : int
-strColor : CCadena
+Imprime() : void

CBicicleta
-iRodado : int

CCadena

CAutomovil
-strModelo : CCadena

1
1
Motor
-Cilindros : int
-Cilindrada : int

CVehiculoConRuedas::Imprime() Imprime Esto es un vehiculo, la cantidad


de ruedas y el color del vehiculo.
CBicicleta::Imprime() Imprime Esto es una bicicleta y por lo tanto ES UN
vehiculo la cantidad de ruedas, el color y el rodado de la bicicleta.
CAutomovil::Imprime() Imprime Esto es un Automovil y por lo tanto ES UN
vehiculo, ademas este automovil TIENE UN motor, la cantidad de ruedas, el color del
vehiculo, el numero de cilindros de su motor y la cilindrada del motor.

Entregables:

Diagrama de clases actualizado.


Implementacin

Prctica #10 Polimorfismo


Duracin: 1 Sesin.

Objetivos:

Comprender el concepto de polimorfismo.


Comprender el uso de la palabra reservada virtual.
Comprender el concepto de delegacin.

Desarrollo:
Parte1
Modifique su lista enlazada de forma que sus nodos almacenen punteros a
CVehiculoConRuedas y no enteros.
Implemente el metodo CLista::Imprime(), este mtodo deber imprimir Esto es
una lista y CONTIENE: y la descripcin de todos y cada uno de los elementos de la
lista, para imprimir la descripcin de los objetos CLista::Imprime() deber de
llamar el mtodo imprime de los objetos que almacena, es decir que CADA OBJETO
ES RESPONSABLE DE SU IMPRESION.
Introduzca 5 objetos en su lista asegrese de introducir objetos del tipo CBicicleta y
CAutomovil.
Imprima su lista. Observe el resultado, Est imprimindose lo que esperaba? Explique
porqu.

Parte 2
Modifique el mtodo CVehiculoConRuedas::Imprime() para que sea vitual.
Vuelva a imprimir su lista. Observe el resultado, Est imprimindose lo que esperaba?
Explique porqu.

Entregables:

Diagrama de clases actualizado.


Implementacin

Prctica #11 Flujos de Datos y Serializacin


Duracin: 1 Sesin.

Objetivos:

Comprender el concepto flujo.


Comprender el patrn de diseo Interfaz.
Comprender el concepto de clase abstracta.
Comprender el uso de mtodos virtuales puros.
Comprender el concepto de flujo de entrada.
Comprender el concepto de flujo de salida.
Comprender las operaciones bsicas sobre flujos.
Comprender y utilizar tcnicas de serializacin.

Desarrollo:
Cree una clase CSerializable, esta clase no contendr propiedad alguna y tendr
solamente un mtodo:
virtual void CSerializable::Serializar(iostream& refStream,
bool bRead) = 0;
al igualar este mtodo a cero estamos asegurndonos de que este mtodo no se
implementara en esta clase, a este tipo de mtodos se les denomina virtuales puros. Los
mtodos virtuales puros convierten a la clase que los contiene en clases abstractas, las
clases abstractas no pueden ser instanciadas directamente, por lo tanto es necesario
derivarlas. A las clases abstractas que solamente contienen mtodos virtuales puros se
les conoce como interfaces.
Derive las clases CLista y CVehiculoConRuedas de CSerializable.
Modifique su clase CLista para que contenga elementos de tipo CSerializable.
Implemente el mtodo serializar en CLista.
Implemente el mtodo serializar en CVehiculoConRuedas y todas sus clases
derivadas.
En su programa principal:
Instancie un objeto de la clase fstream, nmbrelo dBase.
En esta prctica utilizaremos un archivo para almacenar datos, este archivo se
llamara DataBase.txt.
Cree una lista.
Su programa principar deber las siguientes opciones:
Abrir:
Abra el archivo DataBase.txt en modo lectura con el objeto dBase. Si el
archivo no existe informe al usuario del error.
Serialice(cargue) su lista desde dBase.
Cierre el flujo dBase.
Llenar Lista:
Inserte en su lista al menos 5 objetos, asegrese de introducir objetos del
tipo CBicicleta y CAutomovil.
Insertar objeto:
Inserta un nuevo objeto en la lista. Los datos del objeto los introduce el
usuario.
Imprimir:

Imprime el contenido de la lista.


Guardar:
Abra el archivo DataBase.txt en modo escritura con el objeto dBase. Si
el archivo no existe crelo.
Serialice(guarde) su lista hacia dBase.
Cierre el flujo dBase.
Ejecute su programa, seleccione la opcin Llenar lista, seleccione la opcin
guardar lista.
Abra el archivo DataBase.txt y cercirese de que contiene los elementos que
inserto en ella.
Ejecute su programa y seleccione la opcin cargar, ahora su lista contendr los
elementos que se le introdujeron en la ejecucin anterior, imprmala y cercirese
de que as sea. Inserte dos nuevos elementos en la lista y gurdela.
Abra el archivo DataBase.txt y cercirese de que contiene tanto los elementos
que recin inserto como los elementos insertados anteriormente.
Ejecute su programa y seleccione la opcin cargar, ahora su lista contendr los
elementos que se le introdujeron en las dos ejecuciones anteriores, imprmala y
cercirese de que as sea.

Entregables:

Diagrama de clases actualizado.


Implementacin

PROYECTO
Duracin: 4 Sesiones.
Este proyecto deber realizarse en equipos de 4 personas.

Objetivos:

Fomentar el trabajo de equipo.


Poner en prctica todos los conceptos aprendidos a lo largo de este curso.
Disear una solucin a un problema real.

Desarrollo:
Se necesita una base de datos, esta base de datos deber contener al menos tres tablas,
estas tablas debern estar relacionadas entre s.
La base de datos deber ser serializable.
Deber de implementar a menos dos tipos de consultas para la base de datos. Estas
consultas debern mostrar elementos de diferentes tablas.
El programa principal deber dar facilidades para la introduccin, eliminacin y
bsqueda de elementos en la base de datos.
El programa principal deber dar acceso a las consultas en la base de datos.
El programa principal deber mostrar las opciones Cargar y Guardar base de datos.
El diseo concreto de la base de datos podr ser propuesto por el alumno, en cuyo caso
ser el maestro el que de el visto bueno. En caso de que el alumno no desee proponer un
diseo ser el maestro el que lo proporcione. Todas las bases de datos de todos los
equipos debern ser diferentes.
Ejemplo de base de datos: Llamadas Recibidas
Tablas:
Tabla de contactos. Contiene como su nombre lo indica los datos de los
contactos.
Tabla de llamadas. Contiene el registro de las llamadas recibidas, ID del
contacto, hora de la llamada, asunto, etc.
Tabla de tipos de contacto. Contiene dos campos: Tipo de contacto y Id
del contacto.
Consultas:
Llamadas de X contacto: esta consulta mostrara todas las llamadas que ha
realizado el contacto de nombre X.
Llamadas de tipo contacto: muestra todas las llamadas realizadas por
todos los contactos de cierto tipo.

Sesiones

La primera sesin se dedicar a la explicacin de los requerimientos las bases de


datos.
Las siguientes dos sesiones se dedicarn a asesoras acerca del diseo y la
implementacin de las bases de datos.
La cuarta sesin se dedicar a la revisin de las bases de datos.

Entregables:

Estudio de requerimientos.
Diagrama de clases.
Implementacin.
Manual de usuario.
Asignacin de responsabilidades en equipo.
Reporte de actividades de cada miembro del equipo.
Reporte de aplicacin de conceptos. En este se deber incluir un anlisis de
cmo y en donde han sido aplicados en el proyecto los conceptos, tcnicas y
patrones de diseo vistos en este curso.