Sie sind auf Seite 1von 13

Práctica de

Lenguajes de Programación

Escuela Técnica Superior de


Ingeniería Informática
UNED
Curso 2009-2010
Enunciado de la Práctica

Introducción

El objetivo principal del desarrollo de esta práctica consiste en la comprensión y aplicación de


los conceptos básicos del paradigma de programación orientado a objetos: herencia,
polimorfismo, modularidad, encapsulación, etc.

Para la correcta aplicación de los conceptos anteriores se propone el desarrollo de un


programa que analice y represente algunas de las características léxico/sintácticas de un
documento de texto. Una vez representado el texto del documento mediante una jerarquía de
clases, se proporcionará al usuario un conjunto de opciones que permitan consultar dichas
características así como modificar el contenido del documento.

Se propone utilizar una metodología de desarrollo incremental que permita dividir el


desarrollo en fases claramente diferenciadas, de forma que se mejore el proceso de
comprensión por parte del alumno.

Se considera parte fundamental del desarrollo de la práctica el alcanzar los siguientes


objetivos:

• Familiarización con la programación orientada a objetos (POO): definición de clases e


instancias, uso de la herencia, definición/uso de métodos estáticos y abstractos.

• Realización del diseño orientado a objetos de un problema.

• Desarrollo incremental dividido en fases, donde el alumno deberá ser capaz de


describir los conocimientos adquiridos en cada una de las fases.

