Introducción al lenguaje Java Práctica Editor de Línea



Documentos relacionados
10. El entorno de publicación web (Publiweb)

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Manual Oficina Web de Clubes (FBM)

Capítulo 9. Archivos de sintaxis

Curso de Java POO: Programación orientada a objetos

Práctica 7. Pruebas. Introducir conceptos básicos de pruebas unitarias en sistemas orientados a objetos.

Aplicación informática para la redacción de instrucciones de uso y mantenimiento.

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

UNIDAD I PROCESADOR DE TEXTOS

Vicerrectorado de Planificación, Calidad, Responsabilidad Social y Comunicación

Herramientas CONTENIDOS. MiAulario

2_trabajar con calc I

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Aclaraciones sobre el tipo de envío y el tipo de transacción del trabajador a cumplimentar en los ficheros de comunicación XML

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Wikis Trabajando en una Wiki

NOVEDADES VERSIÓN 32103

MANUAL DE USO DE SMART DFD

Operación Microsoft Access 97

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Datalogging bajo Robolab.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Curso 2006/2007 Estructura de Datos y de la Información I. Informática, I. T. Informática de Gestión y de Sistemas PRÁCTICA 2

Introducción a la Programación en MATLAB

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Recursos de Aprendizaje

Parte 2 - Consultas SQL + Modelo Entidad-Relación 2.0

Manual de rol gestor de GAV para moodle 2.5

TPVFÁCIL. Caja Real. Definiciones.

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE USO DEL WEB DE LA REVISTA PARA LOS AUTORES

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

Tutorial: Primeros Pasos con Subversion

Prototipo de un sistema. interactivo de soporte y ayuda a los compradores de un centro. comercial de equipamiento del hogar

[FRACCIONAMIENTO DE FICHA TÉCNICA Y PROSPECTO CON COMPLEMENTO DE WORD]

IAP CONSIDERACIONES PARTICULARES SOBRE LA AUDITORÍA DE LAS EMPRESAS DE REDUCIDA DIMENSIÓN

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Cierre y Apertura de ejercicio. Gestión - Contabilidad

TEMA 1. MANEJO DE PROCESADOR DE TEXTOS: Microsoft WORD 2003


PROCEDIMIENTOS DE TÍTULOS. Para solicitar los títulos al finalizar determinadas enseñanzas es preciso seguir un proceso en la aplicación Plumier XXI.

Segunda práctica de Programación 2

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Guía paso a paso para la cumplimentación del formulario de candidatura

MANUAL DE USUARIO CONSEJO PUEBLA DE LECTURA A.C. Instituto Nacional de Astrofísica, Óptica y Electrónica. 01/Octubre/2009

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

/05/2009

SRM RELACIÓN CON LOS PROVEEDORES MANUAL DEL SUMINISTRADOR. Junio Versión 2

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

Instrucciones de solicitud de reconocimiento. Curso 2015/16

Creación de Funciones de Conducción

2. Entorno de trabajo y funcionalidad en Arquímedes

Introducción a las Redes de Computadoras. Obligatorio

Base de datos en Excel

Manual del Usuario Groupware

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

MANUAL DE USUARIO NOTAS PARCIALES VIA INTRANET

Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014

EDUCASTUR BLOG. Comunidad Educativa de Blogs. Formatear el texto de un artículo

Introducción a la Computación TFA

Arquitectura de Aplicaciones

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Anexo B. Comunicaciones entre mc y PC

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Gestión de Retales WhitePaper Noviembre de 2009

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Operación de Microsoft Word

Resumen. Funcionamiento. Advertencia

Copia de Seguridad en windows

efactura Online La fibra no tiene competencia

Escudo Movistar Guía Rápida de Instalación Para Windows

Ejercicios - Persistencia en Android: ficheros y SQLite

Actividad 4: Comunicación entre PLC s vía Ethernet

Domiciliación SEPA. Carlos Gomáriz 15/07/2014 V02 rev08

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

SISTEMA DE GESTIÓN DE INCIDENCIAS Y REQUERIMIENTOS MESA DE AYUDA SINAT MANUAL DE USUARIO

MANUAL DE AYUDA MÓDULOS 2011 MACOS

MANUAL DE AYUDA MÓDULO PDA ALMACEN E INVENTARIO

Curso de Comandos VI.

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

ADMISIÓN DE ALUMNOS CICLOS FORMATIVOS DE GRADO DE MEDIO

Kepler 8.0 USO DEL ERP

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

Selección de los puntos de montaje

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

M a n u a l Inventarios

Cómo rellenar y enviar el formulario de solicitud de admisión para los procesos selectivos del Banco de España

