Programación Orientada a Objetos 1 Proyecto de Laboratorio de POO Se debe definir e implementar una nueva clase para manipular cadenas de caracteres. La nueva clase se llamará str (del término en Inglés: string). La definición de este nuevo tipo de datos es simple, pero a la vez es una buena herramienta para aclarar los conceptos presentados en clase. En la práctica se debería utilizar la clase string de C++ estándar, que se ha utilizado en ejemplos y pruebas. Se incluyen como ayuda, en archivos adjuntos: El interfaz mínimo necesario para la clase str, en el archivo string1.h. Las operaciones que se desea de esta clase con ejemplos de su uso, en el archivo string1.h. La implementación de los operadores de inserción y extracción, en el archivo string1.cpp. Una función main que permitirá probar las nueva clase, en el archivo proyecto.cpp. Tareas a realizarse: Como parte de las tareas a realizarse, se deberá: Implementar lo definido en el interfaz de la clase str. Incluir comentarios de forma adecuada y siguiendo los lineamientos indicados en el material de lectura para cada función. Comprobar los resultados con ayuda de la función main proporcionada. Documentar adecuadamente la idea general del diseño en el archivo string1.h Los archivos de la clase str y el archivo proyecto.cpp pueden requerir algún ajuste, debido a errores de sintaxis y/o ortografía. En el caso de proyecto.cpp, puede ser necesario ajustar el formato de los mensajes de salida para obtener mejores resultados en pantalla, en lo referente a formato, como el alineamiento de los mensajes. Indicaciones generales: El proyecto es por grupo (de dos personas, de acuerdo a los grupos formados en el laboratorio). La fecha de entrega es el Miércoles, 12 de junio de 2002, personalmente en el Laboratorio y a la hora de clases. Si por alguna razón no hay clases, de cualquier forma se deberá entregar el deber. Ayuda: En el interfaz de la clase puede notarse las variables: char *arreglo; int longitud; int maximo; Preparado por Iván Bernal, Ph.D. 14/11/2015 Escuela Politécnica Nacional Programación Orientada a Objetos 2 El arreglo de char será en donde se almacenarán los caracteres de la cadena. Este es el arreglo a manipularse de forma dinámica usando los operadores new y delete. No es aceptable definir un valor gigantesco para asumir luego que cualquier cadena de entrada puede ser contenida en el espacio reservado para el arreglo. Lo que si es aceptable es definir un valor como 10, en el instante de la creación para el constructor sin parámetros. Luego cuando se asigne algunos caracteres, se deberá decidir si este valor es suficiente o no. Para aclarar la idea del párrafo anterior, supongamos que se tiene un objeto que contenga en su arreglo unos 15 caracteres; si ahora se agrega otro objeto con 20 caracteres al de 15, el resultante debería almacenar los 35 caracteres, sus 15 originales y los nuevos 20. Una posible solución sería: 1. Crear un nuevo arreglo de 50 elementos, asumiendo que se deja un espacio para crecimiento. 2. Copiar el arreglo de 15 elementos en el de 50. 3. Copiar el arreglo de 20 elementos en el de 50, luego de los 15 del paso anterior. 4. Destruir el arreglo original de 15. En este caso entonces quedan (50-35=15) para agregar mas caracteres individuales o un objeto conteniendo hasta 15 caracteres. Si se sobrepasa el límite de 50 se debería repetir el proceso descrito anteriormente. Aquí entonces no es aceptable en lugar de 50 usar 1000 ó cualquier número grande. Siempre se puede asignar una cadena de caracteres más grande que cualquier máximo que se asuma. Dado que se tiene opción de crecimiento, se debe entender que se debe tener variables que controlen cuánto del arreglo está usado, y cuál es el máximo de caracteres que se puede aceptar. Para esto servirían las variables longitud y maximo. Preparado por Iván Bernal, Ph.D. 14/11/2015 Escuela Politécnica Nacional