La práctica deberá ser implementada en Java 2 Standard Edition (J2SE). El compilador de Java
así como todas las herramientas para el correcto desarrollo de la práctica pueden descargarse
desde http://java.sun.com. Además como entorno de desarrollo se recomienda el uso de BlueJ
(http://www.bluej.org/). Este entorno de desarrollo está orientado a estudiantes que
comienzan su aprendizaje dentro del paradigma de orientación a objetos. Para usuarios más
avanzados existen otras posibilidades como Eclipse (http://www.eclipse.org/) o Netbeans
(http://www.netbeans.org/).

La asignatura dispone de una dirección en Internet en la que hay un apartado dedicado a


prácticas. Aquí se incluye información relativa a la planificación y seguimiento de las prácticas,
así como el enunciado. La dirección de Internet es la siguiente:
http://www.lsi.uned.es/lp/practica.html.

2
Funcionalidad Básica

La funcionalidad básica de la práctica consiste en el desarrollo de un programa que analice el


contenido de un documento de texto (ver ejemplo en Figura 1) y una vez analizado presente
un conjunto de opciones al usuario de forma que pueda consultar o modificar el contenido del
documento.

El documento de entrada deberá ser un fichero de texto plano, en dicho documento se


podrán encontrar los siguientes elementos:

Elementos Básicos:

Consonante: b c d f g h j k l m n ñ p q r s t v w x y z
Vocal: a e i o u á é í ó ú
Número: 0 ..9.
Símbolo: . _ - , ; : fin_línea espacio_blanco

Elementos Compuestos:

Número Compuesto: Agrupación de uno o más números.


Palabra:
o Agrupación de dos o más consonantes y/o vocales.
o Agrupación de al menos una consonante y/o al menos una vocal junto con uno
o más números.
Frase: Conjunto de Elementos Básicos y/o números compuestos y/o Palabras. Una
frase acaba cuando se encuentra un símbolo punto.
Párrafo: Conjunto de frases. Los párrafos se separan por una línea en blanco.
Página: Conjunto de párrafos. El símbolo fin de página se especifica mediante dos
líneas consecutivas en blanco.

Cada aparición de cada uno de los elementos anteriores en el documento, deberá almacenarse
junto con su posición de inicio y fin. Además los elementos compuestos deberán incluir un
identificador único para todo el documento. De esta forma por ejemplo el párrafo con
identificador 2, será el segundo párrafo del documento, y la palabra con identificador 96 será
la palabra 96 dentro del documento.

Deberá tenerse en cuenta que el sistema no distinguirá entre mayúsculas y minúsculas, y de


forma equivalente a las vocales acentuadas. Es decir para el sistema a, A, y á son elementos
equivalentes.

De esta forma el programa deberá leer un documento con el formato anteriormente descrito,
y a partir de los elementos que encuentre construir una jerarquía de objetos que represente la
aparición de cualquier tipo de elemento de los descritos y su posición dentro del fichero. Una
vez construida dicha estructura no se deberá en ningún caso volver a leer el documento
fuente, además debe existir la posibilidad de guardar en disco la estructura que describe dicho
documento. El objetivo es que leyendo el documento una única vez se construya una

3
estructura suficientemente descriptiva, que pueda ser guardada para su posterior consulta sin
la necesidad de acceder al fichero de texto origen.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vel massa
eget ipsum feugiat facilisis. In at magna urna 456, convallis rhoncus nulla.
Cras non pharetra lorem. Vestibulum non mauris in ipsum imperdiet cursus
scelerisque nec nisl.

Vestibulum diam urna, tempor ac porta sed, pulvinar ut nisl. Donec velit
diam, tincidunt id facilisis et, malesuada 21 vitae justo. Integer
tincidunt, augue nec rutrum congue, enim ante sagittis nisl, eget pretium
elit augue at lectus.

Aenean faucibus leo eu augue tempus non lacinia sem tempus. Maecenas lacinia
magna ipsum, id varius massa. Aenean23 et purus lacus. Sed tellus massa,
tincidunt at viverra a, sagittis ut urna. Pellentesque varius nisl
consectetur eros condimentum suscipit. Sed at laoreet mauris. Pellentesque
viverra est vitae felis blandit et porta tortor ultrices.

Donec sit amet lobortis augue. Sed quis lorem quis enim laoreet porttitor.
Quisque eget cursus elit. Nulla felis nulla, auctor sed ultricies eu,
venenatis ac nisi. Donec massa 1 sem, mollis ac porta ac, sodales eu metus.

Suspendisse sed justo erat. Vestibulum arcu nisl, fringilla at lobortis sed,
ornare eu urna. Donec vitae massa vel odio rutrum fermentum. Integer at est
id lorem volutpat blandit quis a ipsum. Nulla at tellus venenatis urna
adipiscing 45 tincidunt. Curabitur mauris augue, pellentesque a laoreet ut,
placerat ut ante.

Mauris mattis adipiscing erat vitae dictum. Fusce in purus risus, nec
pretium tortor. Vestibulum ac scelerisque nibh. Aenean in arcu eros.
Praesent velit magna, mattis luctus molestie vel, laoreet sed nisl.

Pellentesque vulputate ornare eros, non suscipit sapien tincidunt eget.


Suspendisse potenti. Proin hendrerit mattis adipiscing. Etiam id massa vel
elit porta elementum pretium ac dolor. Nam ullamcorper cursus suscipit.

Morbi malesuada dolor magna, sit amet gravida mauris. Nunc ut volutpat
mauris. Sed ac nunc massa, eu tincidunt eros. Mauris ac nibh dui, at dapibus
elit. Quisque mi nisl, adipiscing ut pellentesque sit amet, posuere a justo.
Sed accumsan pulvinar ornare. Suspendisse potenti.

Lorem ipsum dolor sit amet, 2009 consectetur adipiscing elit. Aenean nibh
risus, dignissim ut hendrerit non, tincidunt et mi. Aliquam a justo vel
purus convallis pulvinar a quis orci.

Figura 1. Ejemplo Documento Texto.

4
Menú de usuario

El programa descrito deberá soportar las siguientes opciones, organizadas en los siguientes
menús: menú principal, menú estadísticas, menú elementos.

Menú Principal

1. Leer Fichero de Texto


a. El programa pedirá que se introduzca una ruta a un fichero de texto válido
según el formato especificado anteriormente.
b. El fichero indicado en el paso anterior será leído por el programa y basándose
en el contenido de éste se construirá un conjunto de objetos que lo describa.
2. Abrir Descripción de Fichero
a. El programa solicitará una ruta (carpeta), donde se encontrarán los ficheros
que almacenan las estadísticas del fichero.
b. Ir a Menú Estadísticas.
3. Guardar Descripción de fichero
a. Se solicitará una ruta (carpeta), donde se almacenará la descripción del fichero
leído a partir de la opción 1 o 2.
4. Salir
a. Sale del programa.

Menú Estadísticas

1. Mostrar Estadísticas Generales


a. Muestra una pantalla con las estadísticas generales del documento (Figura 3).
b. Al presionar una tecla vuelve al menú estadísticas.
2. Mostrar Estadísticas por Página.
a. El sistema solicita la introducción de un número de página válido.
b. Muestra una pantalla con las estadísticas generales de la página seleccionada
anteriormente (Figura 3).
c. Al presionar una tecla vuelve al menú estadísticas.
3. Mostrar Estadísticas por Párrafo.
a. El sistema solicita la introducción de un número de párrafo válido.
b. Muestra una pantalla con las estadísticas generales del párrafo seleccionado
anteriormente (Figura 4).
c. Al presionar una tecla vuelve al menú estadísticas.
4. Mostrar Estadísticas por Frase
a. El sistema solicita la introducción de un número de frase válido
b. Muestra una pantalla con las estadísticas generales de la frase seleccionada
anteriormente (Figura 5).
c. Al presionar una tecla vuelve al menú estadísticas.

5
5. Mostrar Elementos Simples:
a. El sistema muestra un resumen de los elementos simples que aparecen en el
documento junto con el número de ocurrencias de éste (Figura 6).
6. Ir a Menú Elementos
7. Volver
a. Vuelve al Menú Principal.

Nombre Documento:

Páginas Totales:

Párrafos Totales:

Frases Totales:

Palabras Totales:

Caracteres Totales:

Letras Totales:

Consonantes Totales:

Vocales Totales:

Números Totales:

Símbolos Totales:

Figura 2. Salida Pantalla Estadísticas Generales.

Nombre Documento:

Identificador Página:

Posición Inicio:

Posición Fin:

Párrafos Totales:

Frases Totales:

Palabras Totales:

Caracteres Totales:

Letras Totales:

Consonantes Totales:

Vocales Totales:

Números Totales:

Símbolos Totales:

Figura 3. Salida Pantalla Estadísticas Página.

6
Nombre Documento:

Identificador Párrafo:

Posición Inicio:

Posición Fin:

Frases Totales:

Palabras Totales:

Caracteres Totales:

Letras Totales:

Consonantes Totales:

Vocales Totales:

Números Totales:

Símbolos Totales:

Figura 4. Salida pantalla Estadísticas Párrafo.

Nombre Documento:

Identificador Frase:

Posición Inicio:

Posición Fin:

Palabras Totales:

Caracteres Totales:

Letras Totales:

Consonantes Totales:

Vocales Totales:

Números Totales:

Símbolos Totales:

Figura 5. Salida Pantalla Estadísticas Frase.

7
A: 25

B: 12

C: 65

1: 34

,: 3

Figura 6. Estadísticas Elementos Simples

Menú Elementos

1. Mostrar Documento
a. El sistema mostrará el documento en pantalla.
b. Después de presionar una tecla Vuelve al Menú Elementos.
2. Búsqueda
a. El sistema solicitará una lista de opciones de la cuál el usuario deberá
seleccionar uno de los siguientes elementos:
i. Frase
ii. Párrafo
iii. Página
iv. Documento
b. Dependiendo de la opción seleccionada en el paso anterior, el sistema deberá
mostrar al usuario el conjunto de elementos disponibles, para que seleccione
uno de ellos por su identificador.
c. El usuario introducirá un elemento de los siguientes: vocal, consonante,
número, símbolo o palabra. En la ejecución de búsquedas no se tendrá en
cuenta la distinción entre mayúsculas y minúsculas.
d. El sistema mostrará el número de ocurrencias del elemento seleccionado en el
paso c, dentro del elemento seleccionado en el paso a.
e. Después de presionar una tecla vuelve al Menú Elementos.

8
3. Sustituir
a. El sistema solicitará una lista de opciones de la cuál el usuario deberá
seleccionar uno de los siguientes elementos:
i. Frase
ii. Párrafo
iii. Página
iv. Documento
b. El usuario deberá introducir dos elementos básicos.
c. El sistema sustituirá el primer elemento por el segundo (paso b) en cada una
de las apariciones dentro del elemento compuesto seleccionado en el paso a.
d. Se muestra por pantalla el elemento seleccionado en el paso a, de forma que
se observe la sustitución realizada.
e. Después de presionar una tecla vuelve al Menú Elementos.
4. Volver
a. El sistema volverá al Menú Estadísticas.

Fases de desarrollo

El desarrollo de la práctica se divide en las siguientes fases que deberán realizarse de forma
incremental, es fundamental justificar de forma clara las distintas decisiones de diseño
elegidas al finalizar de cada fase.

1. Realizar el modelo orientado a objetos para los elementos simples.


2. Extender el modelo resultante de la fase 1 para incluir el resto de elementos
compuestos.
3. Diseño y desarrollo de las clases necesarias para leer el documento de entrada y la
construcción de los objetos que representen los distintos elementos detectados.
4. Diseño y desarrollo completo de la interfaz que permita serializar los objetos que
representen los distintos elementos.
5. Desarrollo de la interfaz de usuario que permita desarrollar las funcionalidades básicas
establecidas.

9
Normas de Entrega

La memoria constará de los siguientes apartados

Portada con título “Práctica de Lenguajes de Programación – Junio 2010”, centro


asociado en el que se entregó la práctica y los datos del alumno: Nombre, Apellidos,
dirección de correo electrónico y teléfono.
Informe justificando las diferentes decisiones de diseño elegidas en una de las fases
propuestas. Este informe deberá responder a preguntas del tipo:
o ¿Por qué un método específico es estático?
o ¿Por qué un método/atributo es privado/protegido/público?
o ¿Cuándo usar clases abstractas y cuando interfaces?
o ¿Qué relaciones existen entre las distintas clases?
Diagramas de clases, detallando claramente el tipo de relación entre ellas (uso,
agregación, herencia,...), por cada una de las fases realizadas.
Un texto en el que se describa cada clase, justificación de su existencia, métodos
públicos que contiene y funcionalidad que realizan.
Anexo con el código fuente de las clases implementadas.
CD: incluyendo todos los ficheros *.java y *.class, así como la memoria en formato
electrónico (preferiblemente html o pdf). El disquete estará libre de virus. No se
corregirá ni se tendrá en cuenta ninguna práctica que esté infectada por un virus.

Normas de realización de la práctica

1. La realización de la práctica es obligatoria. Sólo se evaluará el examen si la práctica ha


sido previamente aprobada.
2. Después de un trabajo inicial de diseño, las prácticas se hacen en los centros asociados
supervisadas por el tutor de la asignatura. El trabajo a realizar con la práctica tiene dos
partes: el diseño y la implementación. Cada alumno deberá llevar su diseño el día en
que se realicen las prácticas para que el tutor lo supervise y el alumno pueda realizar la
implementación.
3. La asistencia a las sesiones de prácticas es obligatoria sin excepción.
4. La práctica es individual. Las prácticas cuyo código coincida total o parcialmente con el
de otro alumno serán motivo de suspenso para todos los implicados (copiadores y
copiados), no pudiéndose examinar ninguno de ellos en el presente curso académico.
5. No habrá sesión extraordinaria de prácticas ya que la asignatura ya debe estar
implantada en todos los centros asociados. En caso de que algún alumno no tuviera
tutor, deberá dirigirse a cualquier otro centro asociado donde se imparta la asignatura.
6. El equipo docente tendrá en cuenta prácticas con notas altas para aquellos alumnos
cuyo examen esté cercano al aprobado.
7. El alumno debería dirigirse a su tutor para cualquier duda que tenga sobre su práctica
y solamente al equipo docente (por correo electrónico) en el caso de que su tutor no
pueda resolver su problema. En este caso pedimos al alumno que, además de sus

10
datos personales, nos envíe el nombre del centro asociado en el que está matriculado
y el de su tutor.
8. Evidentemente se pueden usar los foros para realizar consultas a los compañeros pero
nunca para intercambiar código.

Normas para los Tutores

Como se puede apreciar, el papel del tutor es fundamental en todos los aspectos de la práctica
tanto el planteamiento del problema, el diseño OO del programa, su desarrollo y su
depuración.

Tratándose de una asignatura obligatoria, cada alumno debería tener acceso a un tutor.

Los tutores deben seguir los siguientes pasos:

1. Hay novedades este curso con respecto al alta de tutores en la aplicación de prácticas.
En el entorno virtual, en "Contenidos" se ha añadido una nueva funcionalidad para los
tutores: "Apuntarse como tutor". Tiene como finalidad que los tutores se den de alta
en la aplicación de prácticas, introduciendo ellos mismos su código de usuario y
contraseña. Se tienen que dar de alta TODOS los tutores, ya que no se va a guardar
memoria de cursos anteriores
2. Indicar a los alumnos que deben darse de alta en la aplicación de calificaciones a
través del enlace correspondiente que encontrarán dentro del entorno virtual. El alta
consistirá en seleccionar centro y tutor e introducir su DNI.
3. Cada tutor establecerá unas fechas para realizar la entrega de la práctica.
4. Una vez terminada y entregada la práctica, el tutor tiene que evaluar el diseño OO del
programa y su funcionamiento, calificar la práctica e introducir las calificaciones en la
aplicación a los alumnos que previamente ya han introducido sus datos.
5. Emitir los listados de calificación por medio de la aplicación y enviarlos firmados y
sellados por el centro, antes del 2 de Junio, a la atención de:

Equipo Docente de Lenguajes de Programación

Dpto. Lenguajes y Sistemas Informáticos

ETS Ingeniería Informática, UNED

Juan del Rosal, 16

28040 Madrid

6. Comunicar la calificación a sus alumnos.

11
El papel de los Centros Asociados en las prácticas de asignaturas
obligatorias

Las prácticas son esenciales en las titulaciones de Informática porque, entre otras cosas,
permiten a los alumnos adquirir conocimientos importantes sobre los aspectos más aplicados
de ciertas asignaturas, lo cual resulta de gran relevancia e interés a la hora de acceder a un
puesto laboral relacionado con la Informática. Por ello, la asistencia a las sesiones de prácticas
es obligatoria, sin excepción, en las asignaturas que imparten los equipos docentes del
Departamento de Lenguajes y Sistemas Informáticos (LSI).

Para orientar y ayudar a los alumnos, así como para comprobar que realmente un alumno ha
realizado su práctica de forma satisfactoria, ésta se debe realizar en un Centro Asociado bajo la
supervisión de un tutor.

Un Centro Asociado que ha permitido a un alumno matricularse en una asignatura obligatoria


de una carrera de Informática debería ayudarle a encontrar una solución al problema de la
realización de las prácticas. Si se trata de una asignatura donde no se han matriculado muchos
alumnos, quizás el centro no cuente con recursos para proporcionar un tutor específicamente
para la asignatura. Si hay otro Centro Asociado muy cerca que dispone de tutor, quizás el
alumno pueda realizar la práctica allí pero si no es así, el Centro Asociado debería proporcionar
un tutor para supervisar y corregir las prácticas de sus alumnos. Lo más razonable sería que
fuera un tutor de otra asignatura de Informática en el mismo Centro el que hiciera la sesión de
prácticas para los alumnos de la asignatura en cuestión, y al final de la sesión evaluara los
trabajos de los alumnos, según las pautas marcadas por el equipo docente, haciendo llegar a
éste las calificaciones otorgadas.

De vez en cuando sucede que un alumno se pone en contacto con un equipo docente del
Departamento de LSI porque se ha matriculado en una asignatura obligatoria en un Centro
Asociado que no le proporciona un tutor para supervisar la práctica, ¡aunque le ha permitido
matricularse! Lo que quiere el alumno es que el equipo docente le proporcione una solución a
este problema, como por ejemplo, la posibilidad de asistir a unas sesiones extraordinarias de
prácticas en la Sede Central de la UNED en Madrid o la posibilidad de realizar la práctica por su
cuenta en casa, enviándola a continuación al equipo docente para su corrección. Sin embargo,
los equipos docentes de LSI no disponen de recursos para ninguna de estas dos alternativas.

12
Apéndice A.

Bibliografía y tutoriales de Java


La referencia más útil es el libro “Piensa en Java” (“Think in Java”) de Bruce Eckel, disponible
en varias editoriales. Hay una versión completa y gratuita en la red en
http://www.mindview.net/Books/TIJ.

En www.javahispano.org hay multitud de tutoriales en español.

En la web de BlueJ también hay mucha información interesante.

En el siguiente enlace se puede encontrar una copia de un curso de Java preparado por el tutor
del centro asociado de la UNED en Málaga: Sergio Gálvez Rojas:
http://www.lsi.uned.es/lp/CursoJava.pdf

Proceso de desarrollo incremental


En los siguientes enlaces se puede encontrar información básica sobre el proceso de desarrollo
incremental, estos pueden servir como pauta de cara al desarrollo de la práctica

http://es.wikipedia.org/wiki/Desarrollo_iterativo_y_creciente
http://dspace.icesi.edu.co/dspace/bitstream/item/399/1/rcastro_estructura-bas-
puds.pdf

Cursos de Java gratuitos de Sun Microsystems


(http://www.sun.com)

Para los alumnos matriculados, están disponibles Cursos gratuitos on-line ofrecidos por Sun
Microsystems (http://www.sun.com). Los cursos están en inglés y accesibles desde el portal de
entrada https://sailearningconnection.skillport.com/ donde os tenéis que registrar
(“Register”).

En el “Program Name” debéis seleccionar exactamente: SAI-Institution.

En el “Program ID” ponéis Hw54x9EN

Y el resto de la información de registro la rellenáis con vuestros datos, etc.

13

Das könnte Ihnen auch gefallen