Gestión de Ficheros en ruralvía Recibos

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Reglas de Uso del PACE

Transcripción:

Introducción al lenguaje Java Práctica Editor de Línea (Diciembre 2006) 1 Introducción al lenguaje Java Práctica Editor de Línea Dpto. LSIIS. Unidad de Programación Normas y Objetivos Objetivo: el objetivo de esta práctica es la familiarización del alumno con la programación orientada a objetos en Java. Para ello, se deberá implementar un editor de línea simple. Evaluación: La práctica se realizará de forma individual. La nota que se obtenga en esta práctica será la nota final de la asignatura. Se mantendrá el mismo enunciado de práctica para las demás convocatorias de este curso académico. Entrega: La entrega de las implementaciones se realizará a través de la página web: http://lml.ls.fi.upm.es/entrega Fecha límite: el plazo límite es el día 16 de Febrero de 2007 a las 10:00. Código Auxiliar: La realización de esta práctica requiere la utilización de los ficheros auxiliares que se pueden encontrar en: http://lml.ls.fi.upm.es/ijava/materiales/practica/codigo Publicación de Notas: La publicación de las notas de la práctica se anunciará a través del foro de la asignatura. Detección Automática de Copias: Cada práctica entregada se comparará con el resto de prácticas entregadas en todos los grupos de la asignatura. Esto se realizará utilizando un sofisticado programa de detección de copias. Consecuencias de haber copiado: Todos los alumnos involucrados en una copia, bien por copiar o por ser copiados, quedan inhabilitados para presentarse a todas las convocatorias de examen del presente curso, además de la posible apertura de expediente académico. 1. Editor de linea En esta práctica, el alumno deberá implementar en Java el comportamiento de un editor de línea simple. El editor ejecutará comandos sobre una secuencia de caracteres (string) dada inicialmente. El editor tendrá un estado interno que contendrá: El texto que se está editando. La posición del cursor en el momento actual. Una cola para implementar las operaciones copiar y pegar. Una pila para implementar la operación deshacer. Los comandos a la entrada vienen representados por un caracter y en algunos casos llevan un argumento separado por un espacio (escribir y sobrescribir), y son:

2 Práctica Editor de Línea (Diciembre 2006) Introducción al lenguaje Java Comando Operación Texto antes Texto después Comentario > avanzar...vw......vw... < retroceder...vw......vw... b borrar...vw......w... Pone al final del string un blanco e x escribir...vw......xvw.. Borra el último caracter del string (blanco) s x sobrescribir...vw......xw... c copiar...vw......vw... El caracter v se ha copiado al portapapeles p pegar...vw......cvw.. El primer caracter del portapapeles era c d deshacer Deshace modificaciones al texto a aceptar Acepta los cambios hasta ahora El subrayado en el texto indica la posición del cursor. Todo carácter leído que no se corresponda con un comando se ignorará. Obsérvese que los comandos no modifican el tamaño del string, ya que cuando se añade un caracter, se elimina el último, que debe ser un blanco ( ), y cuando se borra un caracter, se añade al final un blanco. Las situaciones de error se pueden dar porque algunas de las operaciones tienen una precondición, que en caso de no cumplirse producirá un error. En ambos casos el procedimiento a programar deberá devolver el estado de error adecuado. Los errores posibles son: Código de salida Explicación En operaciones Error_Final_Texto Estamos al final avanzar Error_Principio_Texto Estamos al principio retroceder Error_Lleno No hay espacio (no hay un blanco al final) escribir, pegar Error_Imposible_Pegar El portapapeles está vacío pegar Error_Imposible_Deshacer No hay nada que deshacer deshacer Correcto No ha habido error Cualquiera El error Error_Final_Texto no se produce al escribir, copiar ni pegar porque cuando estamos al final del texto el cursor en ese caso no se mueve. La operación borrar tampoco produce errores, porque borra el caracter en la posición del cursor sin mover éste (no es backspace sino delete ). El portapapeles del editor puede albergar un número indefinido de caracteres, todos los que se copien con la operación copiar antes de ejecutar el correspondiente pegar. Los caracteres se pegarán en el mismo orden en el que fueron copiados. De ahí que haya que utilizar una cola para implementar el portapapeles. La operación deshacer deshará únicamente operaciones que modifiquen el texto, por lo tanto no servirá para deshacer operaciones que solamente cambien la posición del cursor (operaciones avanzar o retroceder), o el portapapeles (copiar). En consecuencia, sólo las operaciones borrar, escribir, sobrescribir y pegar pueden ser deshechas. Dado que se pueden deshacer un número ilimitado de cambios, para implementar la operación se usará una pila en donde guardaremos la operación realizada. El cursor, después de cada deshacer, se quedará en la posición en donde la operación inversa se haya ejecutado. La operación aceptar acepta todos los cambios introducidos en el texto, de forma que ya no se podrán deshacer (olvidamos todos los cambios que hemos hecho hasta ahora). 2. Ejemplos de ejecución de comandos A continuación se muestran ejemplos de ejecución de comandos. Si el texto inicial de un ejemplo es igual al texto final del precedente, se supone que es una continuación de los comandos anteriores (lo cual tiene utilidad si se ejecutan operaciones deshacer). En los casos en los que se produce un error, ese error ha sido provocado por el último comando de la secuencia de comandos, que evidentemente no es aplicado a la línea de texto.

Introducción al lenguaje Java Práctica Editor de Línea (Diciembre 2006) 3 Comandos Texto inicial Texto final Error? 1234567890 1234567890 >>> e j e o " " " jo" Correcto << s a > b " jo" " ao " Correcto e t e i " ao " " ato" Error_Lleno <<<ccc> e l pppp "hola " "hola lola " Error_Imposible_Pegar cc>pcpp "bueno " "buebnuno" Correcto cc>pcpp "bueno " "buebnuo" Error_Lleno << b e x c << s i < p>> "datos " "dastis " Correcto << b e x c << s i < p "datos " "dastis " Correcto >> d "dastis " "datis " Correcto d "datis " "datxs " Correcto d "datxs " "dats " Correcto e h "dats " "daths " Correcto dd "daths " "datos " Correcto d "datos " "datos " Error_Imposible_Deshacer e + a d "54 " "5+4 " Error_Imposible_Deshacer 3. Diseño En el diagrama de clases que se incluye en este apartado se muestran las clases que deben formar parte de la implementación de la práctica. Junto con el enunciado de la práctica, se proporciona el código de la clase ProcesarPrueba y el enumerado NotificacionProceso. La clase ProcesarPrueba contiene el main, y se encarga de proporcionar una batería de casos de prueba al método prueba de la clase PruebaEditor. Los ficheros de los casos de prueba se llaman datos?.dat. Los casos de prueba proporcionados no son exhaustivos, por lo tanto el alumno deberá diseñar más casos de prueba con el fin de asegurarse de la corrección de su práctica. El método prueba recibe los comandos proporcionados en cada caso de prueba (parámetro comandos), y se los debe aplicar por orden de aparición al texto proporcionado como entrada en el caso de prueba. El método prueba finalizará su ejecución, o cuando haya evaluado todos los comandos, o cuando al evaluar uno de los comandos, se genere un error. Si la evaluación de todos los comandos resulta ser correcta, el procedimiento prueba devuelve el valor Correcto y en el parámetro texto el estado final de la línea de texto. En cambio, si se produce algún error al evaluar uno de los comandos, el método prueba devuelve el tipo de error generado, y en el parámetro texto el estado final de la línea de texto cuando se generó el error.

4 Práctica Editor de Línea (Diciembre 2006) Introducción al lenguaje Java

Introducción al lenguaje Java Práctica Editor de Línea (Diciembre 2006) 5 Cada vez que el método prueba lea un comando, debe crear el objeto del tipo de operación que corresponda a ese comando, y luego debe llamar al método procesar (clase Editor), que a su vez llamará al método ejecutar (interfaz Operación). Como se puede deducir del diagrama de clases, cada clase que implementa la interfaz Operacion, debe implementar un método ejecutar, que lógicamente debe ser diferente en cada clase. En aras de la claridad del diagrama de clases, se han omitido los métodos constructores y los métodos get y set. Sin embargo, esto no significa que no sean necesarios en la implementación de la práctica. La pila piladeshacer y la cola portapapeles se pueden implementar utilizando la clase genérica Stack 1 y la clase genérica LinkList 2 respectivamente, que están disponibles en la API de Java 1.5. 4. Ficheros a entregar El alumno deberá entregar un fichero practica.jar que contenga los ficheros proporcionados y además, un fichero PruebaEditor.java y un paquete Editor que, a su vez, contenga los siguientes ficheros: Editor.java, Operacion.java, Avanzar.java, Retroceder.java, Deshacer.java, Copiar.java, OperacionReversible.java Escribir.java, Sobreescribir.java, Borrar.java y Pegar.java. El código fuente debe estar debidamente comentado con formato javadoc. Asimismo, se deberán incluir en el fichero practica.jar los ficheros html generados con la utilidad javadoc. 1 véase un ejemplo de utilización en http://www.java2s.com/code/javaapi/java.util/newstacke.htm 2 véase un ejemplo de utilización en http://www.java2s.com/code/javaapi/java.util/newlinkedliste.htm